私が本当に必要としているのは、精度を落とさずに浮動小数点数を C にエクスポートすることです。
私はPythonでこれを行いました:
import math
import struct
x = math.sqrt(2)
print struct.unpack('ii', struct.pack('d', x))
# prints (1719614413, 1073127582)
そしてCIでこれを試してください:
#include <math.h>
#include <stdio.h>
int main(void)
{
unsigned long long x[2] = {1719614413, 1073127582};
long long lx;
double xf;
lx = (x[0] << 32) | x[1];
xf = (double)lx;
printf("%lf\n", xf);
return 0;
}
しかし、CI では次のようになります。
7385687666638364672.000000 であり、sqrt(2) ではありません。
私は何が欠けていますか?
ありがとう。