## Authors and credits

### Authors

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.

The authors of FLINT to date:

- William Hart -- integer and polynomial arithmetic, factorisation and primality testing, general infrastructure (supported by EPSRC Grant EP/G004870/1 and DFG Priority programme SPP1489)
- Sebastian Pancratz -- polynomial arithmetic over Z, Z/nZ and Q, p-adic and q-adic arithmetic, including polynomials and matrices (supported by ERC Grant 204083)
- Andy Novocin -- LLL, polynomial factorisation over Z, polynomial composition
- Fredrik Johansson -- matrices, polynomial and power series arithmetic, special functions (supported by Austrian Science Fund FWF Grant Y464-N18)
- Tom Bachmann -- C++ expressions template wrapper, documentation parser (Google Summer of Code 2013)
- 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 (supported by Macaulay2 developers NSF Grant 1002171)
- Luca De Feo, Edouard Rousseau -- Finite field embeddings
- Martin Lee -- Fast factorisation of polynomials over Z/nZ, faster Brent-Kung modular composition
- David Harvey -- Fast Fourier Transform code, zn_poly for polynomial arithmetic over Z/nZ, mpz_poly, profiling and graphing code and many other parts of the FLINT library
- 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.)
- 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)
- Lina Kulakova -- factorisation for polynomials over F_p for large p (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 (Google Summer of Code 2014)
- Curtis Bright -- Mentoring/planning of LLL implementation, numerous patches including 32 bit support
- 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 (Google Summer of Code 2014)
- Thomas DuBuisson -- logical ops for fmpz module, patches to the build system
- Jean-Pierre Flori -- many build system patches and Sage integration
- 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. (Funded by Alessio Corti and Tom Coates at Imperial College)
- Tomasz Lechowski -- Contributed some NTL and Pari polynomial profiling code and researched algorithms for polynomials over finite fields. (Funded by the Nuffield Foundation)
- Daniel Scott -- Researched lazy and relaxed algorithms of Joris van der Hoeven. (Funded 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. (Funded by Warwick University's Undergraduate Research Scholars Scheme)
- Daniel Ellam -- Helped design a module for p-adic arithmetic for FLINT. (Funded by Warwick University's Undergraduate Research Scholars Scheme)
- Richard Howell-Peak -- Wrote polynomial factorisation and irreducibility testing code for polynomials over Z/pZ. (Funded 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. (Funded by the Nuffield Foundation)
- Brian Gladman -- MSVC support
- Dana Jacobsen -- test BPSW primality code up to 2^64 against Feitma's tables and sped up and corrected n_is_prime and \code{n_is_probabprime}. Improvements to n_nextprime and \code{n_isprime}
- Anubhav Srivastava contributed horizontal and vertical concatenation of matrices over ZZ and an implementation of the Bodrato matrix squaring algorithm
- Dharak Kharod and Prabhdeep Singh Walia both independently contributed matrix content
- Alena Sergeicheva contributed a patch to the build system for individual file testing and also contributed numerous matrix concatenation functions
- Kushagra Singh contributed fast cube root and nth root code for word sized integers, including magic number, Newton iteration, Kahan iteration and Chebyshev approximation code, he also contributed ECM and Pollard's Rho factoring algorithm implementations as part of a Google Summer of Code.
- Andreas Enge help with a port to MIPS64.
- Tommy Hofmann implemented Howell and strong echelon form and supplied some inline functions.
- Ashish Kedia contributed an implementation of the Paterson-Stockmeyer algorithm.
- Nitin Kumar contributed under a Google Summer of Code project to the quadratic sieve.
- Vladimir Glazachev contributed an implementation of the APRCL primality testing algorithm and Shoup multiplication as part of a Google Summer of Code.
- Dan Roche contributed randprime and nextprime functions for the fmpz module.
- Shivin Shrivastava contributed Fibonacci polynomials and some Taylor shift improvements.
- Alex Griffing contributed integer factor refinement and numerous small patches.
- Vincent Delecroix contributed power sums and some patches.
- Aaditya Thakkar contributed Strassen multiplication over Z.
- Ralf Stephan contributed Hermite polynomials.
- Patches and bug reports have been made by Michael Abshoff, Didier Deshommes, Craig Citro, Timothy Abbot, Carl Witty, Gonzalo Tornaria, Jaap Spies, Kiran Kedlaya, William Stein, Kate Minola, Didier Deshommes, Robert Bradshaw, Serge Torres, Dan Grayson, Martin Lee, Bob Smith, Antony Vennard, Fr\'{e}d\'{e}ric 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, Claus Fieker, Volker Braun, Pascal Molin 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 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.

### Supporting organisations

### Citing FLINT

If your research depends on computations done with FLINT, please consider giving a formal citation.

You may cite the software itself (optionally a specific version of FLINT), for example using the following format:

- W. Hart, F. Johansson and S. Pancratz. FLINT: Fast Library for
Number Theory, 2013. version 2.4.0,
`http://flintlib.org`.

@misc{flint, author = {W. Hart and F. Johansson and S. Pancratz}, title = {{FLINT}: {F}ast {L}ibrary for {N}umber {T}heory}, year = {2013}, note = {Version 2.4.0, \url{http://flintlib.org}} }

You may also choose to cite this peer-reviewed article:

- W. B. Hart. Fast Library for Number Theory: An Introduction. In
*Proceedings of the Third International Congress on Mathematical software*, ICMS'10, pages 88-91, Berlin, Heidelberg, 2010. Springer-Verlag.`http://flintlib.org`.

@inproceedings{Hart2010, author = {W. B. Hart}, title = {{Fast Library for Number Theory: An Introduction}, booktitle = {Proceedings of the Third International Congress on Mathematical Software}, series = {ICMS'10}, year = {2010}, location = {Kobe, Japan}, pages = {88--91}, numpages = {4}, publisher = {Springer-Verlag}, address = {Berlin, Heidelberg}, note = {\url{http://flintlib.org}} }

If you depend on a specific algorithm, please also consider citing the paper where that algorithm is described (if available).

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

*Contact: William Hart, flint-devel mailing list.*