dポイントプレゼントキャンペーン実施中!

FFTのプログラミングで計算時間を短縮するため、三角関数の計算にチェビシェフの三項漸化式を用いたところ、計算時間はかなり短縮されました。ただ精度が心配なので、組み込み関数の三角関数の倍精度結果と、漸化式の単精度および倍精度の結果を比較したところ、2000点を越えるあたりから単精度ではかなりの誤差が生じましたが、倍精度では問題ありませんでした。そこで質問ですが、単精度と倍精度の違いとして、「精度とメモリが倍」は分かるのですが、計算時間はどうなるのでしょうか。
参考:チェビシェフの三項漸化式
cos{(j+1)*h} = 2*cos(h) * cos(j*h) - cos{(j-1)*h}
sin {(j+1)*h} = 2*cos(h) * sin(j*h) - sin{(j-1)*h}

A 回答 (1件)

パソコンのプログラムで良いかな。


組み込み関数ならFPU命令を使ってそうだからほとんど変わらないかも。

一般にFPU命令(x87)を使うならほとんど変わらないでしょう。
SSE系の命令を使って並列演算するなら倍精度は倍かかるかも。
参考URLに情報がありました。

参考URL:http://ml.tietew.jp/cppll/cppll/thread_articles/ …
    • good
    • 0
この回答へのお礼

早速のご回答をありがとうございます。教えていただいたURLを見たのですが、マチマチの意見のようで、ハッキリしませんでした。そこで簡単な式;a=(abs(sin(b))**0.33)**0.11を単精度と倍精度で各々10万個、50万個、100万個の3ケースを計算して経過時間を調べました。その結果、3ケースとも、誤差と思われる2,3%程度の差はありましたが、単精度と倍精度の計算時間はほぼ同じと判りました。
ちなみに当方の環境は、WIN-XP-SP2,言語はPowerStation FORTRAN4.0です。

お礼日時:2008/01/18 21:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!