最高のクロスプラットフォーム(ポータブル)の任意精度数学の図書館[定休日]
-
24-09-2019 - |
質問
思い任意精度数学の図書館にCまたはC++.ですがもらえるとありがたいアドバイス/う方に。
第一の要件:
- で 必要 取り扱恣意的に大きな整数(私の心は、は整数).場合にいかに恣意的に大きな手段と、そのようなもの100000!の要因の100000).
- 精密 必要不要 指定した時のライブラリの初期化/オブジェクト。精密ば のみ 存在により制約を受けるであろう、利用可能な資源のシステム。
- で すべ 利用メージの取込、イメージファイルプラットフォームを処理する必要があります"小さな"番号のネイティブ.その64bitプの計算を2^33+2^32を使うのは64ビットCPUに示します。図書館 べきではない この計算と同じような2^66+2^65同じ。
- で 必要 対応加(+)、差(-)の演算(*)では、整数部(/),余り(%)電力(**),増分(++),減分(--),gcd()、要因()その他の共通の整数演算の計算の効率化。る機能のようにsqrt()(ルート)でログイン()(対数)を産出している訳ではない整数の結果がプラスである。への対応力 記号計算 がある場合があるとなお良い。
ここで私がこれまで判明した:
- Java's BigInteger や BigDecimal クラス:ってことです。だったので、ソースコードがわかりませんの数学ました。●では理論に基づくアルゴリズムという
- の整数型またはコアの図書館 bc / Python / Ruby / ウ / Lisp / Gimp用ドキュメ / 存 / PHP /その他の言語:できあがっている図書館を利用していること、またはのように実装です。
私が知られてい:
- を使用 char として小数桁、 char* 少数文字列計算の桁数を使用します。
- を使用 int ( 長int, や 長い長い)を基本として、"単位"の列として任意の長整数、計算に要素を使用します。
- 整数値型の店舗は、小数桁数(桁数) BCD(バイナリコード数).
- ブースでの乗算アルゴリズム
何かわからない:
- 印刷、バイナリの配列で述べたように小数点を使用せずに素朴ます。例ナイーブな手法:(1)追加のビットから最低最高:1, 2, 4, 8, 16, 32, ...(2)の使用 char* 文字列以上の店舗の中間点結果を表します。
うにしたい:
- 良い比較 GMP, MPFR, decNumber (その他の図書館を良い意).
- 良い提案書籍/記事をしているつもりだったが、いを読み込みます。例えば、イラストを使用した数値か 国連-ナイーブ バイナリを小数点の変換アルゴリズムの作品が良いです。記事 "バイナリを小数点変換技術" によるDouglas W.ジョーンズの例をいいます。
- ります。
ください ない この質問に答えの場合:
- お考えを使用 ダブル ( ダブル長, や 長い長いダブル でこの問題を解決す。だいすることは、あなたを理解できない問題を検討しています。
解決
GMPは人気があります。 SqueakのSmalltalkのは非常にいいライブラリを持っていますが、それはSmalltalkの中に書かれています。
あなたは、関連する書籍や記事を求めました。 bignumsのトリッキーな部分は長い部門です。地雷原でのAツアー:私はパー・ブリンチ・ハンセンの紙多倍長課再訪をお勧めしますます。
他のヒント
を参照してください。 http://ttmath.orgする
小は自由個人や商業利用のために、ヘッダのみのライブラリをテンプレートます。
私は比べないといけませ任意精度演算ライブラリ互いに自分がいる方に見て一律に決済GMP.そのような、任意精度の整数でGHCウびGNUユーザのスキームの両方を使用して実装されGMPに対応しており、最速の実施 pidigitsベンチマークは、言語の総決戦 はGMP.
何巴里は?これは、トップGMP上に構築し、すべてのあなたが必要です数論操作に関する他のグッズ(そして多くの記号計算のもの)を提供しています。
所属していません StackOverflow