libinum is a library that implements several numerical algorithms.
One of the its main originalities is that it supports both fixed and arbitrary precision floating point numbers. Fixed precision floating point numbers have a predetermined number of digits, whereas arbitrary precision floating point numbers can have as many digits as needed. Numerical truncation errors can, therefore, be controlled for arbitrary precision floats. However, manipulating them is slower than fixed precision floats. If computational precision is more important than speed, then arbitrary precision floats may be used, whereas if speed is more of an issue, then fixed precision floats may be preferable. The functions provided by libinum can be used in both cases.
libinum is written in C, and can run on any POSIX compliant system, including GNU/Linux and OSX. libinum is linked against the GNU MPFR and GNU GMP libraries.
The main features of libinum v1.0.1:
- Find roots of smooth functions using the Newton-Raphson algorithm.
- Compute integrals using Gauss-Legendre quadratures (single- or multi-threaded).
- libinum defines several useful structures, such as mutable arrays and polynomials.
libinum is made available under an Apache 2.0 license, which allows copying, sharing and modifying the source code, among other things. Details can be found at https://www.apache.org/licenses/LICENSE-2.0.
The source code is made available here:
- Source tarball: libinum-1.0.1.tar.gz
- Git repository: libinum-git
In addition, the following distribution-dependent packages are made available:
- Arch linux: PKGBUILD
- Debian and Debian-like (including Linux Mint and Ubuntu) pre-compiled 64-bit (amd64) binary: .deb file
The functions and structures defined by libinum are documented here:
As was mentionned earlier, libinum is licensed under the Apache 2.0 license.
libinum is linked against the GNU MPFR and GMP libraries, which are licensed under the GNU Lesser General Public License v3.