Python library for arbitrary-precision floating-point arithmetic
—
Advanced mathematical functions including gamma functions, zeta functions, Bessel functions, hypergeometric functions, elliptic functions, and other special functions from mathematical physics and number theory.
The gamma function and related special functions.
def gamma(x):
"""
Gamma function Γ(x).
Args:
x: Input number
Returns:
Γ(x) = ∫₀^∞ t^(x-1) e^(-t) dt
"""
def rgamma(x):
"""
Reciprocal gamma function 1/Γ(x).
Args:
x: Input number
Returns:
1/Γ(x)
"""
def loggamma(x):
"""
Logarithm of gamma function ln|Γ(x)|.
Args:
x: Input number
Returns:
ln|Γ(x)|
"""
def factorial(n):
"""
Factorial function n!.
Args:
n: Non-negative integer or real number
Returns:
n! = Γ(n+1)
"""
def fac(n):
"""
Factorial function (alias for factorial).
Args:
n: Non-negative integer or real number
Returns:
n!
"""
def fac2(n):
"""
Double factorial n!!.
Args:
n: Integer
Returns:
n!! (product of every second integer)
"""
def binomial(n, k):
"""
Binomial coefficient C(n,k) = n!/(k!(n-k)!).
Args:
n, k: Numbers
Returns:
Binomial coefficient
"""
def rf(x, n):
"""
Rising factorial (Pochhammer symbol) (x)_n.
Args:
x: Base
n: Count
Returns:
(x)_n = x(x+1)(x+2)...(x+n-1)
"""
def ff(x, n):
"""
Falling factorial.
Args:
x: Base
n: Count
Returns:
x(x-1)(x-2)...(x-n+1)
"""Beta function and incomplete beta function.
def beta(x, y):
"""
Beta function B(x,y).
Args:
x, y: Input numbers
Returns:
B(x,y) = Γ(x)Γ(y)/Γ(x+y)
"""
def betainc(a, b, x1=0, x2=1):
"""
Incomplete beta function.
Args:
a, b: Shape parameters
x1, x2: Integration limits (default: 0, 1)
Returns:
Incomplete beta integral
"""Polygamma functions (derivatives of logarithm of gamma function).
def psi(m, x):
"""
Polygamma function ψ^(m)(x).
Args:
m: Order (0 for digamma, 1 for trigamma, etc.)
x: Input number
Returns:
mth derivative of ln(Γ(x))
"""
def digamma(x):
"""
Digamma function ψ(x) = Γ'(x)/Γ(x).
Args:
x: Input number
Returns:
ψ(x) = d/dx ln(Γ(x))
"""
def polygamma(m, x):
"""
Polygamma function (alias for psi).
Args:
m: Order
x: Input number
Returns:
ψ^(m)(x)
"""Riemann zeta function and related functions.
def zeta(s):
"""
Riemann zeta function ζ(s).
Args:
s: Complex number
Returns:
ζ(s) = Σ 1/n^s (for Re(s) > 1)
"""
def altzeta(s):
"""
Alternating zeta function (Dirichlet eta).
Args:
s: Complex number
Returns:
η(s) = Σ (-1)^(n-1)/n^s
"""
def hurwitz(s, a):
"""
Hurwitz zeta function ζ(s,a).
Args:
s: Complex number
a: Complex number
Returns:
ζ(s,a) = Σ 1/(n+a)^s
"""
def dirichlet(s):
"""
Dirichlet eta function η(s).
Args:
s: Complex number
Returns:
η(s) = (1-2^(1-s))ζ(s)
"""
def polylog(s, z):
"""
Polylogarithm Li_s(z).
Args:
s: Order
z: Argument
Returns:
Li_s(z) = Σ z^n/n^s
"""
def lerchphi(z, s, a):
"""
Lerch transcendent Φ(z,s,a).
Args:
z, s, a: Complex numbers
Returns:
Φ(z,s,a) = Σ z^n/(n+a)^s
"""
def stieltjes(n):
"""
Stieltjes constants γ_n.
Args:
n: Non-negative integer
Returns:
nth Stieltjes constant
"""Functions related to prime numbers and number theory.
def primepi(x):
"""
Prime counting function π(x).
Args:
x: Real number
Returns:
Number of primes ≤ x
"""
def primepi2(x):
"""
Offset logarithmic integral π₂(x).
Args:
x: Real number
Returns:
π₂(x) = π(x) - π(√x)
"""
def primezeta(s):
"""
Prime zeta function P(s).
Args:
s: Complex number
Returns:
P(s) = Σ 1/p^s (sum over primes p)
"""
def riemannr(x):
"""
Riemann R function.
Args:
x: Real number
Returns:
R(x) = Σ μ(k)/k * li(x^(1/k))
"""
def mangoldt(n):
"""
Von Mangoldt function Λ(n).
Args:
n: Positive integer
Returns:
ln(p) if n = p^k for prime p, 0 otherwise
"""
def secondzeta(x):
"""
Second Chebyshev function ψ(x).
Args:
x: Real number
Returns:
ψ(x) = Σ Λ(n) for n ≤ x
"""Error function and related integrals.
def erf(x):
"""
Error function erf(x).
Args:
x: Input number
Returns:
erf(x) = (2/√π) ∫₀^x e^(-t²) dt
"""
def erfc(x):
"""
Complementary error function erfc(x).
Args:
x: Input number
Returns:
erfc(x) = 1 - erf(x)
"""
def erfi(x):
"""
Imaginary error function erfi(x).
Args:
x: Input number
Returns:
erfi(x) = -i * erf(ix)
"""
def erfinv(x):
"""
Inverse error function.
Args:
x: Input number (-1 < x < 1)
Returns:
Inverse of erf(x)
"""
def npdf(x, mu=0, sigma=1):
"""
Normal probability density function.
Args:
x: Input value
mu: Mean (default 0)
sigma: Standard deviation (default 1)
Returns:
PDF of normal distribution
"""
def ncdf(x, mu=0, sigma=1):
"""
Normal cumulative distribution function.
Args:
x: Input value
mu: Mean (default 0)
sigma: Standard deviation (default 1)
Returns:
CDF of normal distribution
"""Exponential integral and related functions.
def expint(n, x):
"""
Exponential integral E_n(x).
Args:
n: Order
x: Input number
Returns:
E_n(x) = ∫₁^∞ e^(-xt)/t^n dt
"""
def e1(x):
"""
Exponential integral E₁(x).
Args:
x: Input number
Returns:
E₁(x) = ∫_x^∞ e^(-t)/t dt
"""
def ei(x):
"""
Exponential integral Ei(x).
Args:
x: Input number
Returns:
Ei(x) = ∫_{-∞}^x e^t/t dt
"""
def li(x):
"""
Logarithmic integral li(x).
Args:
x: Input number
Returns:
li(x) = ∫₀^x dt/ln(t)
"""
def ci(x):
"""
Cosine integral Ci(x).
Args:
x: Input number
Returns:
Ci(x) = -∫_x^∞ cos(t)/t dt
"""
def si(x):
"""
Sine integral Si(x).
Args:
x: Input number
Returns:
Si(x) = ∫₀^x sin(t)/t dt
"""
def chi(x):
"""
Hyperbolic cosine integral Chi(x).
Args:
x: Input number
Returns:
Chi(x) = ∫₀^x (cosh(t)-1)/t dt
"""
def shi(x):
"""
Hyperbolic sine integral Shi(x).
Args:
x: Input number
Returns:
Shi(x) = ∫₀^x sinh(t)/t dt
"""The Lambert W function and related inverse special functions.
def lambertw(z, k=0):
"""
Lambert W function W_k(z), the inverse of f(w) = w*exp(w).
Args:
z: Input number
k: Branch index (integer), default 0
Returns:
W_k(z) such that W_k(z) * exp(W_k(z)) = z
"""Fresnel sine and cosine integrals.
def fresnels(x):
"""
Fresnel sine integral S(x).
Args:
x: Input number
Returns:
S(x) = ∫₀^x sin(πt²/2) dt
"""
def fresnelc(x):
"""
Fresnel cosine integral C(x).
Args:
x: Input number
Returns:
C(x) = ∫₀^x cos(πt²/2) dt
"""Bessel functions of various kinds.
def besselj(n, x):
"""
Bessel function of the first kind J_n(x).
Args:
n: Order
x: Argument
Returns:
J_n(x)
"""
def j0(x):
"""
Bessel function J₀(x).
Args:
x: Argument
Returns:
J₀(x)
"""
def j1(x):
"""
Bessel function J₁(x).
Args:
x: Argument
Returns:
J₁(x)
"""
def bessely(n, x):
"""
Bessel function of the second kind Y_n(x).
Args:
n: Order
x: Argument
Returns:
Y_n(x)
"""
def besseli(n, x):
"""
Modified Bessel function of the first kind I_n(x).
Args:
n: Order
x: Argument
Returns:
I_n(x)
"""
def besselk(n, x):
"""
Modified Bessel function of the second kind K_n(x).
Args:
n: Order
x: Argument
Returns:
K_n(x)
"""
def hankel1(n, x):
"""
Hankel function of the first kind H₁_n(x).
Args:
n: Order
x: Argument
Returns:
H₁_n(x) = J_n(x) + i*Y_n(x)
"""
def hankel2(n, x):
"""
Hankel function of the second kind H₂_n(x).
Args:
n: Order
x: Argument
Returns:
H₂_n(x) = J_n(x) - i*Y_n(x)
"""
def besseljzero(n, k):
"""
kth zero of Bessel function J_n(x).
Args:
n: Order
k: Zero index (1, 2, 3, ...)
Returns:
kth positive zero of J_n(x)
"""
def besselyzero(n, k):
"""
kth zero of Bessel function Y_n(x).
Args:
n: Order
k: Zero index (1, 2, 3, ...)
Returns:
kth positive zero of Y_n(x)
"""Generalized hypergeometric functions.
def hyper(a_s, b_s, z):
"""
Generalized hypergeometric function.
Args:
a_s: List of numerator parameters
b_s: List of denominator parameters
z: Argument
Returns:
pFq hypergeometric function
"""
def hyp0f1(b, z):
"""
Confluent hypergeometric limit function ₀F₁(;b;z).
Args:
b: Parameter
z: Argument
Returns:
₀F₁(;b;z)
"""
def hyp1f1(a, b, z):
"""
Confluent hypergeometric function ₁F₁(a;b;z).
Args:
a, b: Parameters
z: Argument
Returns:
₁F₁(a;b;z) = M(a,b,z)
"""
def hyp2f1(a, b, c, z):
"""
Gauss hypergeometric function ₂F₁(a,b;c;z).
Args:
a, b, c: Parameters
z: Argument
Returns:
₂F₁(a,b;c;z)
"""
def hyperu(a, b, z):
"""
Confluent hypergeometric function of the second kind U(a,b,z).
Args:
a, b: Parameters
z: Argument
Returns:
U(a,b,z)
"""
def meijerg(a_s, b_s, z):
"""
Meijer G-function.
Args:
a_s: List of a-parameters
b_s: List of b-parameters
z: Argument
Returns:
Meijer G-function
"""
def appellf1(a, b1, b2, c, x, y):
"""
Appell hypergeometric function F₁.
Args:
a, b1, b2, c: Parameters
x, y: Arguments
Returns:
F₁(a;b₁,b₂;c;x,y)
"""
def appellf2(a, b1, b2, c1, c2, x, y):
"""
Appell hypergeometric function F₂.
Args:
a, b1, b2, c1, c2: Parameters
x, y: Arguments
Returns:
F₂(a;b₁,b₂;c₁,c₂;x,y)
"""
def appellf3(a1, a2, b1, b2, c, x, y):
"""
Appell hypergeometric function F₃.
Args:
a1, a2, b1, b2, c: Parameters
x, y: Arguments
Returns:
F₃(a₁,a₂;b₁,b₂;c;x,y)
"""
def appellf4(a, b, c1, c2, x, y):
"""
Appell hypergeometric function F₄.
Args:
a, b, c1, c2: Parameters
x, y: Arguments
Returns:
F₄(a,b;c₁,c₂;x,y)
"""
def hyp1f2(a, b1, b2, z):
"""
Hypergeometric function ₁F₂(a;b₁,b₂;z).
Args:
a: Numerator parameter
b1, b2: Denominator parameters
z: Argument
Returns:
₁F₂(a;b₁,b₂;z)
"""
def hyp2f2(a1, a2, b1, b2, z):
"""
Hypergeometric function ₂F₂(a₁,a₂;b₁,b₂;z).
Args:
a1, a2: Numerator parameters
b1, b2: Denominator parameters
z: Argument
Returns:
₂F₂(a₁,a₂;b₁,b₂;z)
"""
def hyp2f0(a1, a2, z):
"""
Hypergeometric function ₂F₀(a₁,a₂;;z).
Args:
a1, a2: Numerator parameters
z: Argument
Returns:
₂F₀(a₁,a₂;;z)
"""
def hyp2f3(a1, a2, b1, b2, b3, z):
"""
Hypergeometric function ₂F₃(a₁,a₂;b₁,b₂,b₃;z).
Args:
a1, a2: Numerator parameters
b1, b2, b3: Denominator parameters
z: Argument
Returns:
₂F₃(a₁,a₂;b₁,b₂,b₃;z)
"""
def hyp3f2(a1, a2, a3, b1, b2, z):
"""
Hypergeometric function ₃F₂(a₁,a₂,a₃;b₁,b₂;z).
Args:
a1, a2, a3: Numerator parameters
b1, b2: Denominator parameters
z: Argument
Returns:
₃F₂(a₁,a₂,a₃;b₁,b₂;z)
"""
def hyper2d(a_s, b_s, z1, z2):
"""
2D hypergeometric function.
Args:
a_s: List of numerator parameters
b_s: List of denominator parameters
z1, z2: Arguments
Returns:
2D hypergeometric function
"""
def bihyper(a_s, b_s, z):
"""
Bilateral hypergeometric function.
Args:
a_s: List of a-parameters
b_s: List of b-parameters
z: Argument
Returns:
Bilateral hypergeometric series
"""
def hypercomb(a_s, b_s, z_s, **kwargs):
"""
Linear combination of hypergeometric functions.
Args:
a_s: List of a-parameter lists
b_s: List of b-parameter lists
z_s: List of arguments
**kwargs: Additional options
Returns:
Linear combination result
"""Classical orthogonal polynomials and related functions.
def legendre(n, x):
"""
Legendre polynomial P_n(x).
Args:
n: Degree (non-negative integer)
x: Argument
Returns:
P_n(x)
"""
def legenp(n, m, x):
"""
Associated Legendre function of the first kind P_n^m(x).
Args:
n: Degree
m: Order
x: Argument
Returns:
P_n^m(x)
"""
def legenq(n, m, x):
"""
Associated Legendre function of the second kind Q_n^m(x).
Args:
n: Degree
m: Order
x: Argument
Returns:
Q_n^m(x)
"""
def chebyt(n, x):
"""
Chebyshev polynomial of the first kind T_n(x).
Args:
n: Degree
x: Argument
Returns:
T_n(x) = cos(n*arccos(x))
"""
def chebyu(n, x):
"""
Chebyshev polynomial of the second kind U_n(x).
Args:
n: Degree
x: Argument
Returns:
U_n(x) = sin((n+1)*arccos(x))/sin(arccos(x))
"""
def hermite(n, x):
"""
Hermite polynomial H_n(x).
Args:
n: Degree (non-negative integer)
x: Argument
Returns:
H_n(x) (physicist's convention)
"""
def laguerre(n, a, x):
"""
Generalized Laguerre polynomial L_n^(a)(x).
Args:
n: Degree
a: Parameter (default 0 for simple Laguerre)
x: Argument
Returns:
L_n^(a)(x)
"""
def gegenbauer(n, a, x):
"""
Gegenbauer (ultraspherical) polynomial C_n^(a)(x).
Args:
n: Degree
a: Parameter
x: Argument
Returns:
C_n^(a)(x)
"""
def spherharm(l, m, theta, phi):
"""
Spherical harmonic Y_l^m(θ,φ).
Args:
l: Degree (l ≥ 0)
m: Order (|m| ≤ l)
theta: Polar angle (0 ≤ θ ≤ π)
phi: Azimuthal angle (0 ≤ φ < 2π)
Returns:
Y_l^m(θ,φ)
"""
def jacobi(n, a, b, x):
"""
Jacobi polynomial P_n^(a,b)(x).
Args:
n: Degree
a, b: Parameters (a, b > -1)
x: Argument
Returns:
P_n^(a,b)(x)
"""Parabolic cylinder functions and related Weber functions.
def pcfd(n, z):
"""
Parabolic cylinder function D_n(z).
Args:
n: Order
z: Argument
Returns:
D_n(z)
"""
def pcfu(a, x):
"""
Parabolic cylinder function U(a,x).
Args:
a: Parameter
x: Argument
Returns:
U(a,x)
"""
def pcfv(a, x):
"""
Parabolic cylinder function V(a,x).
Args:
a: Parameter
x: Argument
Returns:
V(a,x)
"""
def pcfw(a, x):
"""
Parabolic cylinder function W(a,x).
Args:
a: Parameter
x: Argument
Returns:
W(a,x)
"""Airy functions and their zeros.
def airyai(z):
"""
Airy function Ai(z).
Args:
z: Argument (real or complex)
Returns:
Ai(z)
"""
def airybi(z):
"""
Airy function Bi(z).
Args:
z: Argument (real or complex)
Returns:
Bi(z)
"""
def airyaizero(k):
"""
kth zero of Airy function Ai(x).
Args:
k: Zero index (1, 2, 3, ...)
Returns:
kth negative zero of Ai(x)
"""
def airybizero(k):
"""
kth zero of Airy function Bi(x).
Args:
k: Zero index (1, 2, 3, ...)
Returns:
kth negative zero of Bi(x)
"""
def scorergi(z):
"""
Scorer function Gi(z).
Args:
z: Argument
Returns:
Gi(z)
"""
def scorerhi(z):
"""
Scorer function Hi(z).
Args:
z: Argument
Returns:
Hi(z)
"""Additional Bessel function variants and related cylindrical functions.
def struveh(n, z):
"""
Struve function H_n(z).
Args:
n: Order
z: Argument
Returns:
H_n(z)
"""
def struvel(n, z):
"""
Modified Struve function L_n(z).
Args:
n: Order
z: Argument
Returns:
L_n(z)
"""
def angerj(n, z):
"""
Anger function J_n(z).
Args:
n: Order
z: Argument
Returns:
J_n(z)
"""
def webere(n, z):
"""
Weber function E_n(z).
Args:
n: Order
z: Argument
Returns:
E_n(z)
"""
def lommels1(mu, nu, z):
"""
Lommel function s_μ,ν(z).
Args:
mu, nu: Parameters
z: Argument
Returns:
s_μ,ν(z)
"""
def lommels2(mu, nu, z):
"""
Lommel function S_μ,ν(z).
Args:
mu, nu: Parameters
z: Argument
Returns:
S_μ,ν(z)
"""
def whitm(k, m, z):
"""
Whittaker function M_k,m(z).
Args:
k, m: Parameters
z: Argument
Returns:
M_k,m(z)
"""
def whitw(k, m, z):
"""
Whittaker function W_k,m(z).
Args:
k, m: Parameters
z: Argument
Returns:
W_k,m(z)
"""
def ber(n, x):
"""
Kelvin function ber_n(x).
Args:
n: Order
x: Argument (real)
Returns:
ber_n(x)
"""
def bei(n, x):
"""
Kelvin function bei_n(x).
Args:
n: Order
x: Argument (real)
Returns:
bei_n(x)
"""
def ker(n, x):
"""
Kelvin function ker_n(x).
Args:
n: Order
x: Argument (real)
Returns:
ker_n(x)
"""
def kei(n, x):
"""
Kelvin function kei_n(x).
Args:
n: Order
x: Argument (real)
Returns:
kei_n(x)
"""
def coulombc(l, eta):
"""
Coulomb wave function phase shift C_l(η).
Args:
l: Angular momentum quantum number
eta: Sommerfeld parameter
Returns:
C_l(η)
"""
def coulombf(l, eta, rho):
"""
Regular Coulomb wave function F_l(η,ρ).
Args:
l: Angular momentum quantum number
eta: Sommerfeld parameter
rho: Radial parameter
Returns:
F_l(η,ρ)
"""
def coulombg(l, eta, rho):
"""
Irregular Coulomb wave function G_l(η,ρ).
Args:
l: Angular momentum quantum number
eta: Sommerfeld parameter
rho: Radial parameter
Returns:
G_l(η,ρ)
"""Extended elliptic functions beyond the basic ones.
def elliprc(x, y):
"""
Carlson elliptic integral RC(x,y).
Args:
x, y: Arguments
Returns:
RC(x,y) = ∫₀^∞ dt/((t+x)√(t+y))/2
"""
def elliprj(x, y, z, p):
"""
Carlson elliptic integral RJ(x,y,z,p).
Args:
x, y, z, p: Arguments
Returns:
RJ(x,y,z,p)
"""
def elliprf(x, y, z):
"""
Carlson elliptic integral RF(x,y,z).
Args:
x, y, z: Arguments
Returns:
RF(x,y,z)
"""
def elliprd(x, y, z):
"""
Carlson elliptic integral RD(x,y,z).
Args:
x, y, z: Arguments
Returns:
RD(x,y,z)
"""
def elliprg(x, y, z):
"""
Carlson elliptic integral RG(x,y,z).
Args:
x, y, z: Arguments
Returns:
RG(x,y,z)
"""
def jacobi(kind, u, m):
"""
Jacobi elliptic functions sn, cn, dn.
Args:
kind: Function type ('sn', 'cn', 'dn', 'ns', 'nc', 'nd', etc.)
u: Argument
m: Parameter (0 ≤ m ≤ 1)
Returns:
Specified Jacobi elliptic function
"""
def agm(a, b):
"""
Arithmetic-geometric mean of a and b.
Args:
a, b: Arguments
Returns:
AGM(a,b)
"""Additional functions related to number theory and special sequences.
def bell(n):
"""
Bell number B_n.
Args:
n: Non-negative integer
Returns:
B_n (number of partitions of set with n elements)
"""
def polyexp(s, z):
"""
Polyexponential function.
Args:
s: Parameter
z: Argument
Returns:
Polyexponential Exp_s(z)
"""
def stirling1(n, k):
"""
Stirling number of the first kind.
Args:
n, k: Non-negative integers
Returns:
s(n,k) - unsigned Stirling number of first kind
"""
def stirling2(n, k):
"""
Stirling number of the second kind.
Args:
n, k: Non-negative integers
Returns:
S(n,k) - Stirling number of second kind
"""
def fibonacci(n):
"""
Fibonacci number F_n.
Args:
n: Integer (can be negative)
Returns:
F_n (Fibonacci number)
"""
def fib(n):
"""
Fibonacci number (alias for fibonacci).
Args:
n: Integer
Returns:
F_n
"""
def nzeros(t):
"""
Number of zeta zeros with imaginary part ≤ t.
Args:
t: Real number
Returns:
Count of Riemann zeta zeros
"""
def backlunds(t):
"""
Bounds from Backlund's theorem for zeta zeros.
Args:
t: Real number
Returns:
Backlund bounds
"""
def bernoulli(n):
"""
Bernoulli number B_n.
Args:
n: Non-negative integer
Returns:
B_n (Bernoulli number)
"""
def bernfrac(n):
"""
Bernoulli number as exact fraction.
Args:
n: Non-negative integer
Returns:
B_n as fraction
"""
def bernpoly(n, x):
"""
Bernoulli polynomial B_n(x).
Args:
n: Non-negative integer
x: Argument
Returns:
B_n(x) (Bernoulli polynomial)
"""
def eulernum(n):
"""
Euler number E_n.
Args:
n: Non-negative integer
Returns:
E_n (Euler number)
"""
def eulerpoly(n, x):
"""
Euler polynomial E_n(x).
Args:
n: Non-negative integer
x: Argument
Returns:
E_n(x) (Euler polynomial)
"""
def harmonic(n):
"""
Harmonic number H_n.
Args:
n: Positive integer or real number
Returns:
H_n = 1 + 1/2 + ... + 1/n
"""
def cyclotomic(n, x):
"""
Cyclotomic polynomial Φ_n(x).
Args:
n: Positive integer
x: Argument
Returns:
Φ_n(x) (cyclotomic polynomial)
"""
def unitroots(n):
"""
List of n-th roots of unity.
Args:
n: Positive integer
Returns:
List of complex n-th roots of unity
"""
def barnesg(z):
"""
Barnes G-function G(z).
Args:
z: Input number
Returns:
G(z) (Barnes G-function)
"""
def superfac(n):
"""
Superfactorial of n.
Args:
n: Non-negative integer
Returns:
1! × 2! × ... × n!
"""
def hyperfac(n):
"""
Hyperfactorial of n.
Args:
n: Non-negative integer
Returns:
1^1 × 2^2 × ... × n^n
"""
def clsin(x):
"""
Clausen sine function Cl_2(x).
Args:
x: Input number
Returns:
Cl_2(x) = -∫₀^x ln|2sin(t/2)| dt
"""
def clcos(x):
"""
Clausen cosine function.
Args:
x: Input number
Returns:
Clausen cosine function
"""
def gammainc(s, a, b=None):
"""
Incomplete gamma function.
Args:
s: Parameter
a: Lower limit
b: Upper limit (optional)
Returns:
Incomplete gamma function
"""
def gammaprod(a_s, b_s):
"""
Product of gamma functions.
Args:
a_s: List of numerator arguments
b_s: List of denominator arguments
Returns:
∏Γ(a_i) / ∏Γ(b_j)
"""
def grampoint(n):
"""
n-th Gram point.
Args:
n: Integer
Returns:
n-th Gram point
"""
def siegeltheta(t):
"""
Siegel theta function.
Args:
t: Real number
Returns:
ϑ(t) (Siegel theta function)
"""
def siegelz(t):
"""
Siegel Z function.
Args:
t: Real number
Returns:
Z(t) (Siegel Z function)
"""
def zetazero(n):
"""
n-th zero of Riemann zeta function.
Args:
n: Positive integer
Returns:
n-th nontrivial zero of ζ(s)
"""import mpmath
from mpmath import mp
# Set precision
mp.dps = 25
# Gamma function examples
print(f"Γ(5) = {mp.gamma(5)}") # Should be 4! = 24
print(f"Γ(0.5) = {mp.gamma(0.5)}") # Should be √π
print(f"Γ(1/3) = {mp.gamma(mp.mpf(1)/3)}")
# Zeta function
print(f"ζ(2) = {mp.zeta(2)}") # Should be π²/6
print(f"ζ(3) = {mp.zeta(3)}") # Apéry's constant
# Error function
print(f"erf(1) = {mp.erf(1)}")
print(f"erfc(1) = {mp.erfc(1)}")
# Bessel functions
print(f"J₀(1) = {mp.j0(1)}")
print(f"J₁(1) = {mp.j1(1)}")
print(f"Y₀(1) = {mp.bessely(0, 1)}")
# Complex arguments work
z = mp.mpc(1, 1)
print(f"Γ(1+i) = {mp.gamma(z)}")
print(f"J₀(1+i) = {mp.besselj(0, z)}")
# Hypergeometric functions
print(f"₁F₁(1;2;1) = {mp.hyp1f1(1, 2, 1)}")
print(f"₂F₁(1,1;2;0.5) = {mp.hyp2f1(1, 1, 2, 0.5)}")
# Number theory functions
print(f"π(100) = {mp.primepi(100)}") # Number of primes ≤ 100
# Orthogonal polynomials
print(f"P₂(0.5) = {mp.legendre(2, 0.5)}") # Legendre polynomial
print(f"T₃(0.5) = {mp.chebyt(3, 0.5)}") # Chebyshev polynomial
print(f"H₂(1) = {mp.hermite(2, 1)}") # Hermite polynomial
# Elliptic functions
print(f"K(0.5) = {mp.ellipk(0.5)}") # Complete elliptic integral
print(f"sn(1, 0.5) = {mp.jacobi('sn', 1, 0.5)}") # Jacobi elliptic function
# Airy functions
print(f"Ai(1) = {mp.airyai(1)}")
print(f"Bi(1) = {mp.airybi(1)}")
# Additional Bessel function variants
print(f"H₀⁽¹⁾(1) = {mp.hankel1(0, 1)}") # Hankel function
print(f"I₀(1) = {mp.besseli(0, 1)}") # Modified Bessel I
print(f"K₀(1) = {mp.besselk(0, 1)}") # Modified Bessel K
# Special values and identities
print(f"Γ(1/2) = {mp.gamma(0.5)}")
print(f"√π = {mp.sqrt(mp.pi)}")
print(f"Difference: {mp.gamma(0.5) - mp.sqrt(mp.pi)}")