FLINT: Fast Library for Number Theory¶
Welcome to FLINT’s documentation! FLINT is a C library for doing number theory.
Website: https://flintlib.org
Source code on GitHub: https://github.com/flintlib/flint
Issue tracker: https://github.com/flintlib/flint/issues
Mailing list: https://groups.google.com/group/flint-devel
FLINT is free software distributed under the GNU Lesser General Public License (LGPL), version 3 or later.
Introduction¶
General utilities¶
Generic rings¶
- gr.h – generic structures and their elements
- gr.h (continued) – implementing rings
- gr.h (continued) – builtin domains and types
- gr_generic.h – basic algorithms and fallback implementations for generic elements
- gr_special.h – special arithmetic and transcendental functions
- gr_vec.h – vectors over generic rings
- gr_mat.h – dense matrices over generic rings
- gr_poly.h – dense univariate polynomials over generic rings
- gr_mpoly.h – sparse multivariate polynomials over generic rings
Integers¶
- ulong_extras.h – arithmetic and number-theoretic functions for single-word integers
- fmpz.h – integers
- fmpz_vec.h – vectors of integers
- fmpz_factor.h – integer factorisation
- fmpz_mat.h – matrices over the integers
- fmpz_lll.h – LLL reduction
- fmpz_poly.h – univariate polynomials over the integers
- fmpz_poly_mat.h – matrices of polynomials over the integers
- fmpz_poly_factor.h – factorisation of polynomials over the integers
- fmpz_mpoly.h – multivariate polynomials over the integers
- fmpz_mpoly_factor.h – factorisation of multivariate polynomials over the integers
- long_extras.h – support functions for signed word arithmetic
- longlong.h – support functions for multi-word arithmetic
- mpn_extras.h – support functions for limb arrays
- aprcl.h – APRCL primality testing
- arith.h – arithmetic and special functions
- fft.h – Schoenhage-Strassen FFT
- fft_small.h – FFT modulo word-size primes
- qsieve.h – Quadratic sieve
Rational numbers¶
- fmpq.h – rational numbers
- fmpq_vec.h – vectors over rational numbers
- fmpq_mat.h – matrices over the rational numbers
- fmpq_poly.h – univariate polynomials over the rational numbers
- fmpq_mpoly_factor.h – factorisation of multivariate polynomials over the rational numbers
- fmpq_mpoly.h – multivariate polynomials over the rational numbers
- fmpz_poly_q.h – rational functions over the rational numbers
- fmpz_mpoly_q.h – multivariate rational functions over Q
Integers mod n¶
- nmod.h – integers mod n (word-size n)
- nmod_vec.h – vectors over integers mod n (word-size n)
- nmod_mat.h – matrices over integers mod n (word-size n)
- nmod_poly.h – univariate polynomials over integers mod n (word-size n)
- nmod_poly_mat.h – matrices of univariate polynomials over integers mod n (word-size n)
- nmod_poly_factor.h – factorisation of univariate polynomials over integers mod n (word-size n)
- nmod_mpoly.h – multivariate polynomials over integers mod n (word-size n)
- nmod_mpoly_factor.h – factorisation of multivariate polynomials over integers mod n (word-size n)
- mpn_mod.h – integers mod n (packed multi-word n)
- fmpz_mod.h – arithmetic modulo integers
- fmpz_mod_vec.h – vectors over integers mod n
- fmpz_mod_mat.h – matrices over integers mod n
- fmpz_mod_poly.h – polynomials over integers mod n
- fmpz_mod_poly_factor.h – factorisation of polynomials over integers mod n
- fmpz_mod_mpoly.h – polynomials over the integers mod n
- fmpz_mod_mpoly_factor.h – factorisation of multivariate polynomials over the integers mod n
Groups and other structures¶
Number fields and algebraic numbers¶
Real and complex numbers¶
- Feature overview
- Using ball arithmetic
- Technical conventions and potential issues
- Arb example programs
- mag.h – fixed-precision unsigned floating-point numbers for bounds
- nfloat.h – packed floating-point numbers with n-word precision
- arf.h – arbitrary-precision floating-point numbers
- acf.h – complex floating-point numbers
- arb.h – real numbers
- acb.h – complex numbers
- arb_poly.h – polynomials over the real numbers
- acb_poly.h – polynomials over the complex numbers
- arb_fmpz_poly.h – extra methods for integer polynomials
- acb_dft.h – Discrete Fourier transform
- arb_mat.h – matrices over the real numbers
- acb_mat.h – matrices over the complex numbers
- acb_hypgeom.h – hypergeometric functions of complex variables
- arb_hypgeom.h – hypergeometric functions of real variables
- acb_elliptic.h – elliptic integrals and functions of complex variables
- acb_modular.h – modular forms of complex variables
- acb_theta.h – Riemann theta functions
- acb_dirichlet.h – Dirichlet L-functions, Riemann zeta and related functions
- bernoulli.h – support for Bernoulli numbers
- hypgeom.h – support for hypergeometric series
- partitions.h – computation of the partition function
- arb_calc.h – calculus with real-valued functions
- acb_calc.h – calculus with complex-valued functions
- arb_fpwrap.h – floating-point wrappers of Arb mathematical functions
- fmpz_extras.h – extra methods for FLINT integers
- General formulas and bounds
- Algorithms for mathematical constants
- Algorithms for the gamma function
- Algorithms for the Hurwitz zeta function
- Algorithms for polylogarithms
- Algorithms for hypergeometric functions
- Algorithms for the arithmetic-geometric mean
Exact real and complex numbers¶
- Introduction
- Calcium example programs
- calcium.h – global definitions
- ca.h – exact real and complex numbers
- ca_vec.h – vectors of real and complex numbers
- ca_poly.h – dense univariate polynomials over the real and complex numbers
- ca_mat.h – matrices over the real and complex numbers
- ca_ext.h – real and complex extension numbers
- ca_field.h – extension fields
- fexpr.h – flat-packed symbolic expressions
- fexpr_builtin.h – builtin symbols
Finite fields¶
- fq.h – finite fields
- fq_default.h – unified finite fields
- fq_vec.h – vectors over finite fields
- fq_mat.h – matrices over finite fields
- fq_default_mat.h – matrices over finite fields
- fq_poly.h – univariate polynomials over finite fields
- fq_default_poly.h – univariate polynomials over finite fields
- fq_poly_factor.h – factorisation of univariate polynomials over finite fields
- fq_default_poly_factor.h – factorisation of univariate polynomials over finite fields
- fq_embed.h – Computing isomorphisms and embeddings of finite fields
- fq_nmod.h – finite fields (word-size characteristic)
- fq_nmod_vec.h – vectors over finite fields (word-size characteristic)
- fq_nmod_mat.h – matrices over finite fields (word-size characteristic)
- fq_nmod_poly.h – univariate polynomials over finite fields (word-size characteristic)
- fq_nmod_poly_factor.h – factorisation of univariate polynomials over finite fields (word-size characteristic)
- fq_nmod_embed.h – Computing isomorphisms and embeddings of finite fields
- fq_nmod_mpoly.h – multivariate polynomials over finite fields of word-sized characteristic
- fq_nmod_mpoly_factor.h – factorisation of multivariate polynomials over finite fields of word-sized characteristic
- fq_zech.h – finite fields (Zech logarithm representation)
- fq_zech_vec.h – vectors over finite fields (Zech logarithm representation)
- fq_zech_mat.h – matrices over finite fields (Zech logarithm representation)
- fq_zech_poly.h – univariate polynomials over finite fields (Zech logarithm representation)
- fq_zech_poly_factor.h – factorisation of univariate polynomials over finite fields (Zech logarithm representation)
- fq_zech_embed.h – Computing isomorphisms and embeddings of finite fields
p-adic numbers¶
Floating-point support code¶
- double_extras.h – support functions for double arithmetic
- double_interval.h – double-precision interval arithmetic and helpers
- d_vec.h – double precision vectors
- d_mat.h – double precision matrices
- mpfr_vec.h – vectors of MPFR floating-point numbers
- mpfr_mat.h – matrices of MPFR floating-point numbers