Cython API for special functions#
Scalar, typed versions of many of the functions in scipy.special
can be accessed directly from Cython; the complete list is given
below. Functions are overloaded using Cython fused types so their
names match their Python counterpart. The module follows the following
conventions:
- If a function’s Python counterpart returns multiple values, then the function returns its outputs via pointers in the final arguments. 
- If a function’s Python counterpart returns a single value, then the function’s output is returned directly. 
The module is usable from Cython via:
cimport scipy.special.cython_special
Error handling#
Functions can indicate an error by returning nan; however they
cannot emit warnings like their counterparts in scipy.special.
Available functions#
- 
double voigt_profile(double, double, double) 
- agm:- double agm(double, double) 
- airy:- void airy(double, double *, double *, double *, double *) void airy(double complex, double complex *, double complex *, double complex *, double complex *) 
- 
void airye(double complex, double complex *, double complex *, double complex *, double complex *) void airye(double, double *, double *, double *, double *) 
- bdtr:- double bdtr(double, double, double) double bdtr(double, long, double) 
- 
double bdtrc(double, double, double) double bdtrc(double, long, double) 
- 
double bdtri(double, double, double) double bdtri(double, long, double) 
- 
double bdtrik(double, double, double) 
- 
double bdtrin(double, double, double) 
- bei:- double bei(double) 
- beip:- double beip(double) 
- ber:- double ber(double) 
- berp:- double berp(double) 
- 
double besselpoly(double, double, double) 
- beta:- double beta(double, double) 
- 
float betainc(float, float, float) double betainc(double, double, double) 
- 
float betaincc(float, float, float) double betaincc(double, double, double) 
- 
float betaincinv(float, float, float) double betaincinv(double, double, double) 
- 
float betainccinv(float, float, float) double betainccinv(double, double, double) 
- 
double betaln(double, double) 
- 
double binom(double, double) 
- 
double boxcox(double, double) 
- 
double boxcox1p(double, double) 
- 
double btdtria(double, double, double) 
- 
double btdtrib(double, double, double) 
- cbrt:- double cbrt(double) 
- 
double chdtr(double, double) 
- 
double chdtrc(double, double) 
- 
double chdtri(double, double) 
- 
double chdtriv(double, double) 
- 
double chndtr(double, double, double) 
- 
double chndtridf(double, double, double) 
- 
double chndtrinc(double, double, double) 
- 
double chndtrix(double, double, double) 
- 
double cosdg(double) 
- 
double cosm1(double) 
- 
double cotdg(double) 
- 
double dawsn(double) double complex dawsn(double complex) 
- 
double ellipe(double) 
- 
double ellipeinc(double, double) 
- 
void ellipj(double, double, double *, double *, double *, double *) 
- 
double ellipkinc(double, double) 
- 
double ellipkm1(double) 
- 
double ellipk(double) 
- 
double elliprc(double, double) double complex elliprc(double complex, double complex) 
- 
double elliprd(double, double, double) double complex elliprd(double complex, double complex, double complex) 
- 
double elliprf(double, double, double) double complex elliprf(double complex, double complex, double complex) 
- 
double elliprg(double, double, double) double complex elliprg(double complex, double complex, double complex) 
- 
double elliprj(double, double, double, double) double complex elliprj(double complex, double complex, double complex, double complex) 
- entr:- double entr(double) 
- erf:- double complex erf(double complex) double erf(double) 
- erfc:- double complex erfc(double complex) double erfc(double) 
- 
double erfcx(double) double complex erfcx(double complex) 
- erfi:- double erfi(double) double complex erfi(double complex) 
- 
float erfinv(float) double erfinv(double) 
- 
double erfcinv(double) 
- 
double complex eval_chebyc(double, double complex) double eval_chebyc(double, double) double eval_chebyc(Py_ssize_t, double) 
- 
double complex eval_chebys(double, double complex) double eval_chebys(double, double) double eval_chebys(Py_ssize_t, double) 
- 
double complex eval_chebyt(double, double complex) double eval_chebyt(double, double) double eval_chebyt(Py_ssize_t, double) 
- 
double complex eval_chebyu(double, double complex) double eval_chebyu(double, double) double eval_chebyu(Py_ssize_t, double) 
- 
double complex eval_gegenbauer(double, double, double complex) double eval_gegenbauer(double, double, double) double eval_gegenbauer(Py_ssize_t, double, double) 
- 
double complex eval_genlaguerre(double, double, double complex) double eval_genlaguerre(double, double, double) double eval_genlaguerre(Py_ssize_t, double, double) 
- 
double eval_hermite(Py_ssize_t, double) 
- 
double eval_hermitenorm(Py_ssize_t, double) 
- 
double complex eval_jacobi(double, double, double, double complex) double eval_jacobi(double, double, double, double) double eval_jacobi(Py_ssize_t, double, double, double) 
- 
double complex eval_laguerre(double, double complex) double eval_laguerre(double, double) double eval_laguerre(Py_ssize_t, double) 
- 
double complex eval_legendre(double, double complex) double eval_legendre(double, double) double eval_legendre(Py_ssize_t, double) 
- 
double complex eval_sh_chebyt(double, double complex) double eval_sh_chebyt(double, double) double eval_sh_chebyt(Py_ssize_t, double) 
- 
double complex eval_sh_chebyu(double, double complex) double eval_sh_chebyu(double, double) double eval_sh_chebyu(Py_ssize_t, double) 
- 
double complex eval_sh_jacobi(double, double, double, double complex) double eval_sh_jacobi(double, double, double, double) double eval_sh_jacobi(Py_ssize_t, double, double, double) 
- 
double complex eval_sh_legendre(double, double complex) double eval_sh_legendre(double, double) double eval_sh_legendre(Py_size_t, double) 
- exp1:- double complex exp1(double complex) double exp1(double) 
- 
double exp10(double) 
- exp2:- double exp2(double) 
- expi:- double complex expi(double complex) double expi(double) 
- 
double expit(double) float expit(float) long double expit(long double) 
- 
double complex expm1(double complex) double expm1(double) 
- expn:- double expn(double, double) double expn(long, double) 
- 
double exprel(double) 
- fdtr:- double fdtr(double, double, double) 
- 
double fdtrc(double, double, double) 
- 
double fdtri(double, double, double) 
- 
double fdtridfd(double, double, double) 
- 
void fresnel(double, double *, double *) void fresnel(double complex, double complex *, double complex *) 
- 
double complex gamma(double complex) double gamma(double) 
- 
double gammainc(double, double) 
- 
double gammaincc(double, double) 
- 
double gammainccinv(double, double) 
- 
double gammaincinv(double, double) 
- 
double gammaln(double) 
- 
double gammasgn(double) 
- gdtr:- double gdtr(double, double, double) 
- 
double gdtrc(double, double, double) 
- 
double gdtria(double, double, double) 
- 
double gdtrib(double, double, double) 
- 
double gdtrix(double, double, double) 
- 
double complex hankel1(double, double complex) 
- 
double complex hankel1e(double, double complex) 
- 
double complex hankel2(double, double complex) 
- 
double complex hankel2e(double, double complex) 
- 
double huber(double, double) 
- 
double complex hyp0f1(double, double complex) double hyp0f1(double, double) 
- 
double hyp1f1(double, double, double) double complex hyp1f1(double, double, double complex) 
- 
double hyp2f1(double, double, double, double) double complex hyp2f1(double, double, double, double complex) 
- 
double hyperu(double, double, double) 
- i0:- double i0(double) 
- i0e:- double i0e(double) 
- i1:- double i1(double) 
- i1e:- double i1e(double) 
- 
double inv_boxcox(double, double) 
- 
double inv_boxcox1p(double, double) 
- 
void it2i0k0(double, double *, double *) 
- 
void it2j0y0(double, double *, double *) 
- 
double it2struve0(double) 
- 
void itairy(double, double *, double *, double *, double *) 
- 
void iti0k0(double, double *, double *) 
- 
void itj0y0(double, double *, double *) 
- 
double itmodstruve0(double) 
- 
double itstruve0(double) 
- iv:- double complex iv(double, double complex) double iv(double, double) 
- ive:- double complex ive(double, double complex) double ive(double, double) 
- j0:- double j0(double) 
- j1:- double j1(double) 
- jv:- double complex jv(double, double complex) double jv(double, double) 
- jve:- double complex jve(double, double complex) double jve(double, double) 
- k0:- double k0(double) 
- k0e:- double k0e(double) 
- k1:- double k1(double) 
- k1e:- double k1e(double) 
- kei:- double kei(double) 
- keip:- double keip(double) 
- 
void kelvin(double, double complex *, double complex *, double complex *, double complex *) 
- ker:- double ker(double) 
- kerp:- double kerp(double) 
- 
double kl_div(double, double) 
- kn:- double kn(double, double) double kn(long, double) 
- 
double kolmogi(double) 
- 
double kolmogorov(double) 
- kv:- double complex kv(double, double complex) double kv(double, double) 
- kve:- double complex kve(double, double complex) double kve(double, double) 
- 
double complex log1p(double complex) double log1p(double) 
- 
double log_expit(double) float log_expit(float) long double log_expit(long double) 
- 
double log_ndtr(double) double complex log_ndtr(double complex) 
- 
double loggamma(double) double complex loggamma(double complex) 
- 
double logit(double) float logit(float) long double logit(long double) 
- lpmv:- double lpmv(double, double, double) 
- 
double mathieu_a(double, double) 
- 
double mathieu_b(double, double) 
- 
void mathieu_cem(double, double, double, double *, double *) 
- 
void mathieu_modcem1(double, double, double, double *, double *) 
- 
void mathieu_modcem2(double, double, double, double *, double *) 
- 
void mathieu_modsem1(double, double, double, double *, double *) 
- 
void mathieu_modsem2(double, double, double, double *, double *) 
- 
void mathieu_sem(double, double, double, double *, double *) 
- 
void modfresnelm(double, double complex *, double complex *) 
- 
void modfresnelp(double, double complex *, double complex *) 
- 
double modstruve(double, double) 
- 
double nbdtr(double, double, double) double nbdtr(long, long, double) 
- 
double nbdtrc(double, double, double) double nbdtrc(long, long, double) 
- 
double nbdtri(double, double, double) double nbdtri(long, long, double) 
- 
double nbdtrik(double, double, double) 
- 
double nbdtrin(double, double, double) 
- 
double ncfdtr(double, double, double, double) 
- 
double ncfdtri(double, double, double, double) 
- 
double ncfdtridfd(double, double, double, double) 
- 
double ncfdtridfn(double, double, double, double) 
- 
double ncfdtrinc(double, double, double, double) 
- 
double nctdtr(double, double, double) 
- 
double nctdtridf(double, double, double) 
- 
double nctdtrinc(double, double, double) 
- 
double nctdtrit(double, double, double) 
- ndtr:- double complex ndtr(double complex) double ndtr(double) 
- 
double ndtri(double) 
- 
double nrdtrimn(double, double, double) 
- 
double nrdtrisd(double, double, double) 
- 
void obl_ang1(double, double, double, double, double *, double *) 
- 
void obl_ang1_cv(double, double, double, double, double, double *, double *) 
- 
double obl_cv(double, double, double) 
- 
void obl_rad1(double, double, double, double, double *, double *) 
- 
void obl_rad1_cv(double, double, double, double, double, double *, double *) 
- 
void obl_rad2(double, double, double, double, double *, double *) 
- 
void obl_rad2_cv(double, double, double, double, double, double *, double *) 
- 
double owens_t(double, double) 
- pbdv:- void pbdv(double, double, double *, double *) 
- pbvv:- void pbvv(double, double, double *, double *) 
- pbwa:- void pbwa(double, double, double *, double *) 
- pdtr:- double pdtr(double, double) 
- 
double pdtrc(double, double) 
- 
double pdtri(double, double) double pdtri(long, double) 
- 
double pdtrik(double, double) 
- poch:- double poch(double, double) 
- 
float powm1(float, float) double powm1(double, double) 
- 
void pro_ang1(double, double, double, double, double *, double *) 
- 
void pro_ang1_cv(double, double, double, double, double, double *, double *) 
- 
double pro_cv(double, double, double) 
- 
void pro_rad1(double, double, double, double, double *, double *) 
- 
void pro_rad1_cv(double, double, double, double, double, double *, double *) 
- 
void pro_rad2(double, double, double, double, double *, double *) 
- 
void pro_rad2_cv(double, double, double, double, double, double *, double *) 
- 
double pseudo_huber(double, double) 
- psi:- double complex psi(double complex) double psi(double) 
- 
double radian(double, double, double) 
- 
double rel_entr(double, double) 
- 
double complex rgamma(double complex) double rgamma(double) 
- 
double round(double) 
- 
void shichi(double complex, double complex *, double complex *) void shichi(double, double *, double *) 
- sici:- void sici(double complex, double complex *, double complex *) void sici(double, double *, double *) 
- 
double sindg(double) 
- 
double smirnov(double, double) double smirnov(long, double) 
- 
double smirnovi(double, double) double smirnovi(long, double) 
- 
double complex spence(double complex) double spence(double) 
- 
double complex sph_harm(double, double, double, double) double complex sph_harm(long, long, double, double) 
- 
double stdtr(double, double) 
- 
double stdtridf(double, double) 
- 
double stdtrit(double, double) 
- 
double struve(double, double) 
- 
double tandg(double) 
- 
double tklmbda(double, double) 
- wofz:- double complex wofz(double complex) 
- 
double complex wrightomega(double complex) double wrightomega(double) 
- 
double xlog1py(double, double) double complex xlog1py(double complex, double complex) 
- 
double xlogy(double, double) double complex xlogy(double complex, double complex) 
- y0:- double y0(double) 
- y1:- double y1(double) 
- yn:- double yn(double, double) double yn(long, double) 
- yv:- double complex yv(double, double complex) double yv(double, double) 
- yve:- double complex yve(double, double complex) double yve(double, double) 
- 
double zetac(double) 
- 
double wright_bessel(double, double, double) 
- 
double log_wright_bessel(double, double, double) 
- 
double ndtri_exp(double) 
Custom functions#
Some functions in scipy.special which are not ufuncs have custom
Cython wrappers.
Spherical Bessel functions#
The optional derivative boolean argument is replaced with an
optional Cython bint, leading to the following signatures.
- 
double complex spherical_jn(Py_ssize_t, double complex) double complex spherical_jn(Py_ssize_t, double complex, bint) double spherical_jn(Py_ssize_t, double) double spherical_jn(Py_ssize_t, double, bint) 
- 
double complex spherical_yn(Py_ssize_t, double complex) double complex spherical_yn(Py_ssize_t, double complex, bint) double spherical_yn(Py_ssize_t, double) double spherical_yn(Py_ssize_t, double, bint) 
- 
double complex spherical_in(Py_ssize_t, double complex) double complex spherical_in(Py_ssize_t, double complex, bint) double spherical_in(Py_ssize_t, double) double spherical_in(Py_ssize_t, double, bint) 
- 
double complex spherical_kn(Py_ssize_t, double complex) double complex spherical_kn(Py_ssize_t, double complex, bint) double spherical_kn(Py_ssize_t, double) double spherical_kn(Py_ssize_t, double, bint)