Movatterモバイル変換
[0]ホーム
Internal links:
External links onMPFR:
Introduction
TheMPFR library is a C library for multiple-precision floating-point computations withcorrect rounding.MPFR has continuously been supported by theINRIA and the current main authors come from theCaramba andPascaline project-teams atLoria (Nancy, France) andLIP (Lyon, France) respectively; see more on thecredit page.MPFR is based on theGMP multiple-precision library.
The main goal ofMPFR is to provide a library for multiple-precision floating-point computation which is both efficient and has a well-defined semantics. It copies the good ideas from theANSI/IEEE-754 standard for double-precision floating-point arithmetic (53-bit significand).
MPFR is free. It is distributed under theGNU Lesser General Public License (GNU LesserGPL), version 3 or later (2.1 or later forMPFR versions until 2.4.x). The library has been registered in France by theAgence de Protection des Programmes under the number IDDN FR 001 120020 00 R P 2000 000 10800, on 15 March 2000. This license guarantees your freedom to share and changeMPFR, to make sureMPFR is free for all its users. Unlike the ordinary General Public License, the LesserGPL enables developers of non-free programs to useMPFR in their programs. If you have written a new function forMPFR or improved an existing one, please share your work!
Extensions
Interfaces forMPFR
- The following C++ interfaces forMPFR,very different in their design (and in particular, in the strategies for intermediate precisions, so that they can yield different results), are available:
- MPFRCPP, written by Alexey V. Beshenov. This interface uses a modern C++ design with using of classes, templates and function objects.
- AnotherMPFR C++ wrapper, written by Pavel Holoborodko. The precision of the temporary results in an expression is chosen as the maximum precision of its arguments, and the final result is rounded to the precision of the target variable.
- Thempfr::real class, written by Christian Schneider.
It consists of a template class with precision and rounding mode passed as template arguments. Hence, effectively a new type will be created for each precision and rounding that is used. All the operators available for fundamental floating point types as well as type conversions from and to other types, and the set of mathematical functions known frommath.h/cmath are implemented. This should allow for an easy substitution of,e.g., a double with the wrapper class in most cases.
- Thegmpfrxx C++ interface for bothGMP andMPFR, written by Jon Wilkening.
- Boost also includes an interface forMPFR, as part of itsMultiprecision library.
- Ada:
- FMPFR - a Fortran binding forMPFR.
- Haskell interfaces:hmpfr written by Aleš Bizjak andhaskell-mpfr.
- Java bindings toMPFR.
- ALISP interface, written by Richard Fateman. This package also contains aFFT implementation.
- .NET interfaceMath.Mpfr.Native.
- OCaml:
- PariTwine, a glue library betweenPARI/GP and some other mathematics libraries, includingMPFR.
- The Perl interfaceMath::MPFR.
- Python:
- R interface toMPFR.
- TheRacket language includesanMPFR interface.
- TheRandomLibMPFR interface (C++ classes).
- Ruby bindings forGMP andMPFR.
- Rust interface toGMP,MPFR andMPC.
Software UsingMPFR
- TheKDE calculatorAbakus by Michael Pyne (supporting arbitrary precision thanks toMPFR as of version 0.90).
- AERN2, a set of Haskell packages for exact real number computation:aern2-mp (multi-precision floats viaMPFR) andaern2-real (exact real numbers via Cauchy sequences andMPFR).
- TheALGLIB.NET project implements multiple-precision linear algebra usingMPFR.
- TheAPRON library, dedicated to the static analysis of the numerical variables of a program by Abstract Interpretation.
- TheARAnyM virtual machineas of version 0.9.12, for theFPU emulation.
- Arb, a C library for arbitrary-precision floating-point ball arithmetic, developed by Fredrik Johansson.
- Ariadne, a C++ library for formal verification of cyber-physical systems, using reachability analysis for nonlinear hybrid automata.
- The numerical analysis libraryBNCpack can be compiled withMPFR.
- CGAL (Computational Geometry Algorithms Library).
- DateTime-Astro (functions for astronomical calendars).
- Eigen, a C++ template library for linear algebra, via Pavel Holoborodko'sMPFR C++ wrapper.
- FLINT (Fast Library for Number Theory).
- MPFR is also used by theFluctuat tool developed and used internally at theCEA (France).
- FractalNow, a fractal generator.
- Gappa, a tool intended to help verifying and formally proving properties on numerical programs, by Guillaume Melquiond.
- GCC: first inGFortran, then in themiddle-end phase as ofGCC 4.3, toresolve math functions with constant arguments.More information.
- GDB optionally usesMPFR to emulate target floating-point arithmetic (documentation).
- Genius Math Tool and theGEL language, by Jiri Lebl.
- Giac/Xcas, a free computer algebra system, by Bernard Parisse.
- GNOME Calculator, as of version 3.15.4.
- GNU Awk, as of version 4.1.0 (foroptional arbitrary-precision arithmetic).
- Herbie, a tool for improving the accuracy of floating-point expressions.
- TheiRRAM - Exact Arithmetic in C++ implementation from Norbert Müller (University of Trier, Germany).
- TheJulia language implementation (source).
- Theledger accounting system.
- TheC++ continued fractions toolkitlibcff (no longer maintained), by Johan Vervloet.
- Thelibieeep1788 library, a C++ implementation of the preliminaryIEEE P1788 standard for interval arithmetic.
- LLVM, forits tests of some math functions.
- Macaulay2, a software system devoted to supporting research in algebraic geometry and commutative algebra (as ofversion 1.1).
- TheMagma computational algebra system.
- TheMaple computer algebra system via theRS library, since version 11 (reference).
- Mathemagix, a free computer algebra system, in thenumerix package.
- MCAS/libivl (computational algebra and plot system / interval computations library), by Mateusz Paprocki.
- MetaLibm (code generators for the math library and beyond).
- MPACK (multiple precision arithmeticBLAS andLAPACK), by Nakata Maho, supportsMPFR as of version 0.6.5 (2010-05-21).
- TheMPFRCX library for the arithmetic of univariate polynomials over arbitrary precision real (MPFR) or complex (MPC) numbers, without control on the rounding.
- Thempfs library, an experiment in stochastic lazy floating-point arithmetic, from Keith Briggs. Note:mpfs-0.9 (last updated in 2006, and the latest version at the time of writing [2018-09-25]) will not work unmodified with recentMPFR versions.
- MPFUN2015, an arbitrary precision package by David H. Bailey; theMPFUN-MPFR version is based onMPFR.
- Multiprecision Computing Toolbox for MATLAB.
- NARS2000, an experimentalAPL interpreter, hasdatatypes for multiple-precision floating-point numbers viaMPFR.
- TheGNU Octave interval package.
- ODE-Playground: SolveODEs using arbitrary order Taylor Series Method to arbitrary precision and analyze functions using Automatic Differentiation.
- Protea, a software devoted to protein-coding sequences identification, by Arnaud Fontaine and Hélène Touzet.
- TheRasqalRDF Query Library optionally usesMPFR for accuratexsd:decimal implementation.
- ReactOS Calc usesMPFR when multiple-precision support is enabled.
- MPFR is one of the components ofSAGE.
- SAM (Stochastic Arithmetic in Multiprecision).
- Sirocco, a library for computing homotopy continuation of a given root of one-dimensional sections of bivariate complex polynomials.
- Smooth, an arbitrary-precision differentiable programming language.
- Soft84, a calculator for Android devices.
- Sollya, a tool environment for safe floating-point code development, written by Christoph Lauter and Sylvain Chevillard (in the oldArénaire project).
- SXEmacs can be compiled withMPFR support (as of version 22.1.3).
- SweeD, a tool that implements a composite likelihood ratio test for detecting selective sweeps.
- TIDES: a Taylor Integrator for Differential Equations, to integrate numerically Ordinary Differential Equations in arbitrary precision.
- TRIP, a general computer algebra system dedicated to celestial mechanics.
- Verificarlo, a tool for automatic Monte-Carlo arithmetic analysis.
- TheWcalc calculator by Kyle Wheeler (supporting arbitrary precision thanks toMPFR as of version 2.0).
- ZKCM, a C++ library for multi-precision complex-number matrix calculations.
Other Related Free Software
- MAPM, a portable arbitrary precision math library in C, by Michael C. Ring (anda fork on GitHub).
- CoStLy, a Complex interval Standard functions Library developed by Markus Neher (Karlsruhe).
- XSC-Languages (C-XSC, PASCAL-XSC),FI_LIB and FILIB++, andintpakX software developed at University of Wuppertal (Germany).
- TheCORE library: a library for robust numerical and geometric computation.
- TheIBM Accurate Portable Mathlib library (2001), which provides correct rounding in double precision for rounding to nearest. It implements
atan,atan2,asin,acos,exp,log,pow,sin,cos,tan,sqrt,remainder. - TheCLN C++ library (GPL).
- TheQuad-Double package by David Bailey, Yozo Hida and Sherry Li.
- Thenumerical difference utility from Nelson Beebe, similar todiff but for numerical files.
- Thempmath Python library for arbitrary-precision floating-point arithmetic.
- TheConstructive Reals Calculator from Hans Boehm.
- Thexrc - exact reals in C from Keith Briggs.
- Theprecise computation software from Oliver Aberth.
- The
RR class fromNTL, which implements asmooth extension
ofIEEE floating point to arbitrary precision and guarantees a platform-independent behaviour. - Acontinued-fraction package based onGMP, by François Balsalobre.
- Software developed in the oldArénaire project and no longer maintained:
- SCSLib, a fast and lightweight multiple-precision library supporting the four arithmetic operations; the precision (210 bits by default) is fixed at compile time;
- CRlibm, a correctly rounded elementary function library (which has been superseded byMetaLibm, developed in other teams).
- Sun's libmcr, a correctly rounded library of basic double-precision transcendental elementary functions.
- ThePreciseFloating (floating-point arithmetic library) project in Java, by Daniel Aioanei: directed rounding, rational arithmetic and arbitrary precision arithmetic based on regular continued fraction expansions.
- ThedecNumber package by Mike Cowlishaw (IBM): arbitrary-precision decimal arithmetic.
- TheIntel® Decimal Floating-Point Math Library for the IEEE 754-2008 Standard (download).
- Thecalc calculator by Landon Curt Noll. This calculator implements a rational arithmetic, with a fallback to some kind of multiple-precision fixed-point arithmetic (integer multiplied by a configurable epsilon).
- TheQalculate calculator by Niklas Knutsson, based onCLN.
- TheMathCW mathematical function library (supporting binary and decimal floating-point arithmetic) by Nelson H. F. Beebe.
- Libraries for extended precision onGPU:gnuprec.
- Thempdecimal package for correctly rounded arbitrary-precision decimal floating-point arithmetic, by Stefan Krah.
- CAMPARY: multiple precision arithmetic routines forGPUs (based on floating-point expansions), written inCUDA C.
- Anant - Algorithmic 'n Analytic Number Theory by Linas Vepstas.
- MikeMcl/bignumber.js, a JavaScript library for arbitrary-precision decimal and non-decimal arithmetic.
- TheLibBF library by Fabrice Bellard.
- TheCORE-MATH project, which provides correctly rounded mathematical functions.
Related References and Links
[8]ページ先頭