下列的双精度算术的论文和源代码一段时间以来,我仍然无法弄清楚 dd_real (定义为struct dd_real { double x[2];...}
) 数字被分成两个双精度数。假设我用字符串初始化它,dd_real pi = "3.14159265358979323846264338327950";
将会是什么pi.x[0]
and pi.xi[1]
?我需要理解它,然后编写一个希望很小的 Python 函数来完成它。
我不只是想调用 QD 库的原因是我更喜欢在 Python 中重新实现正确的分割,以便我将 35 位精度常量(以字符串形式给出)发送为double2
到 CUDA 代码,它将被视为双精度实数GQD库-- 似乎是唯一一个处理 CUDA 中扩展精度计算的库。不幸的是,在 Python 方面,这也排除了 mpmath。
假设你初始化了你的double double
与二进制数:
1.011010101111111010101010101010000000101010110110000111011111101010010101010
< --- 52 binary digits --- >< --- more digits --- >
然后一个double
将1.0110101011111110101010101010100000001010101101100001
另一个将是1.1011111101010010101010 * 2^-53
当您将这两个数字(作为实数)相加时,总和就是初始值。第一个在其 52 位尾数中包含尽可能多的位。第二个包含剩余的位以及适当的指数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)