iPhoneでの浮動小数点演算

 面白そうなアニメーションにどっぷりつかる前に、どうも一点気になっていた、"noninterleaved linear PCM 8.24 bits fixed point"について調べてみた。Canonical Formatは、Mac OSX上だと32bit floating pointだったので、デジタルデータをfloatで取得して演算していたのだが、そのままではiPhoneではまともに動かなかった。そこで調べてみると、iPhoneではその、8.24だったのだ。

 iPhone上の8.24は、32bitのSInt32の中で、8bitを整数部、24bitを小数点部にしたもので、3.14159を52707134などと表す。どうしてこういう数字が来ちゃうのかなあ、と最初は8.24に大して気を配らなかったので、随分手を焼いた。先のaurioは、このような固定小数点演算をゴリゴリやっているわけだ。

 単純にfloatで表現するなら、m.nの固定小数点データを、2^nで割ればいい。逆はかける。

 と、いうようにひとまずfloatにしてかわしたのだが、そもそも浮動小数点を使った演算は、iPhone上では御法度かと不安になった。

 Break That Thumb For Best iPhone Performanceによると、iPhoneに搭載されているARM(CPU)用に、ThumbのOn/Offがあって、XCode統合開発環境)ではデフォルトでOnになっている(下写真)。

 ということで、これをOffにすれば浮動小数点演算も高速に実行できるようだ。

 とはいっても、またここに戻ってきそうな気がするが。