大きな整数のライブラリを探していますが、幅は固定されています (128 または 256 で十分です)。その理由は、ヒープに割り当てたくないからです。私はそれらを自分で作ろうとしましたが、効率的な方法で乗算、除算、剰余を実装するのはかなり面倒です。
これはすでにどこかに存在しますか?
ありがとう
大きな整数のライブラリを探していますが、幅は固定されています (128 または 256 で十分です)。その理由は、ヒープに割り当てたくないからです。私はそれらを自分で作ろうとしましたが、効率的な方法で乗算、除算、剰余を実装するのはかなり面倒です。
これはすでにどこかに存在しますか?
ありがとう
GMP ライブラリを見てみましょう: www.gmplib.org
関数カテゴリからの引用:
低レベルの正の整数で、使いにくく、オーバーヘッドが非常に低い関数は、mpn カテゴリに含まれます。メモリ管理は実行されません。呼び出し元は、結果に十分なスペースを確保する必要があります。(...)
それが必要なようです。
これは少なくとも有望に見えます ( int128 library
Google で 8 番にヒット)。
http://www.mx-3.cz/tringi/www/langen.php?id=int128
「他の多数のクラスとは異なり、他の POD タイプと同じようにこれらを扱うことができます (たとえば、fwrite/fread を使用したファイルのストアとロードなど)。これらの内部表現は、正しい 128 ビットのリトル エンディアン整数です。」
GMP が複雑すぎると感じた場合は、Dave Hanson の著書C Interfaces and Implementationsで非常に優れた関数がいくつか紹介されています。割り当てを行わない (すべてを制御する) 低レベルのインターフェイスが 1 つあります。次に、ヒープ上で徐々に多くの割り当てを管理する 2 つの高レベルのインターフェイスがあります。