GNU MPFR
GNU MPFR est une bibliothèque portable C de calcul arithmétique multiprécision en virgule flottante avec arrondi correct. C'est un logiciel libre basé sur GNU MP et maintenu pour le projet GNU par Inria et la communauté hacker[2],[3].
Développé par | Projet GNU (INRIA et autres) |
---|---|
Première version | |
Dernière version | 4.1.0 ()[1] |
Dépôt | gitlab.inria.fr/mpfr/mpfr |
Écrit en | C |
Système d'exploitation | GNU/Linux, BSD (d), Microsoft Windows et macOS |
Environnement | Multiplate-forme |
Type | Mathématiques |
Licence | GNU LGPL |
Documentation | www.mpfr.org/mpfr-current/mpfr.html |
Site web | www.mpfr.org |
MPFR constitue une brique de base essentielle pouvant servir à la construction d'un système de calcul formel.
Historique
La première version publique de MPFR est distribuée le 4 février 2000[2]. Cette bibliothèque logicielle est à l'origine développée par Paul Zimmermann, lequel a par ailleurs contribué au développement de la bibliothèque GMP[4]. Les droits d'auteurs sont assignés à la Free Software Foundation dès juin 2000[2].
MPFR devient officiellement un projet GNU le 26 janvier 2009 pour la réalisation de la version 2.4.0[5].
Caractéristiques techniques
La bibliothèque est dédiée au calcul de flottants multiprécision en base 2 avec arrondi exact. Les calculs sont à la fois efficaces et bien définis sémantiquement. MPFR reprend les bonnes idées de la norme ANSI/IEEE-754 sur l'arithmétique flottante en précision fixe. Plus précisément, ses caractéristiques principales sont :
- Support des nombres spéciaux : zéros signés, infinis et not-a-number (un seul NaN est supporté).
- Chaque nombre a sa propre précision (en bits, puisque MPFR utilise la base 2). Le résultat est arrondi correctement à la précision de la variable cible, dans n'importe lequel des quatre modes d'arrondi IEEE 754-1985 ainsi que dans le mode d'arrondi away from zero (inverse de l'arrondi vers zéro).
- Fonctions supportées : MPFR implémente toutes les fonctions mathématiques de C99 et d'autres fonctions mathématiques usuelles :
- le logarithme et l'exponentielle en base naturelle, base 2 et base 10,
- log(1+x) et exp(x)−1 (
log1p
etexpm1
), - les six fonctions trigonométriques et hyperboliques ainsi que leurs inverses,
- gamma et logarithme de gamma,
- digamma (aussi appelée fonction psi),
- zêta,
- erreur,
- fonctions de Bessel,
- la moyenne arithmético-géométrique et
- l'exponentiation (xy).
Toutes ces fonctions sont arrondies correctement sur l'ensemble de leur domaine de définition.
Les dénormalisés ne sont pas supportés, mais peuvent être émulés avec la fonction mpfr_subnormalize
.
MPFR n'est pas capable de suivre la précision des nombres sur l'ensemble d'un programme ou expression : ce n'est pas son but. Les logiciels d'arithmétique des intervalles, comme Arb[6] ou MPFI[7], ou des implémentations de Real RAM (en), comme iRRAM[8], dont certaines sont basées sur MPFR, sont capables de cela.
Communauté GNU
Notes et références
Notes
- La question de faire de MPC un paquet GNU avait été soulevée à l'occasion de la rencontre entre développeurs MPFR et MPC de janvier 2011[10].
Références
- « https://sympa.inria.fr/sympa/arc/mpfr/2020-07/msg00003.html »
- (en) « History of MPFR and Past Events », mpfr.org, 21 juillet 2011.
- (en) « The MPFR Library: Credit », mpfr.org, 21 juillet 2011.
- (en) « Contributors - GNU MP », gmplib.org, 21 juillet 2011.
- (en) « GNU MPFR version 2.4.0 », mpfr.org, 26 janvier 2009.
- https://arblib.org/
- https://gitlab.inria.fr/mpfi/mpfi/
- http://irram.uni-trier.de/
- (en) « GNU Hackers Meeting in Paris, 2011 », gnu.org, juillet 2011.
- (en) « MPFR-MPC Developers Meeting 2011 », members.loria.fr, 13 et 14 janvier 2011.