我写了一个计算 1000000 的程序!使用 FFT。
(请允许我简短一点,省略一些理论上的共鸣:))
我想要做的是测量双精度值和round()
-ed 值(使用math.h
函数)之间的所有舍入误差,以检查该错误的行为方式(以及是否高于 1/2)。
我这样做是通过打印每次舍入之间的差异,a
并将round(a)
结果写入文件,让我们调用它diffs.txt
,即~532Mb
使用
fprintf(my_file,"%e\n",a-round(a));
我现在需要计算该文件中出现的每个值的出现次数。
我这样做是通过在我看来是一种复杂的方式,使用grep
和sort
bashfor
如下:
./compute-rounding-err #It creates diffs.txt
sort -u diffs.txt -o diff-sorted-unique
for i in `cat diff-sorted-unique`
do
grep -e "$i" | wc -l >> diff-counted
done
结果是两个文件。如果我配对我获得的文件
diff-sorted-unique: diff_counted:
-9.013892e-20 1
... ...
0.000000e0 200
... ...
9.930234e 1
我可以获取这些值并从中制作直方图。
我担心在带有~532Mb
文件的笔记本电脑上这样做会花费很长时间。
有谁知道如何加快速度?
谢谢。