哪一個是當前在基數2^64到其他基數之間轉換的最快方法? 「任何其他基地」,我的意思是任何基地本身小於2^64。我認爲它使用基於分而治之的方法和伯恩斯坦縮放餘數樹?
一些更多細節:我特別想將未來版本的IsItNormal不同基地中的一些着名常量超過10億位數轉換。 我可以使用兩種方法:
1.在我希望的每個基數中計算該常數的十億位數。
2.從某處(例如y-cruncher)獲取數字,然後轉換爲我希望的每個基地。
我打算使用方法#2,因爲它看起來更快。在任意精度浮點算法中兩個基數之間轉換的最快方法,數量超過十億位
1
A
回答
1
就我所知,可以在O(N * log(N))操作中使用FFT進行大整數乘法和快速sqrt算法。基本思想如下。對於基數b1中的k個數字的大整數X,找到兩個整數Y & Z,使得Y & Z都不超過k/2個數字,並且X = Y * Y + Z。 (注意Z可以是負數)。這可以簡單地通過執行sqrt(X)操作完成,然後讓Y爲sqrt(X)的最接近整數,Z爲餘數。
步驟2.轉換Y均從基體B1 &Ž成鹼B2,遞歸地使用步驟1
步驟再次使用公式X = Y * Y + Z在鹼B2 3.計算X;
然後,剩餘部分是如何SQRT(X)在O(N *日誌(N))的時間,這裏的方法:
設X0 SQRT(X)的=估計; 繼續做x0 =(X/x0 + x0)/ 2直到它收斂;
這裏又出現了另一個問題:如何計算O(N * log(N))時間的1/X?方法是:
let x0 = 1/X的估計; 繼續做x0 =(2-X * x0)* x0直到它收斂;使用FFT計算O中的大數相乘(N log(N)),則整個算法可以被優化爲O(Nlog(N))。
相關問題
- 1. 任意精度JavaScript上的浮點數
- 2. 將4字節轉換爲浮點數的最快方法C++
- 3. 在C++中將int轉換爲16位浮點數(半精度浮點數)
- 4. 在Java中兩個ArrayLists之間交換段的最快方法
- 5. 的JavaScript包整數和計算任意精度浮點:
- 6. 加速,在任意精度浮點數和整數類型之間進行轉換
- 7. 如何將單精度浮點數轉換爲十進制?
- 8. 將雙精度轉換爲浮點數
- 9. 將比特解壓縮爲單精度浮點數的最快方法
- 10. MSVC win32:將擴展精度浮點數(80位)轉換爲雙精度浮點數(64位)
- 11. Rust中的兩個浮點數與任意精度級別的比較
- 12. 最快的方法來計算兩個CGPoints之間的距離?
- 13. 計算Java中兩個ARGB整數之間差異的最快方法?
- 14. Java - 將十六進制轉換爲IEEE-754 64位浮點數 - 雙精度
- 15. 在Go算法中處理浮點數精度?
- 16. GraphX - 存儲和計算超過30億個頂點的最佳方法
- 17. 無法在Scala中寫入雙精度浮點和雙精度浮點數的方法
- 18. 十進制到半精度浮點數
- 19. 最快的nosql爲數十億記錄
- 20. C#:數十億計算最快的數組
- 21. 查找兩個數組之間重複的最快方法javascript
- 22. 計算無符號整數中位轉換次數的最快方法
- 23. 在php中超過53位的浮點精度?
- 24. 計算N維空間中兩點之間歐氏距離的最快方法
- 25. JavaScript中的浮點數精度或算法錯誤
- 26. 是否有可能以保真度將浮點雙精度浮點雙精度到兩個十進制整數?
- 27. Vala的大整數和任意/多精度浮點數
- 28. 什麼是計算e到2萬億位數的最快方法?
- 29. double轉換成字符串超過5位小數位精度
- 30. 使用參數化精度將浮點數轉換爲十進制數