FLINT: Fast Library for Number Theory

Overview | News | Features | Benchmarks | Downloads | Development | Authors and credits | Links and references


FLINT is a collection of modules, with an interface similar to that of the GMP library. For example, the FLINT fmpz_poly module defines the fmpz_poly_t type (representing a polynomial with multiprecision integer coefficients) and provides methods such as fmpz_poly_add, fmpz_poly_gcd, etc.

FLINT modules

The following is a list of modules available in FLINT version 2.4, and a summary of the features and algorithms in each module. Besides the features listed explicitly, each module implementing a specific type also provides methods for arithmetic operations (add, sub, mul and so on), conversions between types, random generation, and printing. Some utility modules are omitted from the list.

Starting with FLINT 2.4, more specialised or experimental modules are also available in the form of extension libraries (see below).

flintxx - C++ wrapper

ulong_extras - functions for word-size integers

qsieve - small quadratic field

fft - optimised Schönhage-Strassen FFT

fmpz - multiprecision integers

fmpz_factor - factoring multiprecision integers

fmpz_mat - dense matrices over the integers

fmpz_lll - LLL

fmpz_mod_poly - dense univariate polynomials over Z/nZ for multiprecision n

fmpz_mod_poly_factor - factoring in (Z/nZ)[x] for multiprecision n

fmpz_poly - dense univariate polynomials over the integers

fmpz_poly_factor - factoring in Z[x]

fmpz_poly_mat - matrices over Z[x]

fmpz_poly_q - rational functions over Q

fmpq - multiprecision rational numbers

fmpq_mat - dense matrices over the rational numbers

fmpq_poly - dense univariate polynomials over the rational numbers

nmod_mat - matrices over Z/nZ for word-size n

nmod_poly - dense univariate polynomials over Z/nZ for word-size n

nmod_mod_poly_factor - factoring in (Z/nZ)[x] for word-size n

nmod_poly_mat - matrices over Z/nZ[x] for word-size n

padic - p-adic numbers

padic_poly - polynomials over the p-adic numbers

padic_mat - matrices over the p-adic numbers

qadic - unramified extensions of the p-adic numbers

fq / fq_nmod / fq_zech - finite fields F_q

fq_mat / fq_nmod_mat / fq_zech_mat - dense matrices over finite fields F_q

fq_poly / fq_nmod_poly / fq_zech_poly - dense univariate polynomials over finite fields F_q

fq_poly_factor / fq_nmod_poly_factor / fq_zech_poly_factor - factorisation of polynomials over F_q

arith - miscellaneous arithmetic functions

FLINT 1.x only

The following features are currently only available in the FLINT 1.x series, and will be ported to the FLINT 2.x series in the future (help with this is welcome).

Antic extension library

The Antic library adds support for algebraic number theory. Antic can be installed by passing --extensions=/path/to/antic to the configure script when building FLINT. Antic includes the following modules.

qfb - binary quadratic forms

nf_elem - elements of number fields

Arb extension library

The Arb library adds support for fast arbitrary-precision real and complex numbers with rigorous error control (using ball interval arithmetic). It supports polynomials, power series, matrices, and evaluation of special functions. Arb can be installed by passing --extensions=/path/to/arb to the configure script when building FLINT. Arb includes the following modules.

fmpr - binary floating-point numbers

fmprb - real numbers represented as floating-point balls

fmpcb - complex numbers

fmprb_poly - polynomials over the real numbers

fmpcb_poly - polynomials over the complex numbers

fmprb_mat - matrices over the real numbers

fmpcb_mat - matrices over the complex numbers

fmprb_calc - calculus with real-valued functions

fmpcb_calc - calculus with complex-valued functions

Other extension libraries

The following extension libraries for FLINT are experimental. They can be installed by passing --extensions=/path/to/extension1:/path/to/extension2:... to the configure script when building FLINT.

bland - recursive generics
Supports working with recursively constructed rings over several ground types. In particular, it allows working with recursive dense multivariate polynomials and matrices over generic rings.

Last updated: 2019-10-17 12:47:54 GMT

Contact: William Hart, flint-devel mailing list.