Введение
Библиотека C для вычислений с плавающей точкой произвольной точности.
GNU Multiple Precision Floating Point Reliable Library (GNU MPFR) – это переносимая библиотека GNU на языке C для вычислений с бинарными числами с плавающей точкой произвольной точности с корректным округлением, основанная на GNU Multi Precision Library.
Библиотека
Вычисления MPFR эффективны и имеют чётко определённую семантику: функции полностью определены для всех возможных операндов, и результаты не зависят от платформы. Это достигается за счёт использования идей стандарта ANSI/IEEE 754 для арифметики чисел с фиксированной точностью (в частности, правильного округления и обработки исключений). Более точно, его основные особенности: поддержка специальных чисел: знаковые нули (+0 и −0), бесконечности и «не число» (поддерживается один NaN: MPFR не различает тихие NaN и сигнальные NaN). Каждое число имеет свою точность (в битах, поскольку MPFR использует основание 2). Результаты операций с плавающей точкой правильно округляются до точности целевой переменной в одном из пяти поддерживаемых режимов округления (включая четыре из IEEE 754 1985). Поддерживаемые функции: MPFR реализует все математические функции из C99 и другие стандартные математические функции: логарифм и экспонента по основанию *e*, 2 и 10, функции log(1+x) и exp(x)−1 (log1p и expm1), шесть тригонометрических и гиперболических функций и их обратные, гамма, дзета и функции ошибок, среднее арифметико-геометрическое, функция возведения в степень (x^y). Все эти функции правильно округляются на всем своём диапазоне. Субнормальные числа не поддерживаются, но могут быть эмулированы с помощью функции `mpfr_subnormalize`. MPFR не предназначен для отслеживания точности чисел во всей программе или выражении; это не входит в его задачи. Пакеты интервальной арифметики, такие как Arb, MPFI, или реализации арифметики с использованием вещественной памяти, такие как iRRAM (которые могут быть основаны на MPFR), могут выполнять эту задачу за пользователя. MPFR зависит от библиотеки GNU Multiple Precision Arithmetic Library (GMP). MPFR необходим для сборки GNU Compiler Collection (GCC). Другие программные продукты используют MPFR, такие как ALGLIB, CGAL, FLINT, GNOME Calculator, реализация языка Julia, система компьютерной алгебры Magma, Maple, GNU MPC и GNU Octave.
Support for special numbers: signed zeros (+0 and −0), infinities and not a number (a single NaN is supported: MPFR does not differentiate between quiet NaNs and signaling NaNs). Each number has its own precision (in bits since MPFR uses radix 2). The floating point results are correctly rounded to the precision of the target variable, in one of the five supported rounding modes (including the four from IEEE 754 1985). Supported functions: MPFR implements all mathematical functions from C99 and other usual mathematical functions: the logarithm and exponential in natural base, base 2 and base 10, the log(1+x) and exp(x)−1 functions (log1p and expm1), the six trigonometric and hyperbolic functions and their inverses, the gamma, zeta and error functions, the arithmetic–geometric mean, the power (xy) function. All those functions are correctly rounded over their complete range. Subnormal numbers are not supported, but can be emulated with the mpfr subnormalize function. MPFR is not able to track the accuracy of numbers in a whole program or expression; this is not its goal. Interval arithmetic packages like Arb, MPFI, or Real RAM implementations like iRRAM, which may be based on MPFR, can do that for the user. MPFR is dependent upon the GNU Multiple Precision Arithmetic Library (GMP). MPFR is needed to build the GNU Compiler Collection (GCC). Other software uses MPFR, such as ALGLIB, CGAL, FLINT, GNOME Calculator, the Julia language implementation, the Magma computer algebra system, Maple, GNU MPC, and GNU Octave.