/
usr
/
include
/
boost
/
math
/
special_functions
/
detail
/
/usr/include/boost/math/special_functions/detail
mkdir
upload
Name
Size
Mode
Actions
airy_ai_bi_zero.hpp
6294
0644
edit
dl
rm
bernoulli_details.hpp
26513
0644
edit
dl
rm
bessel_derivatives_linear.hpp
3378
0644
edit
dl
rm
bessel_i0.hpp
28135
0644
edit
dl
rm
bessel_i1.hpp
29933
0644
edit
dl
rm
bessel_ik.hpp
13917
0644
edit
dl
rm
bessel_j0.hpp
8585
0644
edit
dl
rm
bessel_j1.hpp
8951
0644
edit
dl
rm
bessel_jn.hpp
3909
0644
edit
dl
rm
bessel_jy.hpp
21868
0644
edit
dl
rm
bessel_jy_asym.hpp
6488
0644
edit
dl
rm
bessel_jy_derivatives_asym.hpp
4649
0644
edit
dl
rm
bessel_jy_derivatives_series.hpp
6944
0644
edit
dl
rm
bessel_jy_series.hpp
7241
0644
edit
dl
rm
bessel_jy_zero.hpp
24967
0644
edit
dl
rm
bessel_k0.hpp
22178
0644
edit
dl
rm
bessel_k1.hpp
25465
0644
edit
dl
rm
bessel_kn.hpp
2249
0644
edit
dl
rm
bessel_y0.hpp
10805
0644
edit
dl
rm
bessel_y1.hpp
9458
0644
edit
dl
rm
bessel_yn.hpp
3118
0644
edit
dl
rm
daubechies_scaling_integer_grid.hpp
233788
0644
edit
dl
rm
erf_inv.hpp
22738
0644
edit
dl
rm
fp_traits.hpp
17193
0644
edit
dl
rm
gamma_inva.hpp
7066
0644
edit
dl
rm
hypergeometric_0F1_bessel.hpp
1543
0644
edit
dl
rm
hypergeometric_1F1_addition_theorems_on_z.hpp
12980
0644
edit
dl
rm
hypergeometric_1F1_bessel.hpp
32781
0644
edit
dl
rm
hypergeometric_1F1_by_ratios.hpp
33540
0644
edit
dl
rm
hypergeometric_1F1_cf.hpp
1830
0644
edit
dl
rm
hypergeometric_1F1_large_a.hpp
1159
0644
edit
dl
rm
hypergeometric_1F1_large_abz.hpp
22101
0644
edit
dl
rm
hypergeometric_1F1_negative_b_regions.hpp
33376
0644
edit
dl
rm
hypergeometric_1F1_recurrence.hpp
17295
0644
edit
dl
rm
hypergeometric_1F1_scaled_series.hpp
2183
0644
edit
dl
rm
hypergeometric_1F1_small_a_negative_b_by_ratio.hpp
3893
0644
edit
dl
rm
hypergeometric_asym.hpp
5902
0644
edit
dl
rm
hypergeometric_cf.hpp
5826
0644
edit
dl
rm
hypergeometric_pade.hpp
3837
0644
edit
dl
rm
hypergeometric_pFq_checked_series.hpp
27943
0644
edit
dl
rm
hypergeometric_rational.hpp
5068
0644
edit
dl
rm
hypergeometric_separated_series.hpp
1449
0644
edit
dl
rm
hypergeometric_series.hpp
14422
0644
edit
dl
rm
ibeta_inverse.hpp
34072
0644
edit
dl
rm
ibeta_inv_ab.hpp
10363
0644
edit
dl
rm
iconv.hpp
1009
0644
edit
dl
rm
igamma_inverse.hpp
17414
0644
edit
dl
rm
igamma_large.hpp
39534
0644
edit
dl
rm
lambert_w_lookup_table.ipp
15601
0644
edit
dl
rm
lanczos_sse2.hpp
8916
0644
edit
dl
rm
lgamma_small.hpp
23295
0644
edit
dl
rm
polygamma.hpp
22596
0644
edit
dl
rm
round_fwd.hpp
2794
0644
edit
dl
rm
t_distribution_inv.hpp
17735
0644
edit
dl
rm
unchecked_bernoulli.hpp
76437
0644
edit
dl
rm
unchecked_factorial.hpp
46290
0644
edit
dl
rm
Edit:
/usr/include/boost/math/special_functions/detail/hypergeometric_pade.hpp
(3837B)
/////////////////////////////////////////////////////////////////////////////// // Copyright 2014 Anton Bikineev // Copyright 2014 Christopher Kormanyos // Copyright 2014 John Maddock // Copyright 2014 Paul 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) // #ifndef BOOST_MATH_HYPERGEOMETRIC_PADE_HPP #define BOOST_MATH_HYPERGEOMETRIC_PADE_HPP namespace boost{ namespace math{ namespace detail{ // Luke: C ---------- SUBROUTINE R1F1P(CP, Z, A, B, N) ---------- // Luke: C ----- PADE APPROXIMATION OF 1F1( 1 ; CP ; -Z ) ------- template <class T, class Policy> inline T hypergeometric_1F1_pade(const T& cp, const T& zp, const Policy& ) { BOOST_MATH_STD_USING static const T one = T(1); // Luke: C ------------- INITIALIZATION ------------- const T z = -zp; const T zz = z * z; T b0 = one; T a0 = one; T xi1 = one; T ct1 = cp + one; T cp1 = cp - one; T b1 = one + (z / ct1); T a1 = b1 - (z / cp); const unsigned max_iterations = boost::math::policies::get_max_series_iterations<Policy>(); T b2 = T(0), a2 = T(0); T result = T(0), prev_result; for (unsigned k = 1; k < max_iterations; ++k) { // Luke: C ----- CALCULATION OF THE MULTIPLIERS ----- // Luke: C ----------- FOR THE RECURSION ------------ const T ct2 = ct1 * ct1; const T g1 = one + ((cp1 / (ct2 + ct1 + ct1)) * z); const T g2 = ((xi1 / (ct2 - one)) * ((xi1 + cp1) / ct2)) * zz; // Luke: C ------- THE RECURRENCE RELATIONS --------- // Luke: C ------------ ARE AS FOLLOWS -------------- b2 = (g1 * b1) + (g2 * b0); a2 = (g1 * a1) + (g2 * a0); prev_result = result; result = a2 / b2; // condition for interruption if ((fabs(result) * boost::math::tools::epsilon<T>()) > fabs(result - prev_result)) break; b0 = b1; b1 = b2; a0 = a1; a1 = a2; ct1 += 2; xi1 += 1; } return a2 / b2; } // Luke: C -------- SUBROUTINE R2F1P(BP, CP, Z, A, B, N) -------- // Luke: C ---- PADE APPROXIMATION OF 2F1( 1 , BP; CP ; -Z ) ---- template <class T, class Policy> inline T hypergeometric_2F1_pade(const T& bp, const T& cp, const T& zp, const Policy& pol) { BOOST_MATH_STD_USING static const T one = T(1); // Luke: C ---------- INITIALIZATION ----------- const T z = -zp; const T zz = z * z; T b0 = one; T a0 = one; T xi1 = one; T ct1 = cp; const T b1c1 = (cp - one) * (bp - one); T b1 = one + ((z / (cp + one)) * (bp + one)); T a1 = b1 - ((bp / cp) * z); const unsigned max_iterations = boost::math::policies::get_max_series_iterations<Policy>(); T b2 = T(0), a2 = T(0); T result = T(0), prev_result = a1 / b1; for (unsigned k = 1; k < max_iterations; ++k) { // Luke: C ----- CALCULATION OF THE MULTIPLIERS ----- // Luke: C ----------- FOR THE RECURSION ------------ const T ct2 = ct1 + xi1; const T ct3 = ct2 * ct2; const T g2 = (((((ct1 / ct3) * (bp - ct1)) / (ct3 - one)) * xi1) * (bp + xi1)) * zz; ++xi1; const T g1 = one + (((((xi1 + xi1) * ct1) + b1c1) / (ct3 + ct2 + ct2)) * z); // Luke: C ------- THE RECURRENCE RELATIONS --------- // Luke: C ------------ ARE AS FOLLOWS -------------- b2 = (g1 * b1) + (g2 * b0); a2 = (g1 * a1) + (g2 * a0); prev_result = result; result = a2 / b2; // condition for interruption if ((fabs(result) * boost::math::tools::epsilon<T>()) > fabs(result - prev_result)) break; b0 = b1; b1 = b2; a0 = a1; a1 = a2; ++ct1; } return a2 / b2; } } } } // namespaces #endif // BOOST_MATH_HYPERGEOMETRIC_PADE_HPP
Save
cmd:
run