imaicの日記: 整数演算による三角関数 4
日記 by
imaic
テーブル参照のコンパクトな実装で参考になる。
関数の値である0-1を0-65535に対応させているので、最終的に65535で割っている。
これは関数の値を0-32768とすれば、割るときにシフト演算になるので高速化できそうだ。
精度は1bit犠牲になるが。
テーブル参照のコンパクトな実装で参考になる。
関数の値である0-1を0-65535に対応させているので、最終的に65535で割っている。
これは関数の値を0-32768とすれば、割るときにシフト演算になるので高速化できそうだ。
精度は1bit犠牲になるが。
一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy
線形補間も高速化可能 (スコア:2)
512分割してるが256分割にすれば8bit乗算器が
使える。
シフトではなく引き算 (スコア:1)
浮動小数点(float)なので、32768で割るのは右シフトではなく、指数部の引き算ですね。
で、65536=1.0な下駄で、ついでに「sinθが65535/65536になる角度」も記録しておいて、その角度以上の時は1.0にしてしまえば、unsigned short のテーブルでも16bitの精度で算出できるような気がします。
Re: (スコア:0)
floatにする必要もないんだな
CORDICとか (スコア:1)