Real and complex numbers (Arb) : detailed table of contents¶
General information¶
Example programs¶
Floating-point numbers¶
Arb uses two custom floating-point types in its implementation of ball arithmetic. The radius of a ball is represented using the type mag_t which is unsigned and has a fixed precision. The midpoint is represented using the type arf_t which has arbitrary precision.
- mag.h – fixed-precision unsigned floating-point numbers for bounds
- arf.h – arbitrary-precision floating-point numbers
- Types, macros and constants
- Memory management
- Special values
- Assignment, rounding and conversions
- Comparisons and bounds
- Magnitude functions
- Shallow assignment
- Random number generation
- Input and output
- Addition and multiplication
- Summation
- Dot products
- Division
- Square roots
- Complex arithmetic
- Low-level methods
Real and complex numbers¶
Real numbers (arb_t) are represented as midpoint-radius intervals, also known as balls. Complex numbers (acb_t) are represented in rectangular form, with arb_t balls for the real and imaginary parts.
- arb.h – real numbers
- Types, macros and constants
- Memory management
- Assignment and rounding
- Assignment of special values
- Input and output
- Random number generation
- Radius and interval operations
- Comparisons
- Arithmetic
- Dot product
- Powers and roots
- Exponentials and logarithms
- Trigonometric functions
- Inverse trigonometric functions
- Hyperbolic functions
- Inverse hyperbolic functions
- Constants
- Lambert W function
- Gamma function and factorials
- Zeta function
- Bernoulli numbers and polynomials
- Polylogarithms
- Other special functions
- Internals for computing elementary functions
- Vector functions
- acb.h – complex numbers
- Types, macros and constants
- Memory management
- Basic manipulation
- Input and output
- Random number generation
- Precision and comparisons
- Complex parts
- Arithmetic
- Dot product
- Mathematical constants
- Powers and roots
- Exponentials and logarithms
- Trigonometric functions
- Inverse trigonometric functions
- Hyperbolic functions
- Inverse hyperbolic functions
- Lambert W function
- Rising factorials
- Gamma function
- Zeta function
- Polylogarithms
- Arithmetic-geometric mean
- Other special functions
- Piecewise real functions
- Vector functions
Polynomials and power series¶
These modules implement dense univariate polynomials with real and complex coefficients. Truncated power series are supported via methods acting on polynomials, without introducing a separate power series type.
- arb_poly.h – polynomials over the real numbers
- Types, macros and constants
- Memory management
- Basic manipulation
- Conversions
- Input and output
- Random generation
- Comparisons
- Bounds
- Arithmetic
- Composition
- Evaluation
- Product trees
- Multipoint evaluation
- Interpolation
- Differentiation
- Transforms
- Powers and elementary functions
- Lambert W function
- Gamma function and factorials
- Zeta function
- Root-finding
- Other special polynomials
- acb_poly.h – polynomials over the complex numbers
- Types, macros and constants
- Memory management
- Basic properties and manipulation
- Input and output
- Random generation
- Comparisons
- Conversions
- Bounds
- Arithmetic
- Composition
- Evaluation
- Product trees
- Multipoint evaluation
- Interpolation
- Differentiation
- Transforms
- Elementary functions
- Lambert W function
- Gamma function
- Power sums
- Zeta function
- Other special functions
- Root-finding
Transforms¶
Matrices¶
These modules implement dense matrices with real and complex coefficients. Rudimentary linear algebra is supported.
- arb_mat.h – matrices over the real numbers
- Types, macros and constants
- Memory management
- Conversions
- Random generation
- Input and output
- Comparisons
- Special matrices
- Transpose
- Norms
- Arithmetic
- Scalar arithmetic
- Vector arithmetic
- Gaussian elimination and solving
- Cholesky decomposition and solving
- Characteristic polynomial and companion matrix
- Special functions
- Sparsity structure
- Component and error operations
- Eigenvalues and eigenvectors
- LLL reduction
- acb_mat.h – matrices over the complex numbers
- Types, macros and constants
- Memory management
- Conversions
- Random generation
- Input and output
- Comparisons
- Special matrices
- Transpose
- Norms
- Arithmetic
- Scalar arithmetic
- Vector arithmetic
- Gaussian elimination and solving
- Characteristic polynomial and companion matrix
- Special functions
- Component and error operations
- Eigenvalues and eigenvectors
Special functions¶
These modules implement mathematical functions with complexity that goes beyond the basics covered directly in the arb and acb modules.
- acb_hypgeom.h – hypergeometric functions of complex variables
- Rising factorials
- Gamma function
- Convergent series
- Asymptotic series
- Generalized hypergeometric function
- Confluent hypergeometric functions
- Error functions and Fresnel integrals
- Bessel functions
- Modified Bessel functions
- Airy functions
- Coulomb wave functions
- Incomplete gamma and beta functions
- Exponential and trigonometric integrals
- Gauss hypergeometric function
- Orthogonal polynomials and functions
- Dilogarithm
- arb_hypgeom.h – hypergeometric functions of real variables
- Rising factorials
- Gamma function
- Binomial coefficients
- Generalized hypergeometric function
- Confluent hypergeometric functions
- Gauss hypergeometric function
- Error functions and Fresnel integrals
- Incomplete gamma and beta functions
- Exponential and trigonometric integrals
- Bessel functions
- Airy functions
- Coulomb wave functions
- Orthogonal polynomials and functions
- Dilogarithm
- Hypergeometric sums
- acb_elliptic.h – elliptic integrals and functions of complex variables
- acb_modular.h – modular forms of complex variables
- acb_theta.h – Riemann theta functions
- Main user functions
- Example of usage
- The Siegel modular group
- The Siegel half space
- Theta characteristics
- Ellipsoids: types and macros
- Ellipsoids: memory management and computations
- Naive algorithms: error bounds
- Naive algorithms: main functions
- Naive algorithms for derivatives
- Quasi-linear algorithms: presentation
- Quasi-linear algorithms: distances
- Quasi-linear algorithms: AGM steps
- Quasi-linear algorithms: main functions
- Quasi-linear algorithms: derivatives
- The transformation formula
- Dimension 2 specifics
- Tests
- Profiling
- dirichlet.h – Dirichlet characters
- acb_dirichlet.h – Dirichlet L-functions, Riemann zeta and related functions
- Roots of unity
- Truncated L-series and power sums
- Riemann zeta function
- Riemann-Siegel formula
- Hurwitz zeta function
- Hurwitz zeta function precomputation
- Lerch transcendent
- Stieltjes constants
- Dirichlet character evaluation
- Dirichlet character Gauss, Jacobi and theta sums
- Discrete Fourier transforms
- Dirichlet L-functions
- Hardy Z-functions
- Gram points
- Riemann zeta function zeros
- Riemann zeta function zeros (Platt’s method)
- bernoulli.h – support for Bernoulli numbers
- hypgeom.h – support for hypergeometric series
- partitions.h – computation of the partition function
Calculus¶
Using ball arithmetic, it is possible to do rigorous root-finding and integration (among other operations) with generic functions. This code should be considered experimental.
Wrappers¶
Floating-point wrappers for Arb functions.
Extra utility modules¶
Mainly for internal use.
Supplementary algorithm notes¶
Here, we give extra proofs, error bounds, and formulas that would be too lengthy to reproduce in the documentation for each module.