A toy abacus

The BIGNUM Library for Multiple Precision Arithmetic

The main purpose of this library is to implement fast multiplication. It was used for my diploma thesis [1] and a subsequent paper for the ISSAC conference [2] (local copy), where I benchmark the speed of DKSS multiplication against Schönhage–Strassen multiplication and others. There is some updated information on the slides of my ISSAC talk.

The source code is available under the GNU Lesser General Public License, see COPYING.txt and COPYING.LESSER.txt.

BIGNUM is written in C++ and features fast implementations of:

The full source code of arithmetic functions is included, but it won't compile since some header files are missing (for reasons of copyright). I am working on that. However, the arithmetic functions should be usable anyway or can be easily made to work.

Also included is a compiled x64 version of my Lucas-Lehmer Mersenne prime tester in lltest\lltest.exe. It has a lot of overly cryptic options for benchmarking. I used it to make the speed tests for [1] and [2]. Have a look at lltest\main.cpp to find out more.

The code is written for Visual Studio 2012 and is much faster in x64 mode (factor of 4?), but will run in 32-bit mode as well. Detailed technical information can be found in [1, Appendix A] and [2, sec. 3.2].

Source Code

Source code is available on GitLab, or can be downloaded in v7.62 as of 2023-11-29.

Citing

If you use BIGNUM, please cite it as:

@article{Lueders2015Fast,
  title   = {Fast Multiplication of Large Integers: Implementation and Analysis of the {DKSS} Algorithm},
  author  = {Christoph L{\"u}ders},
  journal = {{arXiv} preprint {arXiv}:1503.04955},
  year    = 2015,
  url     = {https://arxiv.org/abs/1503.04955}
}

© 2024 Christoph Lüders  |  Sitemap