ttの日記: [lame4] pow075
日記 by
tt
そんなわけで、x^(3/4)を計算する際に、sqrt()を使わないですむようにコードを書いてみる。
基本的にはただの二項展開である。ただし、浮動小数点フォーマットの特徴(仮数、指数に分解すると、仮数部は1から2の間になる)を使うことで、多項式の次数を下げることをやっている。って、実は午後のこ~だで使っているのとほとんど同じアルゴリズムだったりするのですけどね。
まあ、午後のこ~だはアセンブラで書いてるけど、こっちはCで書いてるとか、多項式の係数を調整してちょっと精度を上げてるとかの細かい変更はあるけど。こういう基本計算は、この辺を除くと誰が書いても同じになっちゃいますよね…
てのはさておき。
このコードにより、予想通りG4マシン上で大幅な速度改善(14%)を実現できた。めでたし。またi386系のマシンでもFPUしかないマシンでは速くなる。でも、流石にSSEや3DNow!には負けてるみたい。
[lame4] pow075 More ログイン