ライブラリ

提供: IS2005 Wiki (CPU実験)
2015年11月29日 (日) 06:11時点におけるMaintenance script (トーク)による版 (ページの作成:「== 3/13 新sincos for compiler2 == compiler2に対応しました。しかしfadd/fsubが今のところCのプログラムと異なる結果を返すので、不正確...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

3/13 新sincos for compiler2

compiler2に対応しました。しかしfadd/fsubが今のところCのプログラムと異なる結果を返すので、不正確な画像が出力されます。

media:ライブラリ-"assembler.20060313.zip"

(注:デバッグ用にアセンブラやシミュレータを若干書き換えてあります。)


と思ったのですが、Cで書いた関数をそのままシミュレータ内で使っても不正確な画像が生成されました。なんでだろ?

Comment by ひらの

結局旧バージョンのままでいきます。精度まわりは、自分が確かめる余裕もないので、高山氏を信じます。

12/30 多項式近似の係数

今更ですが、テイラー展開とチェビシェフ補間の両方で計算するサンプルです。掛け算の回数は両者で同じですが引数が0.6くらいまでだとテイラー展開の方が精度が良くて、それより大きくなるとチェビシェフ補間の方が精度が良くなります。

media:ライブラリ-"sincos.c"

Comment by ひらの

わかりやすくまとめてみた

引数 CORDIC誤差 Taylor展開誤差 Chebyshev補間誤差 許容誤差
0.000000 2.329762e-08 0.000000e+00 4.577872e-06 1.175494e-38
0.049087 -1.862645e-08 0.000000e+00 -3.729016e-06 1.871783e-07
0.098175 0.000000e+00 0.000000e+00 -4.053116e-06 3.739057e-07
0.147262 -4.470348e-08 0.000000e+00 -1.043081e-06 5.597323e-07
0.196350 1.490116e-08 0.000000e+00 2.264977e-06 7.442105e-07
0.245437 -5.960464e-08 0.000000e+00 4.231930e-06 9.268958e-07
0.294524 0.000000e+00 5.960464e-08 4.321337e-06 1.107348e-06
0.343612 0.000000e+00 1.192093e-07 2.652407e-06 1.285133e-06
0.392699 0.000000e+00 2.682209e-07 0.000000e+00 1.459821e-06
0.441786 0.000000e+00 6.556511e-07 -2.592802e-06 1.630993e-06
0.490874 2.980232e-08 1.370907e-06 -4.202127e-06 1.798236e-06
0.539961 0.000000e+00 2.622604e-06 -4.172325e-06 1.961146e-06
0.589049 -1.192093e-07 4.827976e-06 -2.205372e-06 2.119332e-06
0.638136 -1.788139e-07 8.523464e-06 1.072884e-06 2.272412e-06
0.687223 -1.192093e-07 1.424551e-05 3.874302e-06 2.420018e-06
0.736311 -1.788139e-07 2.306700e-05 3.516674e-06 2.561794e-06
0.785398 0.000000e+00 3.623962e-05 -4.351139e-06 2.697398e-06

Chebyshev補完は全区間に渡り均等な誤差になっており、凄いが、ちょっと精度が足らないか。Chebyshev補完の区間を[0,1/4π]でなく[1/8π,1/4π]に縮めるか、次数を上げるかしないと駄目なんだろうか。

ソース(12/22)

media:ライブラリ-"cordic.051222_3.zip"

12/22

2πを引く部分を改良し、バグを取りました。

12/21 三角関数

CORDICというアルゴリズムを用いてsin,cos,atanをとりあえずは実装してみますた。

誤差評価が後回しになってしまった・・・っていうかどうやってテストしたらいいかわかりませぬ。