## Authors and credits

### Brief project history

FLINT has been developed since 2007 by a large number of people. Initially the library was started by David Harvey and William Hart. Later maintenance of the library was taken over solely by William Hart, who remained the project leader until 2022.

FLINT 2.0 was a clean rewrite from scratch done around 2010 by William Hart, Sebastian Pancratz and Fredrik Johansson. Eventually, the 2.x series greatly expanded the scope of FLINT with new features such as finite fields (implemented by Mike Hansen) and multivariate polynomials (Daniel Schultz), just to mention two examples.

FLINT 3.0, due for release in 2023, merges three spin-off projects which were previously maintained as separate libraries: Arb and Calcium (started by Fredrik Johansson in 2012 and 2020), and Antic (started by William Hart in 2013). The author list below includes people who contributed to those projects.

### List of authors

See also the automatically-generated list of committers on GitHub. If your contribution to FLINT is not listed here or if any information is inaccurate, please contact the maintainer.

- William Hart
- Project leader 2007-2022. Integer and polynomial arithmetic, factorisation and primality testing, SSA style FFT, square root, number fields, general infrastructure, maintenance.
*Supported by EPSRC Grant EP/G004870/1, DFG Priority programme SPP1489, H2020 OpenDreamKit, TRR 195 FSB.* - Fredrik Johansson
**Current project leader.**Matrices, polynomial and power series arithmetic, special functions, ball arithmetic, floating-point arithmetic, algebraic numbers, exact real and complex numbers, generic rings, optimisations, maintenance, website design.*Supported by FWF Grant Y464-N18, ERC Starting Grant ANTICS 278537, ANR-20-CE48-0014 NuSCAP, Inria.*- Daniel Schultz
- Multivariate polynomials, threadpool, matrix FFT, LLL improvements, CRT improvements, matrix-vector products, small prime FFT, many speedups and additional functions.
*Supported by H2020 OpenDreamKit, DFG TRR 195 FSB.* - Sebastian Pancratz
- Polynomial arithmetic over Z, Z/nZ and Q, p-adic and q-adic arithmetic, including polynomials and matrices. Design of FLINT 2.0.
*Supported by ERC Grant 204083.* - Andy Novocin
- LLL, polynomial factorisation over Z, polynomial composition.
- Mike Hansen
- 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, template system.
*Supported by Macaulay2 developers NSF Grant 1002171.* **Tom Bachmann**- C++ expressions template wrapper, documentation parser.
*Supported by Google Summer of Code 2013.* - Alex Best
- Hermite Normal Form implementation including the Pernet-Stein algorithm and Smith Normal Form implementation including the Iliopoulos and Kannen-Bachem algorithms. Numerous improvements to nullspace, rref and rank computations and integer factoring and other improvements.
*Supported by Google Summer of Code 2014.* - David Harvey
- Fast Fourier Transform code, zn_poly for polynomial arithmetic over Z/nZ, mpz_poly, modular computation of Bernoulli numbers (bernmm), profiling and graphing code and many other parts of the FLINT library.
**Lina Kulakova**- Factorisation for polynomials over F_p for large p.
*Supported by Google Summer of Code 2012.* **Abhinav Baid**- LLL implementation, Ogita, Rump, Oishi dot product, Villard algorithm for LLL certification, Schwarz-Rutishauser algorithms for GSO and QR-decomposition.
*Supported by Google Summer of Code 2014.* **Kushagra Singh**- ECM and Pollard's Rho and quadratic sieve factoring algorithm implementations. Fast cube root and nth root code for word sized integers.
*Supported by Google Summer of Code 2015.* - Pascal Molin
- Arb discrete Fourier transform (DFT), Dirichlet characters, Dirichlet L-functions, discrete logarithm computation.
**Curtis Bright**- Mentoring/planning of LLL implementation, numerous patches including 32 bit support.
- Albin Ahlbäck
- Autotools-based build system, improvements to xgcd, improved fmpz functions for small inputs, uniformly distributed random numbers, CI improvements, documentation, header file cleanup, maintenance, many bugfixes/improvements.
- Isuru Fernando
- Testing, build system maintenance, help merging the projects, other minor fixes. Support for CMake and MSVC builds.
**Luca De Feo**- Finite field embeddings.
**Edouard Rousseau**- Finite field embeddings.
**Martin Lee**- Fast factorisation of polynomials over Z/nZ, faster Brent-Kung modular composition.
- Marc Mezzarobba
- Fast evaluation of Legendre polynomials, work on the Arb interface in Sage, bug reports, feedback.
**Tom Boothby**- Improved factoring of unsigned longs, detection of perfect powers.
**Andres Goens**- F_q module and polynomials over F_q.
*Supported by DFG Priority program SPP1489.* **Jan Tuitman**- Helped with the p-adic interface.
**Jason Papadopoulos**- Block Lanczos code for quadratic sieve and multiprecision complex root finding code for polynomials.
- Gonzalo Tornaria
- Theta function module, Montgomery multiplication and significant contributions to the Z[x] modular multiplication code.
**Burcin Erocal**- Wrote the primary FLINT wrapper in the SAGE system (Robert Bradshaw also wrote a preliminary version of this and Martin Albrecht and others have also contributed to it.) Burcin also contributed by writing grant applications via his Lmonade organisation to Google.
*Supported by DFG Priority programme SPP1489.* **Tommy Hofmann**- Howell and strong echelon form, representation matrices, many utility functions and other improvements and bug fixes. FLINT integration in Nemo.
**Ashish Kedia**- Contributed an implementation of the Paterson-Stockmeyer algorithm.
**Nitin Kumar**- Quadratic sieve.
*Supported by Google Summer of Code 2015.* **Vladimir Glazachev**- APRCL primality testing, Shoup multiplication.
*Supported by Google Summer of Code 2015.* **Dan Roche**- Contributed randprime and nextprime functions for the fmpz module and some minpoly code.
**Shivin Shrivastava**- Fibonacci polynomials and some Taylor shift improvements.
**Ben Orchard**- MSYS2 binary packages.
**Thomas DuBuisson**- Logical ops for fmpz module, patches to the build system.
**Jean-Pierre Flori**- Many build system patches and Sage integration. Code simplifications for Gauss periods, feedback.
**Frithjof Schulze**- Some fmpz functions and various patches.
**Daniel Woodhouse**- Contributed an implementation of multivariate multiplication over Z/nZ and used this to implement a fast "saturation" algorithm for Laurent polynomials.
**Tomasz Lechowski**- Contributed some NTL and Pari polynomial profiling code and researched algorithms for polynomials over finite fields.
*Supported by Nuffield Foundation.* **Daniel Scott**- Researched lazy and relaxed algorithms of Joris van der Hoeven.
*Supported by Warwick University's Undergraduate Research Scholars Scheme.* **David Howden**- Wrote code for computing Bernoulli numbers mod many primes, including fast polynomial multiplication over Z/pZ specifically for the task.
*Supported by Warwick University's Undergraduate Research Scholars Scheme.* **Daniel Ellam**- Helped design a module for p-adic arithmetic for FLINT.
*Supported by Warwick University's Undergraduate Research Scholars Scheme.* **Richard Howell-Peak**- Polynomial factorisation and irreducibility testing code for polynomials over Z/pZ.
*Supported by Warwick University's Undergraduate Research Scholars Scheme.* **Peter Shrimpton**- Wrote code for a basic prime sieve, Pocklington-Lehmer, Lucas, Fibonacci, BSPW and n-1 primality tests and a Weiferich prime search.
*Supported by The Nuffield Foundation.* **Brian Gladman**- MSVC support.
**Dana Jacobsen**- Tested BPSW primality code up to 2^64 against Feitma's tables and sped up and corrected n_is_prime and n_is_probabprime. Improvements to n_nextprime and n_isprime.
**Anubhav Srivastava**- Horizontal and vertical concatenation of matrices over Z, and an implementation of the Bodrato matrix squaring algorithm.
**Dharak Kharod**- Matrix content.
**Prabhdeep Singh Walia**- Matrix content.
**Alena Sergeicheva**- Contributed a patch to the build system for individual file testing and also contributed numerous matrix concatenation.
**Alex Griffing**- Integer factor refinement, sinc function, matrix trace, improved matrix squaring, boolean matrices, improved structured matrix exponentials, Cholesky decomposition, miscellaneous patches.
- Vincent Delecroix
- Power sums, various polynomial improvements, speedups, root counting and some patches. Work on Sage interface.
**Aaditya Thakkar**- Strassen multiplication over Z.
**Ralf Stephan**- Hermite polynomials, Laguerre polynomials, shifted Legendre polynomials, Gegenbauer polynomials. Improvements to inverse trigonometric functions.
**Martin Raum**- Kronecker product.
**xoviat**- CMake support.
**Claus Fieker**- Norms, improved rational solving, flint_abort, qadics without Conway polynomials, minor improvements and bug fixes.
**Srivin Srivastava**- Fibonacci polynomials, use of Taylor shift in linear composition, other minor contributions.
**Jonathan Bober**- Original code for Dirichlet characters, C++ compatibility fixes.
**Timo Hartmann**- Approximate computation of eigenvalues using the QR algorithm (original mpmath implementation used as a basis for the FLINT version).
**Juan Arias de Reyna**- Riemann-Siegel formula and Riemann zeta zeros (original mpmath implementation used as a basis for the FLINT version).
**Ricky Farr**- Some convenience functions.
**arbguest**- Preconditioned linear algebra algorithms.
**D.H.J. Polymath**- Riemann xi function, Riemann zeta zeros.
**Joel Dahne**- Feedback and improvements for Legendre functions, nth derivatives for Arb polynomials.
**Julian Rüth**- Serialization support.
**David Berghaus**- Aliased window matrix multiplication.
**Matthias Gessinger**- Graeffe transforms.
**Erik Postma**- Improved handling of infinities.

William Hart

Fredrik Johansson

Daniel Schultz

Andy Novocin

Mike Hansen

Alex Best

David Harvey

Pascal Molin

Albin Ahlbäck

D.H.J. Polymath

### Other contributors

- Patches, bug reports and documentation improvements have also been made by Michael Abshoff, Didier Deshommes, Craig Citro, Timothy Abbot, Carl Witty, Gonzalo Tornaria, Jaap Spies, Kiran Kedlaya, William Stein, Kate Minola, Robert Bradshaw, Serge Torres, Dan Grayson, Martin Lee, Bob Smith, Antony Vennard, Frederic Chyzak, Julien Puydt, Dana Jacobsen, Michael Jacobson Jr., Mike Stillman, Jan Englehardt, Jean-Pierre Flori, Jeroen Demeyer, Shi Bai, Qingwen Guan, Frithjof Schulze, Robert Baillie, Oleksandr Motsak, Hans Schoenemann, Janko Boehm, Ahmed Soliman, Francois Bissey, Anton Mellit, Daniel Roche, Denis Kryskov, Daniel Fabian, Julien Ospald, mgkurtz, Max Goldfar, Max Horn, lzmths, Volker Braun, Pascal Molin, Ralf Stehpan, Apoorv Mishra, Tobias Hansen, sourcekris, yuri@FreeBSD, vinklein, Michele Orru, Frederik Chapoton, Peter Frentrep, Eric Bray, Julian Ruth, Edgar Costa, Raphael Fourquet, John Palmieri, Pascal Mollin, Srajan Garg, Peter Luschny, Dejan Latinovic, Dima Pasechnik, Ben Lorenz, Mahrud Sayrafi, Lars Kastner, Gregory Vanuxem, Ivan Tsybulin, Debian User, Matthias Koeppe, Pavel Holoborodko, Victor Shoup, Michael Orlitzky, Tethys Svensson, Jan Jancar, Erico Noguerira Rolim, math-gout, Ondřej Čertík, Andrew Booker, Alexander Kobel, Andreas Enge, Hrvoje Abraham, Francesco Biscani, Marcello Seri, Yuri Matiyasevich, Gianfranco Costamagna, David Einstein, Jerry James, and others.
- In addition Michael Abshoff, William Stein and Robert Bradshaw have contributed to the build system of FLINT.
- Michael Abshoff deserves special recognition for his help in resolving a number of difficult build issues which came to light as FLINT was incorporated into SAGE and for bringing numerous bugs to the attention of the FLINT maintainers. Michael regularly checked FLINT for memory leaks and corruption, which directly led to numerous issues being identified early! He also helped with setting up various pieces of infrastructure for the FLINT project.
- Numerous people have contributed to wrapping FLINT in Sage and debugging, including Mike Hansen, Jean-Pierre Flori, Burcin Erocal, Robert Bradshaw, Martin Albrecht, Sebastian Pancratz, Fredrik Johansson, Jeroen Demeyer, Clemens Heuberger and Leif Lionhardy, amongst others.
- Some code (notably longlong.h and clz_tab.c) has been used from the GMP library, whose main author is Torbjorn Granlund. FLINT also includes code from the MPFR library developed by Guillaume Hanrot, Vincent Lefèvre, Patrick Pélissier, Philippe Théveny, Paul Zimmermann and others.

### Citing FLINT

A general citation of the following form is recommended:

The FLINT team. FLINT: Fast Library for Number Theory, 2023. Version 2.9.0, https://flintlib.org.

@manual{flint, key = {FLINT}, author = {The {FLINT} team}, title = {{FLINT}: {F}ast {L}ibrary for {N}umber {T}heory}, year = {2023}, note = {Version 2.9.0, \url{https://flintlib.org}} }

Please consider also looking up whether there is a paper discussing the specific feature(s) in FLINT which you are using. In many cases, there is such a paper! For example, research using the ball arithmetic component of FLINT (Arb) may cite:

F. Johansson. "Arb: efficient arbitrary-precision midpoint-radius interval arithmetic", IEEE Transactions on Computers, 66(8):1281-1292, 2017. DOI: 10.1109/TC.2017.2690633

Research using FLINT's number fields may cite:

William B. Hart. "ANTIC: Algebraic number theory in C", Computeralgebra-Rundbrief: Vol. 56, 2015

Many other references can be found in the bibliography of the FLINT documentation.