ryc*_*ych 1 floating-point arbitrary-precision
下列文件和两双算法的源代码有一段时间了,我仍然无法找出究竟是如何一个dd_real(定义为struct dd_real { double x[2];...}数量)分成两个双打.假如我用字符串初始化它,dd_real pi = "3.14159265358979323846264338327950";会是什么pi.x[0]和pi.xi[1]?我需要理解它,然后编写一个希望小的Python函数来完成它.
我不只是想调用QD库的原因是我更喜欢在Python中重新实现正确的分割,以便我发送我的35位精度常量(以字符串形式给出),就像double2CUDA代码一样.被GQD库视为双重实物 - 似乎是唯一一个处理CUDA中扩展精度计算的库.不幸的是,在Python方面也排除了mpmath.
假设您double double使用二进制数初始化:
1.011010101111111010101010101010000000101010110110000111011111101010010101010
< --- 52 binary digits --- >< --- more digits --- >
Run Code Online (Sandbox Code Playgroud)
然后一个double将是1.0110101011111110101010101010100000001010101101100001
另一个将是1.1011111101010010101010 * 2^-53
当您添加这两个数字(作为实数)时,总和是初始值.第一个在52位尾数中包含尽可能多的位.第二个包含剩余的位,具有适当的指数.