Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-11-07 10:15:04

0001 /*
0002     Copyright (C) 2014 Fredrik Johansson
0003 
0004     This file is part of FLINT.
0005 
0006     FLINT is free software: you can redistribute it and/or modify it under
0007     the terms of the GNU Lesser General Public License (LGPL) as published
0008     by the Free Software Foundation; either version 3 of the License, or
0009     (at your option) any later version.  See <https://www.gnu.org/licenses/>.
0010 */
0011 
0012 #ifndef ACB_HYPGEOM_H
0013 #define ACB_HYPGEOM_H
0014 
0015 #include "acb_types.h"
0016 
0017 #ifdef __cplusplus
0018 extern "C" {
0019 #endif
0020 
0021 void acb_hypgeom_rising_ui_forward(acb_t res, const acb_t x, ulong n, slong prec);
0022 void acb_hypgeom_rising_ui_rs(acb_t res, const acb_t x, ulong n, ulong m, slong prec);
0023 void acb_hypgeom_rising_ui_bs(acb_t res, const acb_t x, ulong n, slong prec);
0024 void acb_hypgeom_rising_ui_rec(acb_t res, const acb_t x, ulong n, slong prec);
0025 void acb_hypgeom_rising_ui(acb_t y, const acb_t x, ulong n, slong prec);
0026 void acb_hypgeom_rising(acb_t y, const acb_t x, const acb_t n, slong prec);
0027 
0028 void acb_hypgeom_rising_ui_jet_powsum(acb_ptr res, const acb_t x, ulong n, slong len, slong prec);
0029 void acb_hypgeom_rising_ui_jet_rs(acb_ptr res, const acb_t x, ulong n, ulong m, slong len, slong prec);
0030 void acb_hypgeom_rising_ui_jet_bs(acb_ptr res, const acb_t x, ulong n, slong len, slong prec);
0031 void acb_hypgeom_rising_ui_jet(acb_ptr res, const acb_t x, ulong n, slong len, slong prec);
0032 
0033 void acb_hypgeom_log_rising_ui_jet(acb_ptr res, const acb_t z, ulong r, slong len, slong prec);
0034 void acb_hypgeom_log_rising_ui(acb_ptr res, const acb_t z, ulong r, slong prec);
0035 
0036 void acb_hypgeom_gamma_stirling_sum_horner(acb_t s, const acb_t z, slong N, slong prec);
0037 void acb_hypgeom_gamma_stirling_sum_improved(acb_t s, const acb_t z, slong N, slong K, slong prec);
0038 void acb_hypgeom_gamma_stirling(acb_t res, const acb_t x, int reciprocal, slong prec);
0039 int acb_hypgeom_gamma_taylor(acb_t res, const acb_t x, int reciprocal, slong prec);
0040 void acb_hypgeom_gamma(acb_t y, const acb_t x, slong prec);
0041 void acb_hypgeom_rgamma(acb_t y, const acb_t x, slong prec);
0042 
0043 void acb_hypgeom_lgamma(acb_t y, const acb_t x, slong prec);
0044 
0045 void acb_hypgeom_pfq_bound_factor(mag_t C,
0046     acb_srcptr a, slong p, acb_srcptr b, slong q, const acb_t z, ulong n);
0047 
0048 slong acb_hypgeom_pfq_choose_n(acb_srcptr a, slong p,
0049                          acb_srcptr b, slong q, const acb_t z, slong prec);
0050 
0051 void acb_hypgeom_pfq_sum_forward(acb_t s, acb_t t, acb_srcptr a, slong p, acb_srcptr b, slong q,
0052     const acb_t z, slong n, slong prec);
0053 
0054 void acb_hypgeom_pfq_sum_rs(acb_t s, acb_t t, acb_srcptr a, slong p, acb_srcptr b, slong q,
0055     const acb_t z, slong n, slong prec);
0056 
0057 void acb_hypgeom_pfq_sum_bs(acb_t s, acb_t t, acb_srcptr a, slong p, acb_srcptr b, slong q,
0058     const acb_t z, slong n, slong prec);
0059 
0060 void acb_hypgeom_pfq_sum_fme(acb_t s, acb_t t, acb_srcptr a, slong p, acb_srcptr b, slong q,
0061     const acb_t z, slong n, slong prec);
0062 
0063 void acb_hypgeom_pfq_sum(acb_t s, acb_t t, acb_srcptr a, slong p, acb_srcptr b, slong q,
0064     const acb_t z, slong n, slong prec);
0065 
0066 void acb_hypgeom_pfq_sum_bs_invz(acb_t s, acb_t t,
0067     acb_srcptr a, slong p, acb_srcptr b, slong q, const acb_t z, slong n, slong prec);
0068 
0069 void acb_hypgeom_pfq_sum_invz(acb_t s, acb_t t, acb_srcptr a, slong p,
0070     acb_srcptr b, slong q, const acb_t z, const acb_t zinv, slong n, slong prec);
0071 
0072 void acb_hypgeom_pfq_direct(acb_t res, acb_srcptr a, slong p, acb_srcptr b, slong q,
0073     const acb_t z, slong n, slong prec);
0074 
0075 slong acb_hypgeom_pfq_series_choose_n(const acb_poly_struct * a, slong p,
0076                                 const acb_poly_struct * b, slong q,
0077                                 const acb_poly_t z, slong len, slong prec);
0078 
0079 void
0080 acb_hypgeom_pfq_series_sum_forward(acb_poly_t s, acb_poly_t t,
0081     const acb_poly_struct * a, slong p,
0082     const acb_poly_struct * b, slong q,
0083     const acb_poly_t z, int regularized,
0084     slong n, slong len, slong prec);
0085 
0086 void
0087 acb_hypgeom_pfq_series_sum_bs(acb_poly_t s, acb_poly_t t,
0088     const acb_poly_struct * a, slong p,
0089     const acb_poly_struct * b, slong q,
0090     const acb_poly_t z, int regularized,
0091     slong n, slong len, slong prec);
0092 
0093 void
0094 acb_hypgeom_pfq_series_sum_rs(acb_poly_t s, acb_poly_t t,
0095     const acb_poly_struct * a, slong p,
0096     const acb_poly_struct * b, slong q,
0097     const acb_poly_t z, int regularized,
0098     slong n, slong len, slong prec);
0099 
0100 void
0101 acb_hypgeom_pfq_series_sum(acb_poly_t s, acb_poly_t t,
0102     const acb_poly_struct * a, slong p,
0103     const acb_poly_struct * b, slong q,
0104     const acb_poly_t z, int regularized,
0105     slong n, slong len, slong prec);
0106 
0107 void acb_hypgeom_pfq_series_direct(acb_poly_t res,
0108     const acb_poly_struct * a, slong p,
0109     const acb_poly_struct * b, slong q,
0110     const acb_poly_t z, int regularized,
0111     slong n, slong len, slong prec);
0112 
0113 void acb_hypgeom_pfq(acb_t res, acb_srcptr a, slong p, acb_srcptr b, slong q,
0114     const acb_t z, int regularized, slong prec);
0115 
0116 void acb_hypgeom_u_asymp(acb_t res, const acb_t a, const acb_t b,
0117     const acb_t z, slong n, slong prec);
0118 
0119 void acb_hypgeom_u_1f1_series(acb_poly_t res,
0120     const acb_poly_t a, const acb_poly_t b, const acb_poly_t z,
0121     slong len, slong prec);
0122 
0123 void acb_hypgeom_u_1f1(acb_t res, const acb_t a, const acb_t b, const acb_t z, slong prec);
0124 void acb_hypgeom_u(acb_t res, const acb_t a, const acb_t b, const acb_t z, slong prec);
0125 
0126 int acb_hypgeom_u_use_asymp(const acb_t z, slong prec);
0127 
0128 void acb_hypgeom_m_asymp(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, slong prec);
0129 void acb_hypgeom_m_1f1(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, slong prec);
0130 void acb_hypgeom_m(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, slong prec);
0131 void acb_hypgeom_1f1(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, slong prec);
0132 
0133 void acb_hypgeom_bessel_j_deriv_bound(mag_t res, const acb_t nu, const acb_t z, ulong d);
0134 void acb_hypgeom_bessel_j_0f1(acb_t res, const acb_t nu, const acb_t z, slong prec);
0135 void acb_hypgeom_bessel_j_asymp(acb_t res, const acb_t nu, const acb_t z, slong prec);
0136 void acb_hypgeom_bessel_j(acb_t res, const acb_t nu, const acb_t z, slong prec);
0137 void _acb_hypgeom_bessel_j_series(acb_ptr res, const acb_t nu, acb_srcptr z, slong zlen, slong len, slong prec);
0138 void acb_hypgeom_bessel_j_series(acb_poly_t res, const acb_t nu, const acb_poly_t z, slong len, slong prec);
0139 
0140 void acb_hypgeom_bessel_i_0f1(acb_t res, const acb_t nu, const acb_t z, int scaled, slong prec);
0141 void acb_hypgeom_bessel_i_asymp(acb_t res, const acb_t nu, const acb_t z, int scaled, slong prec);
0142 void acb_hypgeom_bessel_i(acb_t res, const acb_t nu, const acb_t z, slong prec);
0143 void acb_hypgeom_bessel_i_scaled(acb_t res, const acb_t nu, const acb_t z, slong prec);
0144 
0145 void acb_hypgeom_bessel_k_0f1(acb_t res, const acb_t nu, const acb_t z, int scaled, slong prec);
0146 void acb_hypgeom_bessel_k_0f1_series(acb_poly_t res, const acb_poly_t n, const acb_poly_t z, int scaled, slong len, slong prec);
0147 void acb_hypgeom_bessel_k_asymp(acb_t res, const acb_t nu, const acb_t z, int scaled, slong prec);
0148 void acb_hypgeom_bessel_k(acb_t res, const acb_t nu, const acb_t z, slong prec);
0149 void acb_hypgeom_bessel_k_scaled(acb_t res, const acb_t nu, const acb_t z, slong prec);
0150 
0151 void acb_hypgeom_bessel_y(acb_t res, const acb_t nu, const acb_t z, slong prec);
0152 void acb_hypgeom_bessel_jy(acb_t res1, acb_t res2, const acb_t nu, const acb_t z, slong prec);
0153 
0154 void acb_hypgeom_0f1_asymp(acb_t res, const acb_t a, const acb_t z, int regularized, slong prec);
0155 void acb_hypgeom_0f1_direct(acb_t res, const acb_t a, const acb_t z, int regularized, slong prec);
0156 void acb_hypgeom_0f1(acb_t res, const acb_t a, const acb_t z, int regularized, slong prec);
0157 
0158 void acb_hypgeom_airy_bound(mag_t ai, mag_t aip, mag_t bi, mag_t bip, const acb_t z);
0159 void acb_hypgeom_airy_asymp(acb_t ai, acb_t aip, acb_t bi, acb_t bip, const acb_t z, slong n, slong prec);
0160 void acb_hypgeom_airy_direct(acb_t ai, acb_t aip, acb_t bi, acb_t bip, const acb_t z, slong n, slong prec);
0161 void acb_hypgeom_airy(acb_t ai, acb_t aip, acb_t bi, acb_t bip, const acb_t z, slong prec);
0162 void acb_hypgeom_airy_jet(acb_ptr ai, acb_ptr bi, const acb_t z, slong len, slong prec);
0163 void _acb_hypgeom_airy_series(acb_ptr ai, acb_ptr ai_prime, acb_ptr bi, acb_ptr bi_prime, acb_srcptr z, slong zlen, slong len, slong prec);
0164 void acb_hypgeom_airy_series(acb_poly_t ai, acb_poly_t ai_prime, acb_poly_t bi, acb_poly_t bi_prime, const acb_poly_t z, slong len, slong prec);
0165 
0166 void acb_hypgeom_coulomb(acb_t F, acb_t G, acb_t Hpos, acb_t Hneg, const acb_t l, const acb_t eta, const acb_t z, slong prec);
0167 void acb_hypgeom_coulomb_jet(acb_ptr F, acb_ptr G, acb_ptr Hpos, acb_ptr Hneg, const acb_t l, const acb_t eta, const acb_t z, slong len, slong prec);
0168 void _acb_hypgeom_coulomb_series(acb_ptr F, acb_ptr G, acb_ptr Hpos, acb_ptr Hneg, const acb_t l, const acb_t eta, acb_srcptr z, slong zlen, slong len, slong prec);
0169 void acb_hypgeom_coulomb_series(acb_poly_t F, acb_poly_t G, acb_poly_t Hpos, acb_poly_t Hneg, const acb_t l, const acb_t eta, const acb_poly_t z, slong len, slong prec);
0170 
0171 void acb_hypgeom_gamma_upper_asymp(acb_t res, const acb_t s, const acb_t z, int modified, slong prec);
0172 void acb_hypgeom_gamma_upper_1f1a(acb_t res, const acb_t s, const acb_t z, int modified, slong prec);
0173 void acb_hypgeom_gamma_upper_1f1b(acb_t res, const acb_t s, const acb_t z, int modified, slong prec);
0174 void acb_hypgeom_gamma_upper_singular(acb_t res, slong s, const acb_t z, int modified, slong prec);
0175 void acb_hypgeom_gamma_upper(acb_t res, const acb_t s, const acb_t z, int modified, slong prec);
0176 
0177 void _acb_hypgeom_gamma_upper_series(acb_ptr g, const acb_t s, acb_srcptr h, slong hlen, int regularized, slong n, slong prec);
0178 void acb_hypgeom_gamma_upper_series(acb_poly_t g, const acb_t s, const acb_poly_t h, int regularized, slong n, slong prec);
0179 
0180 void acb_hypgeom_gamma_lower(acb_t res, const acb_t s, const acb_t z, int modified, slong prec);
0181 
0182 void _acb_hypgeom_gamma_lower_series(acb_ptr g, const acb_t s, acb_srcptr h, slong hlen, int regularized, slong n, slong prec);
0183 void acb_hypgeom_gamma_lower_series(acb_poly_t g, const acb_t s, const acb_poly_t h, int regularized, slong n, slong prec);
0184 
0185 void acb_hypgeom_beta_lower(acb_t res, const acb_t a, const acb_t b, const acb_t z, int regularized, slong prec);
0186 void _acb_hypgeom_beta_lower_series(acb_ptr res, const acb_t a, const acb_t b, acb_srcptr z, slong zlen, int regularized, slong len, slong prec);
0187 void acb_hypgeom_beta_lower_series(acb_poly_t res, const acb_t a, const acb_t b, const acb_poly_t z, int regularized, slong len, slong prec);
0188 
0189 void acb_hypgeom_expint(acb_t res, const acb_t s, const acb_t z, slong prec);
0190 
0191 void acb_hypgeom_erf_propagated_error(mag_t re, mag_t im, const acb_t z);
0192 void acb_hypgeom_erf_1f1a(acb_t res, const acb_t z, slong prec);
0193 void acb_hypgeom_erf_1f1b(acb_t res, const acb_t z, slong prec);
0194 void acb_hypgeom_erf_asymp(acb_t res, const acb_t z, int complementary, slong prec, slong prec2);
0195 void acb_hypgeom_erf(acb_t res, const acb_t z, slong prec);
0196 void _acb_hypgeom_erf_series(acb_ptr g, acb_srcptr h, slong hlen, slong len, slong prec);
0197 void acb_hypgeom_erf_series(acb_poly_t g, const acb_poly_t h, slong len, slong prec);
0198 
0199 void acb_hypgeom_erfc(acb_t res, const acb_t z, slong prec);
0200 void _acb_hypgeom_erfc_series(acb_ptr g, acb_srcptr h, slong hlen, slong len, slong prec);
0201 void acb_hypgeom_erfc_series(acb_poly_t g, const acb_poly_t h, slong len, slong prec);
0202 
0203 void acb_hypgeom_erfi(acb_t res, const acb_t z, slong prec);
0204 void _acb_hypgeom_erfi_series(acb_ptr g, acb_srcptr h, slong hlen, slong len, slong prec);
0205 void acb_hypgeom_erfi_series(acb_poly_t g, const acb_poly_t h, slong len, slong prec);
0206 
0207 void acb_hypgeom_fresnel(acb_t res1, acb_t res2, const acb_t z, int normalized, slong prec);
0208 void _acb_hypgeom_fresnel_series(acb_ptr s, acb_ptr c, acb_srcptr h, slong hlen, int normalized, slong len, slong prec);
0209 void acb_hypgeom_fresnel_series(acb_poly_t s, acb_poly_t c, const acb_poly_t h, int normalized, slong len, slong prec);
0210 
0211 void acb_hypgeom_ei_asymp(acb_t res, const acb_t z, slong prec);
0212 void acb_hypgeom_ei_2f2(acb_t res, const acb_t z, slong prec);
0213 void acb_hypgeom_ei(acb_t res, const acb_t z, slong prec);
0214 void _acb_hypgeom_ei_series(acb_ptr g, acb_srcptr h, slong hlen, slong len, slong prec);
0215 void acb_hypgeom_ei_series(acb_poly_t g, const acb_poly_t h, slong len, slong prec);
0216 
0217 void acb_hypgeom_si_asymp(acb_t res, const acb_t z, slong prec);
0218 void acb_hypgeom_si_1f2(acb_t res, const acb_t z, slong prec);
0219 void acb_hypgeom_si(acb_t res, const acb_t z, slong prec);
0220 void _acb_hypgeom_si_series(acb_ptr g, acb_srcptr h, slong hlen, slong len, slong prec);
0221 void acb_hypgeom_si_series(acb_poly_t g, const acb_poly_t h, slong len, slong prec);
0222 
0223 void acb_hypgeom_ci_asymp(acb_t res, const acb_t z, slong prec);
0224 void acb_hypgeom_ci_2f3(acb_t res, const acb_t z, slong prec);
0225 void acb_hypgeom_ci(acb_t res, const acb_t z, slong prec);
0226 void _acb_hypgeom_ci_series(acb_ptr g, acb_srcptr h, slong hlen, slong len, slong prec);
0227 void acb_hypgeom_ci_series(acb_poly_t g, const acb_poly_t h, slong len, slong prec);
0228 
0229 void acb_hypgeom_shi(acb_t res, const acb_t z, slong prec);
0230 void _acb_hypgeom_shi_series(acb_ptr g, acb_srcptr h, slong hlen, slong len, slong prec);
0231 void acb_hypgeom_shi_series(acb_poly_t g, const acb_poly_t h, slong len, slong prec);
0232 
0233 void acb_hypgeom_chi_asymp(acb_t res, const acb_t z, slong prec);
0234 void acb_hypgeom_chi_2f3(acb_t res, const acb_t z, slong prec);
0235 void acb_hypgeom_chi(acb_t res, const acb_t z, slong prec);
0236 void _acb_hypgeom_chi_series(acb_ptr g, acb_srcptr h, slong hlen, slong len, slong prec);
0237 void acb_hypgeom_chi_series(acb_poly_t g, const acb_poly_t h, slong len, slong prec);
0238 
0239 void acb_hypgeom_li(acb_t res, const acb_t z, int offset, slong prec);
0240 void _acb_hypgeom_li_series(acb_ptr g, acb_srcptr h, slong hlen, int offset, slong len, slong prec);
0241 void acb_hypgeom_li_series(acb_poly_t g, const acb_poly_t h, int offset, slong len, slong prec);
0242 
0243 void acb_hypgeom_2f1_continuation(acb_t res0, acb_t res1,
0244     const acb_t a, const acb_t b, const acb_t c, const acb_t z0,
0245     const acb_t z1, const acb_t f0, const acb_t f1, slong prec);
0246 
0247 void acb_hypgeom_2f1_series_direct(acb_poly_t res, const acb_poly_t a, const acb_poly_t b,
0248     const acb_poly_t c, const acb_poly_t z, int regularized, slong len, slong prec);
0249 void acb_hypgeom_2f1_direct(acb_t res, const acb_t a, const acb_t b, const acb_t c, const acb_t z, int regularized, slong prec);
0250 
0251 void acb_hypgeom_2f1_transform(acb_t res, const acb_t a, const acb_t b,
0252     const acb_t c, const acb_t z, int regularized, int which, slong prec);
0253 
0254 void acb_hypgeom_2f1_transform_limit(acb_t res, const acb_t a, const acb_t b,
0255     const acb_t c, const acb_t z, int regularized, int which, slong prec);
0256 
0257 void acb_hypgeom_2f1_corner(acb_t res, const acb_t a, const acb_t b, const acb_t c, const acb_t z, int regularized, slong prec);
0258 
0259 int acb_hypgeom_2f1_choose(const acb_t z);
0260 
0261 void acb_hypgeom_2f1(acb_t res, const acb_t a, const acb_t b, const acb_t c, const acb_t z, int regularized, slong prec);
0262 
0263 #define ACB_HYPGEOM_2F1_REGULARIZED 1
0264 #define ACB_HYPGEOM_2F1_AB 2   /* a-b integer */
0265 #define ACB_HYPGEOM_2F1_AC 4   /* a-c integer */
0266 #define ACB_HYPGEOM_2F1_BC 8   /* b-c integer */
0267 #define ACB_HYPGEOM_2F1_ABC 16  /* a+b-c integer */
0268 
0269 void acb_hypgeom_legendre_p_uiui_rec(acb_t res, ulong n, ulong m, const acb_t z, slong prec);
0270 void acb_hypgeom_legendre_p(acb_t res, const acb_t n, const acb_t m, const acb_t z, int type, slong prec);
0271 void acb_hypgeom_legendre_q(acb_t res, const acb_t n, const acb_t m, const acb_t z, int type, slong prec);
0272 void acb_hypgeom_jacobi_p(acb_t res, const acb_t n, const acb_t a, const acb_t b, const acb_t z, slong prec);
0273 void acb_hypgeom_gegenbauer_c(acb_t res, const acb_t n, const acb_t m, const acb_t z, slong prec);
0274 void acb_hypgeom_laguerre_l(acb_t res, const acb_t n, const acb_t m, const acb_t z, slong prec);
0275 void acb_hypgeom_hermite_h(acb_t res, const acb_t n, const acb_t z, slong prec);
0276 void acb_hypgeom_chebyshev_t(acb_t res, const acb_t n, const acb_t z, slong prec);
0277 void acb_hypgeom_chebyshev_u(acb_t res, const acb_t n, const acb_t z, slong prec);
0278 void acb_hypgeom_spherical_y(acb_t res, slong n, slong m, const acb_t theta, const acb_t phi, slong prec);
0279 
0280 void acb_hypgeom_dilog_bernoulli(acb_t res, const acb_t z, slong prec);
0281 void acb_hypgeom_dilog_continuation(acb_t res, const acb_t a, const acb_t z, slong prec);
0282 void acb_hypgeom_dilog_bitburst(acb_t res, acb_t z0, const acb_t z, slong prec);
0283 void acb_hypgeom_dilog_transform(acb_t res, const acb_t z, int algorithm, slong prec);
0284 void acb_hypgeom_dilog_zero_taylor(acb_t res, const acb_t z, slong prec);
0285 void acb_hypgeom_dilog_zero(acb_t res, const acb_t z, slong prec);
0286 void acb_hypgeom_dilog(acb_t res, const acb_t z, slong prec);
0287 
0288 #ifdef __cplusplus
0289 }
0290 #endif
0291 
0292 #endif