哪一个是当前在基数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. 使用参数化精度将浮点数转换为十进制数