GNU MPFR

Biblioteca C per a aritmètica de coma flotant de precisió arbitrària

La biblioteca fiable de coma flotant de precisió múltiple de GNU (GNU MPFR) és una biblioteca C portàtil de GNU per al càlcul binari de coma flotant de precisió arbitrària amb un arrodoniment correcte, basada en la biblioteca GNU Multi-Precision.[1][2]

GNU MPF
TipusComa flotant
Basat enGNU Multiple Precision Arithmetic Library (en) Tradueix Modifica el valor a Wikidata
Versió inicialnovembre 1998 Modifica el valor a Wikidata
Versió estable
4.2.1 (22 agost 2023) Modifica el valor a Wikidata
LlicènciaGNU LGPL 3.0 o posterior
GNU LGPL 2.1 o posterior Modifica el valor a Wikidata
Part deProjecte GNU Modifica el valor a Wikidata
Característiques tècniques
Sistema operatiuGNU/Linux, BSD, Microsoft Windows, macOS, Unix-like i multiplataforma Modifica el valor a Wikidata
Escrit enC Modifica el valor a Wikidata
Equip
Desenvolupador(s)Projecte GNU i INRIA Modifica el valor a Wikidata
Més informació
Lloc webmpfr.org (anglès) Modifica el valor a Wikidata
Seguiment d'errorsSeguiment d'errors Modifica el valor a Wikidata
Free Software DirectoryMpfr Modifica el valor a Wikidata
Guia d'usuariGuia d'usuari Modifica el valor a Wikidata

Biblioteca modifica

El càlcul de MPFR és alhora eficient i té una semàntica ben definida: les funcions estan completament especificades en tots els operands possibles i els resultats no depenen de la plataforma.[3] Això es fa copiant les idees de l'estàndard ANSI/IEEE-754 per a l'aritmètica de coma flotant de precisió fixa (arrodoniment correcte i excepcions, en particular). Més concretament, les seves característiques principals són:

  • Suport per a nombres especials: zeros amb signe (+0 i -0), infinits i no-un nombre (s'admet un únic NaN: MPFR no diferencia entre NaNs tranquils i NaNs de senyalització).
  • Cada nombre té la seva pròpia precisió (en bits ja que MPFR utilitza la base 2). Els resultats de coma flotant s'arrodoneixen correctament a la precisió de la variable objectiu, en un dels cinc modes d'arrodoniment admesos (inclosos els quatre de IEEE 754-1985).
  • Funcions suportades: MPFR implementa totes les funcions matemàtiques de C99 i altres funcions matemàtiques habituals: el logaritme i l'exponencial en base natural, base 2 i base 10, les funcions log(1+x) i exp(x)−1 (log1p i expm1), les sis funcions trigonomètriques i hiperbòliques i les seves inverses, les funcions gamma, zeta i d'error, la mitjana aritmètica-geomètrica, la funció de potència (xy). Totes aquestes funcions s'arrodonien correctament en el seu rang complet.
  • Els números subnormals no són compatibles, però es poden emular amb la funció mpfr_subnormalize.


MPFR no és capaç de fer un seguiment de la precisió dels números en un programa o expressió sencer; aquest no és el seu objectiu. Paquets aritmètics d'interval com Arb,[4] MPFI,[5] o implementacions de Real RAM com iRRAM,[6] que es poden basar en MPFR, poden fer-ho per a l'usuari.

MPFR depèn de la biblioteca d'aritmètica de precisió múltiple (GMP) de GNU.

Es necessita MPFR per construir la col·lecció de compiladors GNU (GCC).[7] Un altre programari utilitza MPFR, com ALGLIB, CGAL, FLINT, GNOME Calculator, la implementació del llenguatge Julia, el sistema d'àlgebra informàtica Magma, Maple, GNU MPC i GNU Octave.

Referències modifica

  1. Fousse, L.; Hanrot, G.; Lefèvre, V.; Pélissier, P.; Zimmermann, P. ACM Transactions on Mathematical Software, 33, 2007, pàg. 13:1–15. DOI: 10.1145/1236463.1236468.
  2. Higham, Nick. «The Rise of Mixed Precision Arithmetic» (en anglès), 08-10-2015. [Consulta: 23 maig 2020].
  3. «Frequently asked questions about MPFR: 1. What are the differences between MPF from GMP and MPFR?» (en anglès).
  4. «Arb, a C library for arbitrary-precision ball arithmetic» (en anglès). [Consulta: 31 maig 2022].
  5. «MPFI Project» (en anglès). GitLab at Inria. [Consulta: 31 maig 2022].
  6. «iRRAM, a software library for exact real arithmetic» (en anglès). Arxivat de l'original el 7 de juliol 2022. [Consulta: 31 maig 2022].
  7. «GCC 4.3 Release Series: Changes, New Features, and Fixes» (en anglès), 02-11-2012. [Consulta: 25 setembre 2013].