Next: References, Previous: Internals, Up: Top [Index]
Torbjorn Granlund wrote the original GMP library and is still developing and maintaining it. Several other individuals and organizations have contributed to GMP in various ways. Here is a list in chronological order:
Gunnar Sjoedin and Hans Riesel helped with mathematical problems in early versions of the library.
Richard Stallman contributed to the interface design and revised the first version of this manual.
Brian Beuning and Doug Lea helped with testing of early versions of the library and made creative suggestions.
John Amanatides of York University in Canada contributed the function
mpz_probab_prime_p
.
Paul Zimmermann of Inria sparked the development of GMP 2, with his comparisons between bignum packages.
Ken Weber (Kent State University, Universidade Federal do Rio Grande do Sul)
contributed mpz_gcd
, mpz_divexact
, mpn_gcd
, and
mpn_bdivmod
, partially supported by CNPq (Brazil) grant 301314194-2.
Per Bothner of Cygnus Support helped to set up GMP to use Cygnus’ configure. He has also made valuable suggestions and tested numerous intermediary releases.
Joachim Hollman was involved in the design of the mpf
interface, and in
the mpz
design revisions for version 2.
Bennet Yee contributed the initial versions of mpz_jacobi
and
mpz_legendre
.
Andreas Schwab contributed the files mpn/m68k/lshift.S and mpn/m68k/rshift.S (now in .asm form).
The development of floating point functions of GNU MP 2, were supported in part by the ESPRIT-BRA (Basic Research Activities) 6846 project POSSO (POlynomial System SOlving).
GNU MP 2 was finished and released by SWOX AB, SWEDEN, in cooperation with the IDA Center for Computing Sciences, USA.
Robert Harley of Inria, France and David Seal of ARM, England, suggested clever improvements for population count.
Robert Harley also wrote highly optimized Karatsuba and 3-way Toom multiplication functions for GMP 3. He also contributed the ARM assembly code.
Torsten Ekedahl of the Mathematical department of Stockholm University provided significant inspiration during several phases of the GMP development. His mathematical expertise helped improve several algorithms.
Paul Zimmermann wrote the Divide and Conquer division code, the REDC code, the REDC-based mpz_powm code, the FFT multiply code, and the Karatsuba square root code. He also rewrote the Toom3 code for GMP 4.2. The ECMNET project Paul is organizing was a driving force behind many of the optimizations in GMP 3.
Linus Nordberg wrote the new configure system based on autoconf and implemented the new random functions.
Kent Boortz made the Mac OS 9 port.
Kevin Ryde worked on a number of things: optimized x86 code, m4 asm macros, parameter tuning, speed measuring, the configure system, function inlining, divisibility tests, bit scanning, Jacobi symbols, Fibonacci and Lucas number functions, printf and scanf functions, perl interface, demo expression parser, the algorithms chapter in the manual, gmpasm-mode.el, and various miscellaneous improvements elsewhere.
Steve Root helped write the optimized alpha 21264 assembly code.
Gerardo Ballabio wrote the gmpxx.h C++ class interface and the C++
istream
input routines.
GNU MP 4 was finished and released by Torbjorn Granlund and Kevin Ryde. Torbjorn’s work was partially funded by the IDA Center for Computing Sciences, USA.
Jason Moxham rewrote mpz_fac_ui
.
Pedro Gimeno implemented the Mersenne Twister and made other random number improvements.
(This list is chronological, not ordered after significance. If you have contributed to GMP/MPIR but are not listed above, please tell http://groups.google.com/group/mpir-devel about the omission!)
Thanks go to Hans Thorsen for donating an SGI system for the GMP test system environment.
In 2008 GMP was forked and gave rise to the MPIR (Multiple Precision Integers and Rationals) project. In 2010 version 2.0.0 of MPIR switched to LGPL v3+ and much code from GMP was again incorporated into MPIR.
The MPIR project has largely been a collaboration of William Hart, Brian Gladman and Jason Moxham. MPIR code not obtained from GMP and not specifically mentioned elsewhere below is likely written by one of these three.
William Hart did much of the early MPIR coding including build system fixes. His contributions also include Toom 4 and 7 code and variants, extended GCD based on Niels Mollers ngcd work, asymptotically fast division code. He does much of the release management work.
Brian Gladman wrote and maintains MSVC project files. He has also done much of the conversion of assembly code to yasm format. He rewrote the benchmark program and developed MSVC ports of tune, speed, try and the benchmark code. He helped with many aspects of the merging of GMP code into MPIR after the switch to LGPL v3+.
Jason Moxham has contributed a great deal of x86 assembly code. He has also contributed improved root code and mulhi and mullo routines and implemented Peter Montgomery’s single limb remainder algorithm. He has also contributed a command line build system for Windows and numerous build system fixes.
The following people have either contributed directly to the MPIR project, made code available on their websites or contributed code to the official GNU project which has been used in MPIR.
Jason Martin wrote some fast assembly patches for Core 2 and converted them to intel format. He also did the initial merge of Niels Moller’s fast GCD patches. He wrote fast addmul functions for Itanium.
Gonzalo Tornaria helped patch config.guess and associated files to distinguish modern processors. He also patched mpirbench.
Michael Abshoff helped resolve some build issues on various platforms. He served for a while as release manager for the MPIR project.
Mariah Lennox contributed patches to mpirbench and various build failure reports. She has also reported gcc bugs found during MPIR development.
Niels Moller wrote the fast ngcd code for computing integer GCD, the quadratic Hensel division code and precomputed inverse code for Euclidean division, along with fast jacobi symbols code. He also made contributions to the Toom multiply code, especially helper functions to simplify Toom evaluations.
Burcin Erocal helped with build testing on Pentium-D
Pierrick Gaudry provided initial AMD 64 assembly support and revised the FFT code.
Paul Zimmermann provided an mpz implementation of Toom 4, wrote much of the FFT code, wrote some of the rootrem code and contributed invert.c for computing precomputed inverses.
Alexander Kruppa revised the FFT code and helped write and superoptimise assembly code for Skylake, Haswell and Bulldozer and helped write a superoptimiser.
Torbjorn Granlund revised the FFT code and wrote a lot of division code, including the quadratic Euclidean division code, many parts of the divide and conquer division code, both Hensel and Euclidean, and his code was also reused for parts of the asymptotically fast division code. He also helped write the root code and wrote much of the Itanium assembly code and a couple of Core 2 assembly functions and part of the basecase middle product assembly code for x86 64 bit. He also wrote the improved string input and output code and made improvements to the GCD and extended GCD code. He also contributed the nextprime code and coauthored the bin_uiui code. He also wrote or maintained the binvert, mullow_n_basecase, powlo, redc_n code and the powm and powm_ui improvements. Torbjorn is also responsible for numerous other bits and pieces that have been used from the GNU project.
Marco Bodrato and Alberto Zanoni suggested the unbalanced multiply strategy and found optimal Toom multiplication sequences.
Marco Bodrato wrote an mpz implementation of the Toom 7 code and wrote most of the Toom 8.5 multiply and squaring code. He also helped write the divide and conquer Euclidean division code. He also contributed many improved number theoretical functions including factorial, multi-factorial, primorial, n-choose-k.
Marc Glisse improved gmpxx.h
Robert Gerbicz contributed fast factorial code.
Martin Boij made assorted contributions to the nextprime code.
David Harvey wrote fast middle product code and divide and conquer approximate quotient code for both Euclidean and Hensel division and contributed to the quadratic Hensel code.
T. R. Nicely wrote primality tests used in the benchmark code.
Jeff Gilchrist assisted with the porting of T. R. Nicely’s primality code to MPIR and helped with tuning.
David Kirkby helped with build testing on Sun servers
Peter Shrimpton wrote the BPSW primality test used up to GMP_LIMB_BITS.
Thanks to Microsoft for supporting Jason Moxham to work on a command line build system for Windows and some assembly improvements for Windows.
Thanks to William Stein for giving us access to his sage.math machines for testing and for hosting the MPIR website, and for supporting us in inumerably many other ways.
Minh Van Nguyen served as release manager for MPIR 2.1.0.
Case Vanhorsen helped with release testing.
David Cleaver filed a bug report.
Julien Puydt provided tuning values.
Leif Lionhardy supplied build patches and provided tuning values.
Jean-Pierre Flori ported the powm, powm_ui improvements from GMP, supplied many build system patches and improvements and provided tuning values.
Thanks to an anonymous Japanese contributor for assembly improvements
Marshall Hampton reported an issue on apple machines
Jens Nurmann contributed significant quantities of Skylake assembly code and contributed assembly improvements that have been used elsewhere.
Alex Best wrote an assembly superoptimiser.
Vincent Delecroix ported mpq_cmp_z from GMP.
Sisyphus (Rob) submitted tuning values.
sav-ix (Alexander) provided a patch for t-locale on Windows.
Isurus Fernando provided tuning values, numerous build system patches, did release testing and helped with continuous integration.
Alex Dyachenko wrote mpir.net for interfacing MPIR to .net languages.
Tommy Hoffman supplied a sed patch.
Averkhaturau fixed a C++ compilation problem.
Marcell Keller fixed a sign conversion bug.
Sergey Taymanov fixed some Windows build file issues.
jengelh reported a bug and helped with build testing
Next: References, Previous: Internals, Up: Top [Index]