任意精度の数学とは正確には何ですか?
任意精度演算、別名「bignum 演算」は、桁数が使用可能なメモリ量によってのみ制限される数値に対して算術演算を実行する方法を導入します。これは、ホスト システムの CPU/ALU によって提供される固定精度演算とは異なり、表現される数値の最大サイズ/精度は、これらのハードウェア プロセッサのレジスタのビット数の係数です。
固定精度演算は高速で、ストレージに関して効率的であり、組み込み/ユニバーサルに利用可能です。ただし、限定された (場合によっては「十分に大きい」場合のみ) 数値範囲に適用できます。任意精度の演算は遅く、ストレージをいくらか浪費し、GMP や BCMath などの特殊なライブラリが必要です。
BCMath ライブラリと GMP ライブラリ
の違いは何ですか? 最も顕著な違いは、GMP が [任意の精度]の整数値で機能することです。これにより、BCMath は [任意の精度]の小数/浮動小数点のような値を許可します。
どちらの API も習得が難しいですが、BCMath はもう少し直感的かもしれません (float のような値をサポートすることに加えて)
別のライブラリよりも特定のライブラリを選択する場合は、通常、使用目的 (または特定のプラットフォームでの可用性) によって決まります。MP アプリケーションに本格的に取り掛かるまでは、ほとんどのライブラリが要件に適合し、一般的に同等です (もちろん、そのクラス内では、つまり、浮動小数点数が必要な場合は整数のみのライブラリは避けてください)。
BCMath/GMP はどのような種類の数値をとりますか?
ほとんどの任意精度の数学パッケージと同様に、これら 2 つのライブラリは API に文字列を使用します。つまり、入力と出力の数値を表します。
内部的に... GMP のような一部のパッケージには、数値の独自の表現があります。このような構造の仕様は、通常、ストレージ要件を最小限に抑えることと、高速な計算を可能にすることとの間の妥協です (このような構造をテキスト ファイルとの間で「シリアル化/逆シリアル化」することを含む)。
の例は、 BCD 、つまり Binary Coded Decimal"\x12\x23\x45\x67"
として知られてい1 バイトあたり 2 桁の 10 進数を格納でき、任意精度演算ライブラリで使用されることがあります。