wrap more functions

This commit is contained in:
fredrik 2021-09-23 19:08:48 +02:00
parent 512d72b2e4
commit 636ca0be39
3 changed files with 235 additions and 7 deletions

View file

@ -149,6 +149,69 @@ int arb_fpwrap_cdouble_polygamma(complex_double * res, complex_double s, complex
int arb_fpwrap_double_polylog(double * res, double s, double z, int flags);
int arb_fpwrap_cdouble_polylog(complex_double * res, complex_double s, complex_double z, int flags);
int arb_fpwrap_double_erf(double * res, double x, int flags);
int arb_fpwrap_cdouble_erf(complex_double * res, complex_double x, int flags);
int arb_fpwrap_double_erfc(double * res, double x, int flags);
int arb_fpwrap_cdouble_erfc(complex_double * res, complex_double x, int flags);
int arb_fpwrap_double_erfi(double * res, double x, int flags);
int arb_fpwrap_cdouble_erfi(complex_double * res, complex_double x, int flags);
int arb_fpwrap_double_bessel_j(double * res, double nu, double x, int flags);
int arb_fpwrap_cdouble_bessel_j(complex_double * res, complex_double nu, complex_double x, int flags);
int arb_fpwrap_double_bessel_y(double * res, double nu, double x, int flags);
int arb_fpwrap_cdouble_bessel_y(complex_double * res, complex_double nu, complex_double x, int flags);
int arb_fpwrap_double_bessel_i(double * res, double nu, double x, int flags);
int arb_fpwrap_cdouble_bessel_i(complex_double * res, complex_double nu, complex_double x, int flags);
int arb_fpwrap_double_bessel_k(double * res, double nu, double x, int flags);
int arb_fpwrap_cdouble_bessel_k(complex_double * res, complex_double nu, complex_double x, int flags);
int arb_fpwrap_double_bessel_k_scaled(double * res, double nu, double x, int flags);
int arb_fpwrap_cdouble_bessel_k_scaled(complex_double * res, complex_double nu, complex_double x, int flags);
int arb_fpwrap_double_airy_ai(double * res, double x, int flags);
int arb_fpwrap_cdouble_airy_ai(complex_double * res, complex_double x, int flags);
int arb_fpwrap_double_airy_ai_prime(double * res, double x, int flags);
int arb_fpwrap_cdouble_airy_ai_prime(complex_double * res, complex_double x, int flags);
int arb_fpwrap_double_airy_bi(double * res, double x, int flags);
int arb_fpwrap_cdouble_airy_bi(complex_double * res, complex_double x, int flags);
int arb_fpwrap_double_airy_bi_prime(double * res, double x, int flags);
int arb_fpwrap_cdouble_airy_bi_prime(complex_double * res, complex_double x, int flags);
int arb_fpwrap_double_coulomb_f(double * res, double l, double eta, double x, int flags);
int arb_fpwrap_cdouble_coulomb_f(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags);
int arb_fpwrap_double_coulomb_g(double * res, double l, double eta, double x, int flags);
int arb_fpwrap_cdouble_coulomb_g(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags);
int arb_fpwrap_cdouble_coulomb_hpos(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags);
int arb_fpwrap_cdouble_coulomb_hneg(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags);
int arb_fpwrap_double_chebyshev_t(double * res, double n, double x, int flags);
int arb_fpwrap_cdouble_chebyshev_t(complex_double * res, complex_double n, complex_double x, int flags);
int arb_fpwrap_double_chebyshev_u(double * res, double n, double x, int flags);
int arb_fpwrap_cdouble_chebyshev_u(complex_double * res, complex_double n, complex_double x, int flags);
int arb_fpwrap_double_jacobi_p(double * res, double n, double a, double b, double x, int flags);
int arb_fpwrap_cdouble_jacobi_p(complex_double * res, complex_double n, complex_double a, complex_double b, complex_double x, int flags);
int arb_fpwrap_double_gegenbauer_c(double * res, double n, double m, double x, int flags);
int arb_fpwrap_cdouble_gegenbauer_c(complex_double * res, complex_double n, complex_double m, complex_double x, int flags);
int arb_fpwrap_double_laguerre_l(double * res, double n, double m, double x, int flags);
int arb_fpwrap_cdouble_laguerre_l(complex_double * res, complex_double n, complex_double m, complex_double x, int flags);
int arb_fpwrap_double_hermite_h(double * res, double n, double x, int flags);
int arb_fpwrap_cdouble_hermite_h(complex_double * res, complex_double n, complex_double x, int flags);
int arb_fpwrap_double_agm1(double * res, double x, int flags);
int arb_fpwrap_cdouble_agm1(complex_double * res, complex_double x, int flags);

View file

@ -643,9 +643,6 @@ DEF_CDOUBLE_FUN_1(acosh, acb_acosh)
DEF_DOUBLE_FUN_1(atanh, arb_atanh)
DEF_CDOUBLE_FUN_1(atanh, acb_atanh)
/* todo: lambertw (with branches) */
DEF_DOUBLE_FUN_2(rising, arb_rising)
DEF_CDOUBLE_FUN_2(rising, acb_rising)
@ -667,7 +664,7 @@ DEF_CDOUBLE_FUN_1(zeta, acb_zeta)
DEF_DOUBLE_FUN_2(hurwitz_zeta, arb_hurwitz_zeta)
DEF_CDOUBLE_FUN_2(hurwitz_zeta, acb_hurwitz_zeta)
void
static void
_arb_polygamma(arb_t res, const arb_t s, const arb_t z, slong prec)
{
acb_t t, u, v;
@ -686,7 +683,7 @@ _arb_polygamma(arb_t res, const arb_t s, const arb_t z, slong prec)
acb_clear(v);
}
void
static void
_arb_barnes_g(arb_t res, const arb_t x, slong prec)
{
acb_t t, u;
@ -702,7 +699,7 @@ _arb_barnes_g(arb_t res, const arb_t x, slong prec)
acb_clear(u);
}
void
static void
_arb_log_barnes_g(arb_t res, const arb_t x, slong prec)
{
acb_t t, u;
@ -730,7 +727,11 @@ DEF_CDOUBLE_FUN_2(polygamma, acb_polygamma)
DEF_DOUBLE_FUN_2(polylog, arb_polylog)
DEF_CDOUBLE_FUN_2(polylog, acb_polylog)
void
DEF_DOUBLE_FUN_1(dilog, arb_hypgeom_dilog)
DEF_CDOUBLE_FUN_1(dilog, acb_hypgeom_dilog)
static void
_arb_agm1(arb_t res, const arb_t x, slong prec)
{
arb_t t;
@ -746,3 +747,95 @@ DEF_CDOUBLE_FUN_1(agm1, acb_agm1)
DEF_DOUBLE_FUN_2(agm, arb_agm)
DEF_CDOUBLE_FUN_2(agm, acb_agm)
DEF_DOUBLE_FUN_1(erf, arb_hypgeom_erf)
DEF_CDOUBLE_FUN_1(erf, acb_hypgeom_erf)
DEF_DOUBLE_FUN_1(erfc, arb_hypgeom_erfc)
DEF_CDOUBLE_FUN_1(erfc, acb_hypgeom_erfc)
DEF_DOUBLE_FUN_1(erfi, arb_hypgeom_erfi)
DEF_CDOUBLE_FUN_1(erfi, acb_hypgeom_erfi)
DEF_DOUBLE_FUN_2(bessel_j, arb_hypgeom_bessel_j)
DEF_CDOUBLE_FUN_2(bessel_j, acb_hypgeom_bessel_j)
DEF_DOUBLE_FUN_2(bessel_y, arb_hypgeom_bessel_y)
DEF_CDOUBLE_FUN_2(bessel_y, acb_hypgeom_bessel_y)
DEF_DOUBLE_FUN_2(bessel_i, arb_hypgeom_bessel_i)
DEF_CDOUBLE_FUN_2(bessel_i, acb_hypgeom_bessel_i)
DEF_DOUBLE_FUN_2(bessel_k, arb_hypgeom_bessel_k)
DEF_CDOUBLE_FUN_2(bessel_k, acb_hypgeom_bessel_k)
DEF_DOUBLE_FUN_2(bessel_k_scaled, arb_hypgeom_bessel_k_scaled)
DEF_CDOUBLE_FUN_2(bessel_k_scaled, acb_hypgeom_bessel_k_scaled)
static void _arb_hypgeom_airy_ai(arb_t res, const arb_t x, slong prec) { arb_hypgeom_airy(res, NULL, NULL, NULL, x, prec); }
static void _arb_hypgeom_airy_ai_prime(arb_t res, const arb_t x, slong prec) { arb_hypgeom_airy(NULL, res, NULL, NULL, x, prec); }
static void _arb_hypgeom_airy_bi(arb_t res, const arb_t x, slong prec) { arb_hypgeom_airy(NULL, NULL, res, NULL, x, prec); }
static void _arb_hypgeom_airy_bi_prime(arb_t res, const arb_t x, slong prec) { arb_hypgeom_airy(NULL, NULL, NULL, res, x, prec); }
static void _acb_hypgeom_airy_ai(acb_t res, const acb_t x, slong prec) { acb_hypgeom_airy(res, NULL, NULL, NULL, x, prec); }
static void _acb_hypgeom_airy_ai_prime(acb_t res, const acb_t x, slong prec) { acb_hypgeom_airy(NULL, res, NULL, NULL, x, prec); }
static void _acb_hypgeom_airy_bi(acb_t res, const acb_t x, slong prec) { acb_hypgeom_airy(NULL, NULL, res, NULL, x, prec); }
static void _acb_hypgeom_airy_bi_prime(acb_t res, const acb_t x, slong prec) { acb_hypgeom_airy(NULL, NULL, NULL, res, x, prec); }
DEF_DOUBLE_FUN_1(airy_ai, _arb_hypgeom_airy_ai)
DEF_CDOUBLE_FUN_1(airy_ai, _acb_hypgeom_airy_ai)
DEF_DOUBLE_FUN_1(airy_ai_prime, _arb_hypgeom_airy_ai_prime)
DEF_CDOUBLE_FUN_1(airy_ai_prime, _acb_hypgeom_airy_ai_prime)
DEF_DOUBLE_FUN_1(airy_bi, _arb_hypgeom_airy_bi)
DEF_CDOUBLE_FUN_1(airy_bi, _acb_hypgeom_airy_bi)
DEF_DOUBLE_FUN_1(airy_bi_prime, _arb_hypgeom_airy_bi_prime)
DEF_CDOUBLE_FUN_1(airy_bi_prime, _acb_hypgeom_airy_bi_prime)
static void _arb_hypgeom_coulomb_f(arb_t res, const arb_t l, const arb_t eta, const arb_t z, slong prec) { arb_hypgeom_coulomb(res, NULL, l, eta, z, prec); }
static void _arb_hypgeom_coulomb_g(arb_t res, const arb_t l, const arb_t eta, const arb_t z, slong prec) { arb_hypgeom_coulomb(NULL, res, l, eta, z, prec); }
static void _acb_hypgeom_coulomb_f(acb_t res, const acb_t l, const acb_t eta, const acb_t z, slong prec) { acb_hypgeom_coulomb(res, NULL, NULL, NULL, l, eta, z, prec); }
static void _acb_hypgeom_coulomb_g(acb_t res, const acb_t l, const acb_t eta, const acb_t z, slong prec) { acb_hypgeom_coulomb(NULL, res, NULL, NULL, l, eta, z, prec); }
static void _acb_hypgeom_coulomb_hpos(acb_t res, const acb_t l, const acb_t eta, const acb_t z, slong prec) { acb_hypgeom_coulomb(NULL, NULL, res, NULL, l, eta, z, prec); }
static void _acb_hypgeom_coulomb_hneg(acb_t res, const acb_t l, const acb_t eta, const acb_t z, slong prec) { acb_hypgeom_coulomb(NULL, NULL, NULL, res, l, eta, z, prec); }
DEF_DOUBLE_FUN_3(coulomb_f, _arb_hypgeom_coulomb_f)
DEF_CDOUBLE_FUN_3(coulomb_f, _acb_hypgeom_coulomb_f)
DEF_DOUBLE_FUN_3(coulomb_g, _arb_hypgeom_coulomb_g)
DEF_CDOUBLE_FUN_3(coulomb_g, _acb_hypgeom_coulomb_g)
DEF_CDOUBLE_FUN_3(coulomb_hpos, _acb_hypgeom_coulomb_hpos)
DEF_CDOUBLE_FUN_3(coulomb_hneg, _acb_hypgeom_coulomb_hneg)
DEF_DOUBLE_FUN_2(chebyshev_t, arb_hypgeom_chebyshev_t)
DEF_CDOUBLE_FUN_2(chebyshev_t, acb_hypgeom_chebyshev_t)
DEF_DOUBLE_FUN_2(chebyshev_u, arb_hypgeom_chebyshev_u)
DEF_CDOUBLE_FUN_2(chebyshev_u, acb_hypgeom_chebyshev_u)
DEF_DOUBLE_FUN_4(jacobi_p, arb_hypgeom_jacobi_p)
DEF_CDOUBLE_FUN_4(jacobi_p, acb_hypgeom_jacobi_p)
DEF_DOUBLE_FUN_3(gegenbauer_c, arb_hypgeom_gegenbauer_c)
DEF_CDOUBLE_FUN_3(gegenbauer_c, acb_hypgeom_gegenbauer_c)
DEF_DOUBLE_FUN_3(laguerre_l, arb_hypgeom_laguerre_l)
DEF_CDOUBLE_FUN_3(laguerre_l, acb_hypgeom_laguerre_l)
DEF_DOUBLE_FUN_2(hermite_h, arb_hypgeom_hermite_h)
DEF_CDOUBLE_FUN_2(hermite_h, acb_hypgeom_hermite_h)
/* todo: lambertw (with branches) */
/* todo: fresnel (with flags) */
/* todo: functions with multiple outputs */
/* todo: incomplete gamma, exp integrals... */
/* legendre_p, legendre_q, +roots, spherharm */
/* todo: pfqs */

View file

@ -253,6 +253,78 @@ Gamma, zeta and related functions
Polylogarithm.
Error functions and exponential integrals
...............................................................................
.. function:: int arb_fpwrap_double_erf(double * res, double x, int flags)
int arb_fpwrap_cdouble_erf(complex_double * res, complex_double x, int flags)
.. function:: int arb_fpwrap_double_erfc(double * res, double x, int flags)
int arb_fpwrap_cdouble_erfc(complex_double * res, complex_double x, int flags)
.. function:: int arb_fpwrap_double_erfi(double * res, double x, int flags)
int arb_fpwrap_cdouble_erfi(complex_double * res, complex_double x, int flags)
Bessel, Airy and Coulomb functions
...............................................................................
.. function:: int arb_fpwrap_double_bessel_j(double * res, double nu, double x, int flags)
int arb_fpwrap_cdouble_bessel_j(complex_double * res, complex_double nu, complex_double x, int flags)
.. function:: int arb_fpwrap_double_bessel_y(double * res, double nu, double x, int flags)
int arb_fpwrap_cdouble_bessel_y(complex_double * res, complex_double nu, complex_double x, int flags)
.. function:: int arb_fpwrap_double_bessel_i(double * res, double nu, double x, int flags)
int arb_fpwrap_cdouble_bessel_i(complex_double * res, complex_double nu, complex_double x, int flags)
.. function:: int arb_fpwrap_double_bessel_k(double * res, double nu, double x, int flags)
int arb_fpwrap_cdouble_bessel_k(complex_double * res, complex_double nu, complex_double x, int flags)
.. function:: int arb_fpwrap_double_bessel_k_scaled(double * res, double nu, double x, int flags)
int arb_fpwrap_cdouble_bessel_k_scaled(complex_double * res, complex_double nu, complex_double x, int flags)
.. function:: int arb_fpwrap_double_airy_ai(double * res, double x, int flags)
int arb_fpwrap_cdouble_airy_ai(complex_double * res, complex_double x, int flags)
.. function:: int arb_fpwrap_double_airy_ai_prime(double * res, double x, int flags)
int arb_fpwrap_cdouble_airy_ai_prime(complex_double * res, complex_double x, int flags)
.. function:: int arb_fpwrap_double_airy_bi(double * res, double x, int flags)
int arb_fpwrap_cdouble_airy_bi(complex_double * res, complex_double x, int flags)
.. function:: int arb_fpwrap_double_airy_bi_prime(double * res, double x, int flags)
int arb_fpwrap_cdouble_airy_bi_prime(complex_double * res, complex_double x, int flags)
.. function:: int arb_fpwrap_double_coulomb_f(double * res, double l, double eta, double x, int flags)
int arb_fpwrap_cdouble_coulomb_f(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags)
.. function:: int arb_fpwrap_double_coulomb_g(double * res, double l, double eta, double x, int flags)
int arb_fpwrap_cdouble_coulomb_g(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags)
.. function:: int arb_fpwrap_cdouble_coulomb_hpos(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags)
int arb_fpwrap_cdouble_coulomb_hneg(complex_double * res, complex_double l, complex_double eta, complex_double x, int flags)
Orthogonal polynomials
...............................................................................
.. function:: int arb_fpwrap_double_chebyshev_t(double * res, double n, double x, int flags)
int arb_fpwrap_cdouble_chebyshev_t(complex_double * res, complex_double n, complex_double x, int flags)
.. function:: int arb_fpwrap_double_chebyshev_u(double * res, double n, double x, int flags)
int arb_fpwrap_cdouble_chebyshev_u(complex_double * res, complex_double n, complex_double x, int flags)
.. function:: int arb_fpwrap_double_jacobi_p(double * res, double n, double a, double b, double x, int flags)
int arb_fpwrap_cdouble_jacobi_p(complex_double * res, complex_double n, complex_double a, complex_double b, complex_double x, int flags)
.. function:: int arb_fpwrap_double_gegenbauer_c(double * res, double n, double m, double x, int flags)
int arb_fpwrap_cdouble_gegenbauer_c(complex_double * res, complex_double n, complex_double m, complex_double x, int flags)
.. function:: int arb_fpwrap_double_laguerre_l(double * res, double n, double m, double x, int flags)
int arb_fpwrap_cdouble_laguerre_l(complex_double * res, complex_double n, complex_double m, complex_double x, int flags)
.. function:: int arb_fpwrap_double_hermite_h(double * res, double n, double x, int flags)
int arb_fpwrap_cdouble_hermite_h(complex_double * res, complex_double n, complex_double x, int flags)
Elliptic integrals and elliptic functions
...............................................................................