3

同様のトピックに関するスレッドがいくつかあることを知っています ( C++ に最適な (速度の場合) 任意精度ライブラリは何ですか?および最高のクロスプラットフォーム (ポータブル) 任意精度数学ライブラリ) と私はこれらのスレッドから GMP または何かベースのものよりも取得しますMPFRが利用可能な最速のライブラリのようですが、私は特に疑問に思っています.30 decの場所だけを言いたいのであれば、quadmathライブラリの__float128の方が速いでしょうか?

また、MAPM は MPFR とどのように比較されますか?

このウェブサイトから見えます:

http://pari.math.u-bordeaux.fr/benchs/timings-mpfr.html

そのMPFRはかなりうまくいきますが、CLNとapfloatもありますか?

4

1 に答える 1

1

小数点以下 30 桁だけが必要な場合は、GMP や MPFR がいくつかの単純な自作ルーチンほど高速ではないことは確かです (実際にベンチマークを実行する必要はありません)。もちろん、それは必要な操作に少し依存します。

この背後にある理由は、GMP et al。非常に大きな整数 (1,000 以上または 1,000,000 以上の 10 進数など) を念頭に置いて、非常に適切に記述されています。しかし、非常に小さい (それでも int には大きすぎる) bignum の場合、余分な if のオーバーヘッド、呼び出し、またはメモリ割り当てでさえ、すべてのベンチマークでそれらを殺してしまいます。

2 つの 64 ビット符号なし関数から 128 ビットの加算/減算を行う独自の C++ 関数を作成するのは簡単です。掛け算も簡単にできます。割り算はそれほど単純ではないかもしれませんが、それは必要ですか? より精巧な機能 (ルート、ログなど) は、はるかに多くの作業が必要であり、GMP など。たぶん報われるでしょう。

于 2012-11-30T18:38:59.420 に答える