Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: hypergeom
Section: transcendental
C-Name: hypergeom
Prototype: DGDGGp
Help: hypergeom({N},{D},z): general hypergeometric function, where
N and D are the vector of parameters in the numerator and denominator
respectively, evaluated at the complex argument z.
Doc: general hypergeometric function, where \kbd{N} and \kbd{D} are
the vector of parameters in the numerator and denominator respectively,
evaluated at the complex argument $z$.
This function implements hypergeometric functions
$$_pF_q((a_i)_{1\le i\le p},(b_j)_{1\le j\le q};z)
= \sum_{n\ge0}\dfrac{\prod_{1\le i\le p}(a_i)_n}{\prod_{1\le j\le q}(b_j)_n}
\dfrac{z^n}{n!}\;,$$
where $(a)_n=a(a+1)\cdots(a+n-1)$ is the rising Pochammer symbol. For this
to make sense, none of the $b_j$ must be a negative or zero integer. The
corresponding general GP command is
\bprog
hypergeom([a1,a2,...,ap], [b1,b2,...,bq], z)
@eprog\noindent Whenever $p = 1$ or $q = 1$, a one-element vector can be
replaced by the element it contains. Whenever $p = 0$ or $q = 0$, an empty
vector can be omitted. For instance hypergeom(,b,z) computes $_0F_1(;b;z)$.
We distinguish three kinds of such functions according to their radius
of convergence $R$:
\item $q\ge p$: $R = \infty$.
\item $q=p-1$: $R=1$. Nonetheless, by integral representations, $_pF_q$
can be analytically continued outside the disc of convergence.
\item $q\le p-2$: $R=0$. By integral representations, one can make sense of
the function in a suitable domain.
The list of implemented functions and their domain of validity in
our implementation is as follows:
\kbd{F01}: \kbd{hypergeom(,a,z)} (or \kbd{[a]}).
This is essentially a Bessel function and computed as such. $R=\infty$.
\kbd{F10}: \kbd{hypergeom(a,,z)}
This is $(1-z)^{-a}$.
\kbd{F11}: \kbd{hypergeom(a,b,z)} is the Kummer confluent hypergeometric
function, computed by summing the series. $R=\infty$
\kbd{F20}: \kbd{hypergeom([a,b],,z)}. $R=0$, computed as
$$\dfrac{1}{\Gamma(a)}\int_0^\infty t^{a-1}(1-zt)^{-b}e^{-t}\,dt\;.$$
\kbd{F21}: \kbd{hypergeom([a,b],c,z)} (or \kbd{[c]}).
$R=1$, extended by
$$\dfrac{\Gamma(c)}{\Gamma(b)\Gamma(c-b)}
\int_0^1 t^{b-1}(1-t)^{c-b-1}(1-zt)^a\,dt\;.$$
This is Gauss's Hypergeometric function, and almost all of the implementation
work is done for this function.
\kbd{F31}: \kbd{hypergeom([a,b,c],d,z)} (or \kbd{[d]}). $R=0$, computed as
$$\dfrac{1}{\Gamma(a)}\int_0^\infty t^{a-1}e^{-t}{}_2F_1(b,c;d;tz)\,dt\;.$$
\kbd{F32}: \kbd{hypergeom([a,b,c],[d,e],z)}. $R=1$, extended by
$$\dfrac{\Gamma(e)}{\Gamma(c)\Gamma(e-c)}
\int_0^1t^{c-1}(1-t)^{e-c-1}{}_2F_1(a,b;d;tz)\,dt\;.$$
For other inputs: if $R=\infty$ or $R=1$ and $|z| < 1- \varepsilon$ is not
too close to the circle of convergence, we simply sum the series.
\bprog
? hypergeom([3,2], 3.4, 0.7) \\ 2F1(3,2; 3.4; 0.7)
%1 = 7.9999999999999999999999999999999999999
? a=5/3; T1=hypergeom([1,1,1],[a,a],1) \\ 3F2(1,1,1; a,a; 1)
%2 = 3.1958592952314032651578713968927593818
? T2=hypergeom([2,1,1],[a+1,a+1],1)
%3 = 1.6752931349345765309211012564734179541
? T3=hypergeom([2*a-1,1,1],[a+1,a+1],1)
%4 = 1.9721037126267142061807688820853354440
? T1 + (a-1)^2/(a^2*(2*a-3)) * (T2-2*(a-1)*T3) \\
- gamma(a)^2/((2*a-3)*gamma(2*a-2))
%5 = -1.880790961315660013 E-37 \\ ~ 0
@eprog\noindent This identity is due to Bercu.