私は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. 4倍精度計算によるRcpp
- 3. 16ビットプロセッサ用の任意精度の演算(Bignum)
- 4. Clojureの任意の精度べき乗剰余演算
- 5. 任意の桁精度の.NET Frameworkライブラリ
- 6. 計算の精度C++ Cplex
- 7. Interbase SQLの精度計算
- 8. ODEint:任意精度の適応積分
- 9. 任意精度のガンマ関数
- 10. ストライプノード任意精度の数値
- 11. ファストテキストクラシファイアの精度を計算する
- 12. 精度、リコール、f1スコアから精度を計算する - scikit-learn
- 13. Rの日付を任意の精度のレベルに丸める
- 14. 重心と精度を計算する
- 15. 任意の大きな整数A、B、C、Dに対して任意の精度で(A/B)の(C/D)番目のルートを計算する方法は?
- 16. 科学計算用GPUの精度
- 17. 行列計算の精度R対Stata
- 18. OpenMP、コア数、乱数計算の精度
- 19. numpyでの高精度計算
- 20. PRROCパッケージによる精度リコール曲線計算R
- 21. 計算精度を最大限に引き出すためのDECIMAL(精度、スケール)
- 22. 逆算の精度と精度
- 23. 任意の数の郡の合計を計算する方法
- 24. 錆の2つのフロートと任意の精度レベルの比較
- 25. C#の任意の精度の小数点?
- 26. 任意の点での精度の問題
- 27. 任意の精度の数値をアスキーコードで
- 28. 任意の固定精度整数のプログラミング言語?
- 29. Pythonの書式付き任意精度小数点の印刷
- 30. JavaScript番号は任意精度の数字ですか?
はたぶん、[このアルゴリズム](http://www.math.hmc.edu/funfacts/ffiles/20010.5.shtml)をチェックしてくださいすべての桁が必要です。 –
あなたは数学をよく知りません。もっと簡単なものから始めましょう。汎用ライブラリを使用してPi桁の数兆を計算するには、多くの時間がかかります。 – Tobu