Fortranの割り算について
フォートランによる数値計算についてお尋ねします。(技術系では今でもフォートランが現役なので)
何百万回も割り算をするアルゴリズムがあります。分母は定数で、分子がいっぱい変化します。としますと、割り算ではなく、分の1を計算して掛け算にしてもよいわけです。精度よりも高速化のほうが今はウェイトが高い状況です。
プログラムとしてそのように組んだ方が速いかも、と思いますが、一方でコンパイラが気を利かせて掛け算としてコンパイルしているかも知れません。もし、そうならばプログラムを書き換える意味がありません。
このあたりがコンパイラオプションなのかな?と思いますが、デフォルトでどのように計算しているか不明なのです。
以前の数値計算の本(PC-9801の頃)では時間を計って”ほら、割り算より掛け算が早いでしょ”ということを示すものなどがありました。そのような場合はコンパイラがそこまで気を利かせていないということになりますが、だいたいのところコンパイラは割り算をできるだけ掛け算に変更しようとしているのでしょうか。
PC上でのフォートラン(コンパックフォートランです。Microsoft,DECとオーナが変わってきてついに終わってしまったPC用のあのフォートランです。)を使っています。藁をも掴む思いで高速化を進めています。いかがでしょうか。
お礼
回答ありがとうございます。 乗除算よりもやはりチューニングやアルゴリズムということですね。 今までは乗除算にこだわりすぎていたような気がしました。 分かりやすい説明、ありがとうございました。 m(_ _)m