FLINT 2
FLINT 2.0, released in January 2011, was a complete rewrite of FLINT 1. The FLINT 2 series ended with version 2.9.0 in June 2022, the last release before FLINT 3.0. FLINT 2.6.0 (June 2020) added multivariate polynomials over most standard rings, APR-CL primality proving and elliptic curve factoring.
FLINT 2.9.0 (2022-06-24)#
- Add fmpz_mod_poly_div function
- Add _flint_get_memory function
- Add Eulerian polynomials
- Support "multivariate" polynomials with zero variables
- Improve Stirling numbers of both kinds
- Speed up numerous fmpz functions for small inputs
- Improve Bell numbers
- Speedups to nmod arithmetic
- Improve nmod_mat LU decomposition
- Fully separate nmod module from nmod_vec
- Speed up Hermite polynomials
- Add n-th derivative for Z[x] and Q[x]
- Improve fq_default module (nmod is now used where optimal)
- Add sqrt functions for numerous polynomial/series modules and finite fields
- Add FFT matrix multiplication
- Improve CI
- Improve LLL for general use
- Add matrix-vector products over Q
- Add can_solve function for fmpq_mat, handling non-square/singular matrices
- Document fmpz_mod_vec module
- Fix and document qadic_sqrt function
- Add parallel programming helpers
FLINT 2.8.5 (2022-04-25)#
- Fix a serious bug in LLL
FLINT 2.8.4 (2021-11-17)#
- Fix a serious bug in fmpz_mod_poly_xgcd for polynomials of large length
- Fix an assertion failure in fmpz_mat_solve_fflu (only relevant if asserts enabled)
- Fix some bugs on 32 bit machines
- Work around a compiler bug on Apple M1
- Fix bug in nmod_mpoly_factor (returned 0 for some factorisations)
- Fix some documentation build errors and some doc formatting issues
FLINT 2.8.3 (2021-11-03)#
- Fix a serious bug in nmod_poly_xgcd_hgcd, nmod_poly_xgcd, fmpz_poly_xgcd_modular, fmpz_poly_xgcd, fmpq_poly_xgcd for polynomials of length >= 340.
- Fix some copyright assignments
- Fix some documentation errors
FLINT 2.8.2 (2021-10-15)#
- Fix an issue with –disable-dependency-tracking on some distributions
FLINT 2.8.1 (2021-10-01)#
- Numerous bug fixes
- Adjust soname on android
- Allow disabling of dependency tracking
FLINT 2.8.0 (2021-07-23)#
- New fq_default module which combines existing finite fields
- Speedups for linear algebra when using BLAS and/or threading
- New series expansions with coefficients in QQ
- Faster CRT
- New fmpz_mod_mpoly module
- Polynomial factoring improvements over ZZ
- Fixed bugs in gmpcompat on Windows
- Add fmpz_mat_can_solve_fflu and fmpz_mat_can_solve
- Cleanup of the nmod_poly and nmod_poly_factor code
- Implement nmod_mat_det_howell
- Add fmpz_mod_poly_divides, fmpz_divides, n_divides, nmod_poly_divides
- Interface for multiplying matrices by vectors and arrays
- Nearest Euclidean division
- Subresultant GCD
- XGCD over ZZ with canonical Bezout coefficients
- Add fmpz_mpoly resultant and discriminant
- Add deprecations list
- Add FLINT_SGN macro
- Speedups for series computations
- Switch to GitHub Actions for CI
- Improve Taylor shift
- Numerous bug fixes and speedups
FLINT 2.7.1 (2021-01-18)#
- Fix build bug due to missing test files
- Fix bug in fmpz_mod_poly_factor when there are more than five factors
- Fix issue when using MPIR 3.0.0 on Win64 with command line build
- Fix bug in fmpz_mod_poly_div_series
- Fix some broken asserts
- Support standard GNU installation directories in CMake build
- Fix stack overflow with ICC
FLINT 2.7.0 (2020-12-18)#
- Multivariate factorisation
- Square root and square testing for finite fields
- Square root and square testing for multivariates
- Zassenhaus factoring speedups (incl. degree pruning)
- Fast factorisation of cubic univariate polynomials
- Add context objects to fmpz_mod_poly functions
- Use BLAS for matrix multiplication over Z/nZ (small n)
- Linear solving for non-square/singular matrices (can_solve)
- Speed up factorisation over Z/nZ (for multiprecision n)
FLINT 2.6.3 (2020-08-12)#
- Fix a bug in generator of finite field in characteristic 2
- Allow FLINT to work with GMP 6.1.2 and 6.2.0 interchangeably
- Fix some old license headers
FLINT 2.6.2 (2020-07-31)#
- Fix for choice of generator in an fq finite field of degree one
- Fix an incorrectly written test
FLINT 2.6.1 (2020-07-23)#
- Fix issues on Debian major architectures
- Fix numerous reported bugs (mpoly, fq_poly, mpn_mul_1, mod 2 code, etc.)
FLINT 2.6.0 (2020-06-05)#
- multivariate polynomials over most standard rings (sparse distributed)
- APR-CL primality proving
- elliptic curve integer factoring
- minpoly and charpoly
- improved quadratic sieve for integer factoring
- embeddings of finite fields
- pollard rho integer factoring
- p+1 integer factoring
- best of breed smooth integer factoring routine
- best of breed general integer factoring routine
- howell and strong echelon form
- large speedups for solve and hence inverse over Z and Q
- randprime and nextprime functions
- pernet-stein HNF improvements
- moller-granlund precomputed inverses
- resultant_modular_div
- fibonacci polynomials
- exception mechanism/flint_abort
- sqrt of series and polynomials
- division of series over Z
- power sums
- improved base cases of various power series functions
- ability to switch memory allocators
- fast recurrence for Hermite polys
- shifted Legendre polynomials
- Laguerre polynomials
- Gegenbauer polys
- sphinx documentation
- van hoeij with gradual feeding implementation of polynomial factoring over Z
- perfect power detection
- divisibility testing for polynomials
- fast block based memory manager for bundling fmpz allocations
- uniform random generation
- CMake build system
- linear algebra speedups when everything can be kept in longs
- nmod module for integers mod (small) n
- fmpz_mod_mat module for matrices over integers mod multiprecision n
- kronecker product (tensor product)
- random primitive polys (for finite fields)
- thread pool implementation
- threading of FFT for integer and polynomial multiplication over Z
- threading of quadratic sieve for integer factoring
- improved threading of factoring of polynomials mod p
- threading for multivariate polynomial multiplication, division and GCD
- threaded multiplication of matrices mod p
- Berlekamp-Massey (nmod)
- fmpz_mod module for integers mod multiprecision n
- Pohlig-Hellman (discrete log)
- farey_neighbours
- remove openMP option
- additional integer division variants
- speed up mpn_mulmod_preinv
- fft precaching
- cyclotomic polynomial detection
- polynomial root finding over finite fields
- GMP 6.2 support
- MPIR 3.0.0 support
- many small speedups and additional convenience functions added
FLINT 2.5.2 (2015-08-13)#
- Fix further issues with soname versioning and ldconfig
- Fix a bug when using GMP instead of MPIR.
FLINT 2.5.1 (2015-08-12)#
- Fix some build bugs related to soname versioning and ldconfig
- Fix issue with Windows MSVC build
FLINT 2.5.0 (2015-08-07)#
- LLL (rational, Nguyen-Stehle, from Gram matrix, with_removal, Storjohann/ULLL)
- Hermite normal form (naive, xgcd, Domich-Kannan-Trotter, Kannan-Bachem, Pernet-Stein)
- Smith normal form (diagonal, Kannan-Bachem, Iliopoulos)
- Paterson-Stockmeyer algorithm
- modular resultant
- hgcd resultant
- polynomial discriminant
- multithreaded multimodular Taylor shift
- multithreaded Brent-Kung composition
- multithreaded Kaltofen-Shoup distinct degree factorisation
- multiplication based reduced row echelon form
- place inline functions in library for foreign function interfaces
- Primality tests for large integers (Pocklington, Morrison)
- Probable prime tests for large integers (Lucas, Baillie-PSW, strong-psp, Brillhart-Lehmer-Selfridge)
- CRT for large integers
- Dixon algorithm for nullspace
- Brent-Kung composition in irreducibility and distinct degree factorisation
- floating point QR decomposition
- Schwarz-Rutishauser Gram-Schmidt algorithm
- Ogita-Rump-Oishi dot product
- matrix window functions
- MSVC support (Brian Gladman)
- fast cube/nth-root (Newton, Kahan, magic number, Chebyshev)
- Bodrato matrix squaring
- matrix concatenation functions
- matrix content
- faster n_gcd
- faster n_sqrtmod and fmpz_sqrtmod
- additional functions for returning factor of modulus in polys over Z/nZ
- Hadamard matrix construction
- series addition/subtraction
- faster prime_pi bounds
- speedup creation of sparse polynomials
- speedup n_isprime n_nextprime
- speedup n_isprime_pocklington
- speedups to fmpq_poly and fmpz_poly arithmetic
- speedup polynomial irreducibility testing over Z/pZ
- speedup of rank computation over ZZ
- made CPimport compile time dependency only
- teach flint_printf/sprintf about explicit width format specifiers
- support relative paths in configure
- library soname versioning
- ARM64 patches
- Support MSYS2
- Progress towards supporting MIPS64
- Fix a serious bug in fmpz_poly_signature
FLINT 2.4.5#
- fixed a severe bug in flint's fmpz_poly_gcd_heuristic, reported by Anton Mellit.
FLINT 2.4.4#
- fixed a severe bug in flint's primality code (n_is_prime() affecting n_factor())
FLINT 2.4.3 (2014-04-01)#
- Fix a linker issue on Mac OSX.
FLINT 2.4.2 (2014-03-11)#
- Fix bug in ARM assembly
FLINT 2.4 (2012-11-20)#
- C++ expressions template wrapper
- Fast factorisation of polynomials over Z/nZ
- improved p-adics
- polynomials/matrices over p-adics
- qadics
- Finite fields (small and large F_q), polynomials/matrices over F_q
- Finite fields with Zech logarithm representation
- Fast factorisation of polynomials over F_q
- Faster Brent-Kung modular composition
- New prime sieving code
- Lambert-W function
- Precomputed inverses for polynomials and large integers
- Williams' P+1 integer factoring algorithm
- Harvey's KS2/KS4 polynomial multiplication
- Faster primality testing up to 64 bits
- Support for Cygwin64 and MinGW64
- Support for Clang
- Support for GMP
- Support for Boehm-Demers-Weiser GC
- Support for flint extension modules
FLINT 2.3 (2012-07-01)#
general
- many changes to the build system
- added NTL interface
- switched to custom memory allocation functions flint_malloc etc
- in addition to the entries below, fixed a large number of memory leaks, problems with the test code, and bugs in corner cases of various functions
- added _fmpz_cleanup_mpz_content as an alternative to _fmpz_cleanup
- support MinGW32
- support Cygwin
- bugfix on ia64
- support sparc32/sparc64
- support OSX
- support Solaris, NetBSD, OpenBSD, etc (if bash, GNU Make present)
ulong_extras
- implemented the improved Lehman algorithm
- added n_jacobi_unsigned to allow n > WORD_MAX
- fixed n_sqrtmod for n > WORD_MAX
- fixed bug causing n_sqrtmod to hang
- added sublinear algorithm for computing factorials mod p
- added n_sqrtmod_primepow, n_sqrtmodn and associated functions for computing square roots modulo composite integers
- fixed bugs in n_is_prime_pocklington
- fixed UWORD_MAX case in powmod and powmod2
- fixed problems with the random number generators
- fixed rare bug in n_mod_precomp
- fixed rare bug in n_is_prime_pseudosquare
long_extras
- added z_sizeinbase
qsieve
- new module implementing a quadratic sieve for numbers up to two limbs
fft
- new module providing an efficient Schoenhage-Strassen FFT
longlong
- added assembly code for ia64 and ARM
- fixed bug in fallback version of add_sssaaaaaa
fmpz
- added fmpz_fib_ui
- added double precision natural logarithm
- added fmpz_val2 for 2-valuation
- added mul_2exp, div_2exp, cdiv_q_2exp, tdiv_q_2exp, fdiv_r, fdiv_r_2exp, tdiv_ui, mul_tdiv_q_2exp
- added get_d/set_d
- added fmpz_divisible, divisible_si
- optimised fmpz_powm and fmpz_powm_ui
- added clog, clog_ui, flog, flog_ui for computing logarithms
- added abs_lbound_ui_2exp, ubound_ui_2exp
- added fmpz_rfac_ui and fmpz_rfac_uiui for rising factorials
- added functions to obtain read-only fmpz_t's from mpz_t's
- added fmpz_init_set, init_set_ui
- added fmpz_gcdinv
- added fmpz_is_square
- added fmpz_tstbit, setbit, clrbit, complement, combit, and, or, xor, popcnt
- added a sign flag for CRT instead of using separate methods
- fixed bugs in fmpz_sqrtmod
- fixed a bug in fmpz_bit_unpack that could cause corruption of the global fmpz array when compiled in single mode
- fixed a bug in fmpz_sub_ui that could cause memory corruption
fmpz_vec
- added functions for obtaining the largest absolute value coefficient
- added functions for computing the sum and product of an integer vector
- made max_bits much faster
- added _fmpz_vec_mod_fmpz
- made randtest produce sparse output
fmpz_poly
- added fmpz_poly_sqr, fmpz_poly_sqrlow for squaring a polynomial
- added fmpz_poly_lcm
- made multipoint interpolation faster by using the Newton basis
- added a function for fast division by a linear polynomial
- added power series composition (classical and Brent-Kung)
- added power series reversion (classical, Newton, fast Lagrange)
- added a function for obtaining the largest absolute value coefficient
- fixed quadratic memory usage and stack overflow when performing unbalanced division or pseudo division using the divconquer algorithm
- fixed a bug in poly_zero_coeffs
- fixed a bug in xgcd_modular
- allowing +/-1 in the constant term of power series inversion
- fixed aliasing bug in divrem
- added restartable Hensel lifting and associated utility functions
- fixed rem, which used to only call the basecase algorithm
- fixed pseudo_divrem, which used to only call the basecase algorithm
- implemented Schoenhage-Strassen multiplication (mul_SS, mullow_SS) and enabled this by default
- fixed a bug in the heuristic GCD algorithm
- added functions for Newton basis conversion
- added functions for fast Taylor shift
- added fmpz_poly_sqrt implementing a basecase algorithm
- added scalar mul_2exp, fdiv_2exp, tdiv_2exp
- made randtest produce sparse output
- added fmpz_poly_equal_fmpz
- improved performance by always using basecase multiplication when one polynomial is short
- improved algorithm selection for fmpz_poly_gcd
- fixed several bugs in gcd_modular
- improved performance of gcd_modular
fmpz_poly_factor
- new module for factorisation of fmpz_polys
- added a naive implementation of the Zassenhaus algorithm
fmpz_mod_poly
- new module for polynomials modulo over Z/nZ for arbitrary-precision n
- multiplication, powering
- classical and divconquer division
- series inversion
- Euclidean GCD and XGCD
- invmod
- radix conversion
- divconquer composition
- GCD and division functions that test invertibility of the leading coefficient
fmpz_mat
- added det_divisor for computing a random divisor of the determinant
- faster determinant computation using divisor trick
- faster determinant computation by using multimodular updates
- fixed n x 0 x m product not zeroing the result
- various interface improvements
- faster implementation of Cramer's rule for multiple right hand sides
- added fmpz_mat_fread and read
- added multi CRT/mod functions
- added trace
fmpz_poly_mat
- fixed n x 0 x m product not zeroing the result
- added inverse
- added rank computation
- added reduced row echelon form and nullspace computation
- added more utility functions
- added squaring and exponentiation
- added balanced product of a sequence of matrices
- added truncate, mullow, sqrlow, pow_trunc
- added trace
fmpz_factor
- new module providing interface for integer factorisation
- fast expansion of a factored integer
fmpq
- cleaned up and improved performance of rational reconstruction code
- allow separate numerator and denominator bounds for rational reconstruction
- added continued fraction expansion
- added functions for summation using binary splitting
- added fmpq_swap
- added fmpq_print, fmpq_get_str
- added fmpq_pow_si
- added functions to obtain read-only fmpq_t's from mpq_t's
- added fmpq_cmp
fmpq_mat
- fixed n x 0 x m product not zeroing the result
- added fmpq_mat_transpose
- added trace
fmpq_poly
- improved speed of multipoint interpolation using _fmpz_poly_div_root
- fmpq_poly: added power series composition (classical and Brent-Kung)
- fmpq_poly: added power series reversion (classical, Newton, fast Lagrange)
- fixed bug wherein set_array_mpq modified the input
- added gcd, xgcd, lcm, resultant
- added fmpq_poly_set_fmpq
- added fmpq_poly_get_slice, fmpq_poly_reverse
- fixed aliasing bug in divrem
- changed some functions to use FLINT scalar types instead of MPIR data types
- added fmpq_poly_get_numerator
nmod_poly
- implemented the half gcd algorithm for subquadratic gcd and xgcd
- added multipoint evaluation and interpolation
- added asymptotically fast multipoint evaluation and interpolation
- added a function for forming the product of linear factors
- added a function for fast division by a linear polynomial
- added power series composition (classical and Brent-Kung)
- added power series reversion (classical, Newton, fast Lagrange)
- added nmod_poly_mulmod, powmod and related functions (ported from flint1)
- added squarefree, irreducibility tests (ported from flint1)
- added Berlekamp and Cantor-Zassenhaus factoring (ported from flint1)
- fixed quadratic memory usage and stack overflow when performing unbalanced division using the divconquer algorithm
- added compose_series_divconquer
- added resultant
- fixed aliasing bug in divrem
- added rem functions
- added divrem_q0, q1 for special cases of division
- added functions for fast Taylor shift
- added nmod_poly_sqrt
- made fread read the modulus from the file
- made randtest produce sparse output
- fixed bug in xgcd_euclidean with scalar inputs
nmod_vec
- added functions and macros for computing dot products
- made randtest produce sparse output
nmod_mat
- added addmul/submul functions
- asymptotically fast solving of triangular systems
- asymptotically fast LUP decomposition
- asymptotically fast determinant and rank computation
- asymptotically fast reduced row echelon form and nullspace
- asymptotically fast nonsingular solving
- asymptotically fast inverse
- tidied some interfaces
- fixed n x 0 x m product not zeroing the result
- added trace
- made multiplication faster for tiny moduli by means of bit packing
nmod_poly_mat
- new module for matrices over Z/nZ[x], with similar functionality as the fmpz_poly_mat module
- determinant, rank, solving, reduced echelon form, nullspace
- fraction-free Gaussian elimination
- multiplication using bit packing
- multiplication using evaluation-interpolation
- determinant using evaluation-interpolation
padic
- restructured and improved much of the code
- added padic_log
- improved log and exp using rectangular splitting
- added asymptotically fast log and exp based on binary splitting
perm
- added the perm module for permutation matrices
- computing the parity of a permutation
- inverting a permutation
arith
- added generation of cyclotomic polynomials
- added functions for evaluating Dedekind sums
- fast computation of the partition function
- added a function for factoring a Hardy-Ramanujan-Rademacher type exponential sum
- added Chebyshev polynomials T and U
- added computation of the minimal polynomial of cos(2pi/n)
- added asymptotically fast high-precision approximation of zeta(n)
- added asymptotically fast computation of Euler's constant
- added new algorithms and functions for computing Bell numbers
- fast computation of pi (adapting code written by Hanhong Xue)
- added functions for computing the number of sum of squares representations of an integer
- renamed functions to have an arith prefix
FLINT 2.2 (2011-06-04)#
fmpq (multiprecision rational numbers)
- Basic arithmetic functions
- Utility functions
- Rational reconstruction
- Functions for enumerating the rationals
fmpq_mat (matrices over Q)
- Basic arithmetic functions
- Utility functions
- Fast multiplication
- Classical and fraction-free reduced row echelon form
- Determinants
- Fast non-singular solving
fmpz_poly_mat (matrices over Z[x]
- Basic arithmetic functions
- Utility functions
- Fraction-free row reduction and determinants
- Fast determinants (experimental)
fmpz_mat
- Added more utility functions (scalar multiplication, etc)
- Added Dixon's p-adic algorithm (used by fast nonsingular rational system solving)
- Added reduced row echelon form
- Added conversions between fmpz_mat and nmod_mat
- Added CRT functions for fmpz_mats
- Faster matrix multiplication for small to medium dimensions
longlong.h
- Added x86 assembly macros for accumulating sums of two limb operands
nmod_mat
- Sped up arithmetic for moduli close to FLINT_BITS
arith
- Changed interface of various functions to use new fmpq type
fmpz
- Added fmpz_set_ui_mod
- Inlined fmpz_neg, fmpz_set_si, fmpz_set_ui for better performance
- Added fmpz_lcm
- Small performance improvement to fmpz_CRT_ui
fmpz_vec
- Added _fmpz_vec_lcm
fmpz_poly_q (rational functions over Q, modeled as quotients of fmpz_polys)
- Basic arithmetic functions
- Conversion and IO functions
- Evaluation
padic (p-adic numbers – experimental)
- Basic arithmetic
- Data conversion and IO
- Inverse and square root using Newton iteration
- Teichmuller lifts (not optimised)
- p-adic exponential function (not optimised)
fmpz_poly
- Added fmpz_poly_gcd_modular (and fmpz_poly_gcd wrapper)
- Added fmpz_poly_xgcd_modular (and fmpz_poly_xgcd wrapper)
- Added conversions between fmpz_poly and nmod_poly
- Added CRT functions
- Added multipoint evaluation and interpolation
nmod_poly
- Added nmod_poly_xgcd_euclidean (and nmod_poly_xgcd wrapper)
- nmod_poly_gcd wrapper
mpn_extras
- Added MPN_NORM and MPN_SWAP macros.
- Added mpn_gcd_full to remove some of the restrictions from the usual mpn_gcd
build fixes
- fixed make install to create nonexistent dirs (reported by Serge Torres)
- -L use /usr instead of /usr/local by default (reported by Serge Torres)
- guards for system headers because of flint's use of ulong
FLINT 2.1 (2011-03-09)#
fmpz
- Simplified interface for fast multimodular reduction and CRT reconstruction
- Fixed segmentation fault in fmpz_multi_mod_ui when the input exceeds the product of the moduli
- Added simple incremental CRT functions (fmpz_CRT_ui, fmpz_CRT_ui_unsigned) to complement the existing fast ones
- Added example programs for CRT
- Added random number generators designed for testing modular code (fmpz_randtest_mod, fmpz_randtest_mod_signed)
- Added fmpz_fdiv_ui for remainder on division by an ulong
- Added fmpz_bin_uiui for computing binomial coefficients
- Added fmpz_mul2_uiui and fmpz_divexact2_uiui for multiplying or dividing an fmpz by a pair of ulongs (efficiently when their product fits in a single limb)
fmpz_mat
- Added utility functions for basic arithmetic and creating unit matrices
- Added multimodular determinant computation (certified or heuristic)
- Added support for computing right nullspaces (fmpz_mat_kernel). Fast only for small matrices.
- Some internal code cleanup and various small fixes
nmod_mat
- Faster Gaussian elimination for small moduli
- Faster determinants
- Faster matrix inversion and nonsingular solving
nmod_poly
- Added nmod_poly_integral for computing integrals
- Added fast square root and inverse square root of power series
- Added fast transcendental functions of power series (log, exp, sin, cos, tan, sinh, cosh, tanh, asin, atan, asinh, atanh)
- Made nmod_poly_inv_series_newton more memory efficient
fmpq_poly
- Added fmpq_poly_integral for computing integrals
- Added fast transcendental functions of power series (log, exp, sin, cos, tan, sinh, cosh, tanh, asin, atan, asinh, atanh)
arith
- Made computation of vectors of Bernoulli numbers faster
- Added fast computation of single Bernoulli numbers
- Added a separate function for computing denominators of Bernoulli numbers
- Added fast computation of Bell numbers (vector and single)
- Added fast computation of Euler numbers (vector and single)
- Added fast computation of Euler polynomials
- Added fast computation of Swinnerton-Dyer polynomials
- Added fast computation of Legendre polynomials
- Added fast vector computation of the partition function
- Added fast vector computation of Landau's function
ulong_extras
- Added a function for computing factorials mod n
build system
- Added support for building static and shared libraries
- All object files and test/profile/example binaries now build in separate build directory
documentation
- Large number of corrections
FLINT 2.0 (2011-01-16)#
N.B: FLINT 2 is a complete rewrite of flint from scratch It includes the following modules:
ulong_extras: (word sized integers and modular arithmetic)
- random numbers (randint, randbits, randprime, randint)
- powering
- reverse binary
- mod, divrem, mulmod all with precomputed inverses
- gcd, invgcd, xgcd
- jacobi symbols
- addmod, submod, invmod, powmod
- prime sieve, nextprime, prime-pi, nth-prime
- primality testing (small, binary search, Pocklington-Lehmer, Pseudosquare)
- probably prime tests (strong base-a, Fermat, Fibonacci, BPSW, Lucas)
- sqrt, sqrtrem, is-square, perfect-power (2,3,5)
- remove, is-squarefree
- factorisation (trial-range, trial, power (2,3,5), one-line, SQUFOF)
- Moebius mu, Euler phi
fmpz: (memory managed multiple precision integers)
- memory management (init, clear)
- random numbers (randbits, randm)
- conversion to and from long, ulong, doubles, mpz's, strings
- read/write to file, stdin, stdout
- sizeinbase, bits, size, sgn, swap, set, zero
- cmp, cmp-ui, cmpabs, equal, is-zero, is-one
- neg, abs, add, add-ui, sub, sub-ui, mul, mul-si, mul-ui, mul-2exp
- addmul, addmul-ui, submul, submul-ui
- cdiv-q, cdiv-q-si, cdiv-q-ui
- fdiv-q, fdiv-q-si, fdiv-q-ui, fdiv-qr, fdiv-q-2exp
- tdiv-q, tdiv-q-si
- divexact, divexact-si, divexact-ui
- mod, mod-ui
- powering
- sqrt, sqrt-rem
- factorial
- gcd, invmod
- bit-pack, bit-unpack
- multimodular reduction, CRT
fmpz_vec: (vectors over fmpz's)
- memory management (init, clear)
- random vectors
- max-bits, max-limbs
- read/write to file/stdin/stdout
- set, swap, zero, neg
- equal, is-zero
- sort
- add, sub
- scalar multiplication by fmpz, ulong, long, 2exp
- exact division by fmpz, long, ulong
- fdiv-q by fmpz, long, ulong, 2exp
- tdiv-q by fmpq, long, ulong
- addmul by fmpz, long, long by 2exp
- submul by fmpz, long, long by 2exp
- Gaussian content
fmpz_poly: (polys over fmpz's)
- memory management (init, realloc, fit-length, clear)
- random polys
- normalise, set-length, truncate
- length, degree, max-limbs, max-bits
- set, set-si, set-ui, set-fmpz, set-str
- get-str, get-str-pretty
- zero, one, zero-coeffs
- swap, reverse
- get/set coeffs from fmpz, long, ulong
- get-coeff-ptr, lead
- equal, is-zero
- add, sub
- scalar multiplication by fmpz, long, ulong
- scalar addmul/submul by fmpz
- scalar fdiv by fmpz, long, ulong
- scalar tdiv by fmpz, long, ulong
- scalar divexact by fmpz, long, ulong
- bit pack, bit unpack
- multiplication (classical, karatsuba, KS)
- mullow (classical, karatsuba, KS)
- mulhigh (classical, karatsuba)
- middle product (classical)
- powering (small, binary exponent, binomial, multinomial, addition chains)
- truncated powering (binary exponent)
- shift left/right
- euclidean norm
- gcd (subresultant)
- resultant
- content, primitive part
- divrem (basecase, divide-and-conquer)
- div (basecase, divide-and-conquer)
- rem (basecase)
- invert series (basecase, Newton)
- div series
- pseudo divrem (basecase, divide-and-conquer, Cohen)
- rem (Cohen)
- div
- evaluate (Horner) at fmpz, mpq, a mod n
- composition (Horner, divide-and-conquer)
- signature
- read/write to file/stdin/stdout
fmpq_poly: (polynomials over Q stored as poly over fmpz with fmpz denominator)
- memory management (init, realloc, fit-length, clear)
- random polys
- set-length, canonicalise, normalise, truncate
- is-canonical, length, degree
- reference to numerator, denominator
- set, set-si, set-ui, set-fmpz, set-mpz, set-mpq
- set-array-mpq, set-str
- get-str, get-str-pretty
- zero, neg, swap
- invert
- set coefficient to mpq, long, ulong, fmpz, mpz
- get coefficient as mpq
- equal, cmp, is-one, is-zero
- add, sub
- scalar multiplication by long, ulong, fmpz, mpq
- scalar division by fmpz, long, ulong, mpq
- multiplication, mullow
- powering
- shift left/right
- divrem, div, rem
- invert series (Newton iteration)
- divide series
- derivative
- evaluate at fmpz, mpq
- composition, scale by constant
- content, primitive part
- make-monic, is-monic
- is-squarefree
- read/write to file/stdin/stdout
nmod_vec: (vectors over Z/nZ for n fitting in a machine word)
- memory management (init/clear)
- macros for efficient reduction of 1, 2 and 3 limb integers mod n
- macro for addmul mod n
- add/sub/neg individual coefficients mod n
- random vectors
- set, zero, swap
- reduce, max-bits
- equal
- add, sub, neg
- scalar multiplication by a value reduced mod n
- scalar addmul by a value reduced mod n
nmod_poly: (polynomials over Z/nZ for n fitting in a machine word)
- memory management (init, realloc, fit-length, clear)
- random polys
- normalise, truncate
- length, degree, modulus, max-bits
- set, swap, zero, reverse
- get/set coefficients as ulongs, strings
- read/write to file, stdin, stdout
- equal, is-zero
- shift left/right
- add, sub, neg
- scalar multiplication by a value reduced mod n
- make-monic
- bit pack, bit unpack
- multiplication (classical, KS)
- mullow (classical, KS)
- mulhigh (classical)
- powering (binary exponent)
- pow-trunc (binary exponent)
- divrem (basecase, divide-and-conquer, Newton iteration)
- div (basecase, divide-and-conquer, Newton iteration)
- invert series (basecase, Newton iteration)
- divide series (Newton iteration)
- derivative
- evaluation at a value taken mod n
- composition (Horner, divide-and-conquer)
- gcd (euclidean)
fmpz_mat: (matrices over fmpz's)
- memory management (init, clear)
- random matrices (bits, integer relations, simultaneous diophantine equations NTRU-like, ajtai, permutation of rows and cols of a diagonal matrix, random of given rank, random of given determinant, random elementary operations)
- set, init-set, swap, entry pointer
- write to file or stdout
- equal
- transpose
- multiplication (classical, multimodular)
- inverse
- determinant
- row reduce (Gaussian and Gauss-Jordan fraction-free elimination)
- rank
- solve Ax = b, solve AX = B
- fraction free LU decomposition
nmod_mat: (matrices over Z/nZ for n fitting in a machine word)
- memory management (init, clear)
- random matrices (uniform, full, permutations of diagonal matrix, random of given rank, random elementary operations)
- set, equal
- print to stdout
- add
- transpose
- multiplication (classical, Strassen, A*B^T)
- row reduction (Gaussian and Gauss-Jordan)
- determinant
- rank
- solve (Ax = b, AX = B, solve with precomputed LU)
- invert
arith: (arithmetic functions)
- Bernoulli numbers
- Bernoulli polynomials
- primorials (product of primes up to n)
- harmonic numbers
- Stirling numbers
- Euler phi function
- Moebius mu function
- Sigma (sum of powers of divisors)
- Ramanujan tau function
examples: (example programs)
- compute coefficients of q-series of Delta function
mpfr_vec: (vectors over mpfr reals)
- memory management (init, clear)
- add
- set, zero
- scalar multiplication by mpfr, 2exp
- scalar product
mpfr_mat: (matrices over mpfr reals)
- memory management (init, clear)
The FLINT team, “FLINT 2,” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/history/older/flint-2.html (generated 2026-10-20).
@misc{flint-doc-history-older-flint-2,
author = {{The FLINT team}},
title = {{FLINT 2}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/history/older/flint-2.html},
note = {Generated 2026-10-20}
}