私はGMPライブラリを使用してPiプログラムを作成しています。これはPiの約7桁を計算します。問題は、小数点以下の桁数を保持するために必要なビット数を把握することができません。GMPによる任意精度の計算
答えて
7桁の数字は、10 ^(7兆)の任意の数字のいずれかを表すことができます。
xビットは2^xの異なる番号を表すことができます。
だから、あなたが解決したい:
2^x = 10^7000000000000
は、ログ・ベース-2の両側のを取る:私が得る
x = 7000000000000 * log2(10)
:log(a^b)
= b * log(a)
こと
x = log2(10^7000000000000)
がリコール23253496664212
ビット。私はちょうど安全のために1つまたは2つを追加します。しかし、それらを保持するペタバイトを見つけることを幸運。
もっと興味深いアルゴリズムが必要だろうと思っています。
実際にはそれぞれのテラビットが...しかし、私は必要なビット数を知る必要がありました。私は答えを見つけることができませんでしたが、あなたは来て、答えだけでなく説明をしました!ブラボー、ブラボー! –
2^10 = 1024です。したがって、10ビットは3桁をわずかに上回ります。あなたが最後に訪れたコスコから1台のドライブに乗ることができる以上に、私は7兆桁の数字を書いているので、それは23兆ビット、つまり約3テラバイトのようなものになります。
あなたは誇張になるかもしれません。私は各操作のためにディスク全体を読み書きするI/O時間について疑問に思います。
(これを解決する数学的方法は、7兆桁の数字が約7兆のログベース10を持つため、対数を使用することです。既存のベース内の数値のログを探し、ベース2とベース10の間の短縮形では、10ビット== 3桁を使用します。これはそれほど間違いではないので、2のログベース10は、実際には。0.301など)
私は、応答の回答で書かれたものについては、単に正しい一つのことしたい:
リコールログ(A^B)は*ログを=(b)の
だけでなく、それは逆です:あなたがいない場合
log(a^b) = b * log(a)
- 1. JVM任意精度ライブラリ
- 2. 16ビットプロセッサ用の任意精度の演算(Bignum)
- 3. Clojureの任意の精度べき乗剰余演算
- 4. 任意の桁精度の.NET Frameworkライブラリ
- 5. ODEint:任意精度の適応積分
- 6. 科学計算用GPUの精度
- 7. Rの日付を任意の精度のレベルに丸める
- 8. 計算精度を最大限に引き出すためのDECIMAL(精度、スケール)
- 9. 任意の数の郡の合計を計算する方法
- 10. C#の任意の精度の小数点?
- 11. 任意の固定精度整数のプログラミング言語?
- 12. Pythonの書式付き任意精度小数点の印刷
- 13. JavaScript番号は任意精度の数字ですか?
- 14. Dで高精度計算を実行するには?
- 15. オブジェクトの摩擦を計算する際の精度が悪い
- 16. gmp floatの下限を指定した精度で
- 17. vb.netの精度で除算
- 18. 任意に大きな数値を計算するクラス?
- 19. 精度、リコール、Fスコアを計算する - python
- 20. TWAINでスキャンした画像の計算精度
- 21. 奇妙な演算精度
- 22. 任意のメッシュの平面UV座標の計算
- 23. int配列を倍精度にキャストしてパーセントを計算する
- 24. Android加速度計の角度計算
- 25. (倍精度/オブジェクトの一意性)
- 26. stackoverflowに似た時間差を計算するコードへの任意の参照?
- 27. 倍精度:大きな数の乗算
- 28. 特定の言語に関係なく有効な任意精度の算術演算のための共通の実装方法はありますか?
- 29. アンドロイド加速度計の精度が極端に悪い
- 30. 会計年度計算
はたぶん、[このアルゴリズム](http://www.math.hmc.edu/funfacts/ffiles/20010.5.shtml)をチェックしてくださいすべての桁が必要です。 –
あなたは数学をよく知りません。もっと簡単なものから始めましょう。汎用ライブラリを使用してPi桁の数兆を計算するには、多くの時間がかかります。 – Tobu