FLINT is a C library for doing number theory, maintained by William Hart.
FLINT was licensed GPL v2+ up to and including version 2.5. Our current development version (and subsequent releases) are licensed LGPL v2.1+ after the contributors agreed to change the license in April 2016.
FLINT supports arithmetic with numbers, polynomials, power series and matrices over many base rings, including:
- Multiprecision integers and rationals
- Integers modulo n
- p-adic numbers
- Finite fields (prime and non-prime order)
- Real and complex numbers (via the Arb extension library)
Support is also currently being developed for algebraic number fields (via the Antic extension library).
Operations that can be performed include conversions, arithmetic, computing GCDs, factoring, solving linear systems, and evaluating special functions. In addition, FLINT provides various low-level routines for fast arithmetic. FLINT is extensively documented and tested.
Benchmark: Time to compute a p-adic logarithm to precision 17n with FLINT, versus Magma.
FLINT is written in ANSI C and runs on many platforms (including Linux, Mac OS X and Windows on common hardware configurations), but is currently mostly optimised for x86 and x86-64 CPUs. It is designed to be threadsafe. FLINT depends on the MPIR/GMP and MPFR libraries.
FLINT has been used for large scale computations in number theory research (for example: A Trillion Triangles), and is also suited as a general-purpose backend for computer algebra systems. Sage uses FLINT as the default package for polynomial arithmetic over Z, Q and Z/nZ for small n, and work is currently underway to use FLINT in Singular and Macaulay2.