GNU MPFR

GNU MPFR
開発者GNU プロジェクト( INRIAなど)
初回リリース2000年2月4日 (2000年2月4日
安定版リリース
4.2.2 [ 1 ] / 2025年3月20日 (2025年3月20日
リポジトリ
書かれたC
オペレーティング·システムクロスプラットフォーム
タイプ数学ソフトウェア
ライセンスLGPL
Webサイトwww.mpfr.org ウィキデータで編集する

GNU Multiple Precision Floating-Point Reliable Library ( GNU MPFR ) は、GNU Multiple Precision Arithmetic Libraryをベースにした、正しい丸めによる任意精度の2進浮動小数点計算を行うGNUポータブルCライブラリです。[ 2 ] [ 3 ]

図書館

MPFRの計算は効率的であり、かつ明確に定義されたセマンティクスを備えています。関数はすべての可能なオペランドに対して完全に指定されており、結果はプラットフォームに依存しません。[ 4 ]これは、固定精度浮動小数点演算に関するANSI/IEEE-754標準の考え方(特に正しい丸めと例外処理)を模倣することで実現されています。より正確には、その主な特徴は以下のとおりです。

  • 特殊な数値のサポート:符号付きゼロ(+0 および -0)、無限大非数(単一の NaN がサポートされます。MPFR は、静かな NaN とシグナリング NaN を区別しません)。
  • 各数値には独自の精度(MPFRは基数2を使用するため、ビット単位)があります。浮動小数点の結果は、サポートされている5つの丸めモード( IEEE 754-1985の4つを含む)のいずれかを使用して、対象変数の精度に正しく丸められます。
  • サポートされている関数:MPFRは、 C99のすべての数学関数とその他の一般的な数学関数を実装しています。自然数、2、10の対数および指数関数、log(1+x)関数およびexp(x)−1関数(log1pおよびexpm1)、6つの三角関数および双曲線関数とその逆関数、ガンマ関数、ゼータ関数、および誤差関数算術幾何平均べき乗(x y )関数などです。これらの関数はすべて、その範囲全体にわたって正しく丸められます。
  • 非正規数はサポートされていませんが、関数を使用してエミュレートできますmpfr_subnormalize

MPFRはプログラム全体または式全体の数値の精度を追跡することはできません。これはMPFRの目的ではありません。Arb [ 5 ] MPFI [ 6 ]のような区間演算パッケージや、 iRRAM [ 7 ]のような実RAM実装はMPFRに基づいている可能性があり、ユーザーに代わってこれを行うことができます。

MPFR は、 GNU Multiple Precision Arithmetic Library (GMP) に依存しています。

MPFRはGNUコンパイラコレクション(GCC)をビルドするために必要です。[ 8 ] ALGLIBCGALFLINTGNOME CalculatorJulia言語実装、Magma数式処理システムMaple、GNU MPC、GNU OctaveなどのソフトウェアもMPFRを使用しています。

参考文献

  1. ^ Vincent Lefèvre (2025年3月20日). 「発表: GNU MPFR 4.2.2 がリリースされました」 . 2025年3月20日閲覧
  2. ^ Fousse, L.; Hanrot, G.; Lefèvre, V.; Pélissier, P.; Zimmermann, P. (2007). 「MPFR: 正しい丸め処理を備えた多倍長バイナリ浮動小数点ライブラリ」. ACM Transactions on Mathematical Software . 33 (2): 13:1–15. doi : 10.1145/1236463.1236468 . S2CID 9641003 . 
  3. ^ Higham, Nick (2015年10月8日). 「混合精度演算の台頭」 . 2020年5月23日閲覧
  4. ^ 「MPFR に関するよくある質問: 1. GMP の MPF と MPFR の違いは何ですか?」
  5. ^ 「Arb、任意精度ボール演算用のCライブラリ」 。 2022年5月31日閲覧
  6. ^ 「MPFIプロジェクト」。InriaのGitLab 。 2022年5月31日閲覧
  7. ^ 「iRRAM、正確な実数演算のためのソフトウェアライブラリ」 。 2022年5月31日閲覧
  8. ^ 「GCC 4.3リリースシリーズ:変更点、新機能、修正点」 2012年11月2日。 2013年9月25日閲覧