genhypergeo: The generalized hypergeometric function

genhypergeoR Documentation

The generalized hypergeometric function

Description

The generalized hypergeometric function, using either the series expansion or the continued fraction expansion.

Usage

genhypergeo(U, L, z, tol=0, maxiter=2000, check_mod=TRUE,
    polynomial=FALSE, debug=FALSE, series=TRUE)
genhypergeo_series(U, L, z, tol=0, maxiter=2000, check_mod=TRUE,
    polynomial=FALSE, debug=FALSE) 
genhypergeo_contfrac(U, L, z, tol = 0, maxiter = 2000)

Arguments

U,L

Upper and lower arguments respectively (real or complex)

z

Primary complex argument (see notes)

tol

tolerance with default zero meaning to iterate until additional terms to not change the partial sum

maxiter

Maximum number of iterations to perform

check_mod

Boolean, with default TRUE meaning to check that the modulus of z is less than 1

polynomial

Boolean, with default FALSE meaning to evaluate the series until converged, or return a warning; and TRUE meaning to return the sum of maxiter terms, whether or not converged. This is useful when either A or B is a nonpositive integer in which case the hypergeometric function is a polynomial

debug

Boolean, with TRUE meaning to return debugging information and default FALSE meaning to return just the evaluate

series

In function genhypergeo(), Boolean argument with default TRUE meaning to return the result of genhypergeo_series() and FALSE the result of genhypergeo_contfrac()

Details

Function genhypergeo() is a wrapper for functions genhypergeo_series() and genhypergeo_contfrac().

Function genhypergeo_series() is the workhorse for the whole package; every call to hypergeo() uses this function except for the (apparently rare—but see the examples section) cases where continued fractions are used.

The generalized hypergeometric function [here genhypergeo()] appears from time to time in the literature (eg Mathematica) as

F(U,L;z) = \sum_{n=0}^\infty\frac{(u_1)_n(u_2)_n\ldots (u_i)_n}{(l_1)_n(l_2)_n\ldots (l_j)_n}\cdot\frac{z^n}{n!}

where U=\left(u_1,\ldots,u_i\right) and L=\left(l_1,\ldots,l_i\right) are the “upper” and “lower” vectors respectively. The radius of convergence of this formula is 1.

For the Confluent Hypergeometric function, use genhypergeo() with length-1 vectors for arguments U and V.

For the {}_0\!F_1 function (ie no “upper” arguments), use genhypergeo(NULL,L,x).

See documentation for genhypergeo_contfrac() for details of the continued fraction representation.

Note

The radius of convergence for the series is 1 but under some circumstances, analytic continuation defines a function over the whole complex plane (possibly cut along (1,\infty)). Further work would be required to implement this.

Function genhypergeo() tests for its return value being either on (or close to) the real axis, and if so, coerces its value to numeric:

if(all(zapsmall(Im(out)) == 0)){out <- Re(out)}

Thus the code is sensitive, via zapsmall(), to the value of getOption("digits").

Author(s)

Robin K. S. Hankin

References

M. Abramowitz and I. A. Stegun 1965. Handbook of mathematical functions. New York: Dover

See Also

hypergeo,genhypergeo_contfrac

Examples


genhypergeo(U=c(1.1,0.2,0.3), L=c(10.1,pi*4), check_mod=FALSE, z=1.12+0.2i)
genhypergeo(U=c(1.1,0.2,0.3), L=c(10.1,pi*4),z=4.12+0.2i,series=FALSE)


RobinHankin/hypergeo documentation built on Aug. 29, 2023, 4 p.m.