1000000を計算するプログラムを書きました!FFTを使用します。
(短くして、理論的な共鳴を省略してください:))
round()
私がやりたいのは、double値とis -ed値の間のすべての丸め誤差を(math.h
関数を使用して)測定して、この誤差がどのように動作しているか(および1/2を超えているかどうか)を確認することです。
これを行うには、丸めを行うたびにとの差を出力し、結果をファイルに書き込みますa
。これを、を使用して呼び出します。round(a)
diffs.txt
~532Mb
fprintf(my_file,"%e\n",a-round(a));
次に、そのファイルに表示されるすべての値の出現をカウントする必要があります。
grep
私は、次のように、sort
とbashを使用して、複雑な方法でそうしていfor
ます。
./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
結果は2つのファイルです。そのファイルをペアリングすると、取得します
diff-sorted-unique: diff_counted:
-9.013892e-20 1
... ...
0.000000e0 200
... ...
9.930234e 1
これらの値を取得して、それらからヒストグラムを作成できます。
私の恐れは、~532Mb
ファイルを含むラップトップでこれを行うには長い時間がかかることです。
誰かが物事をスピードアップする方法を知っていますか?
ありがとう。