arm_recip_q15関数 |
reciprocal value(逆数)を求める |
関数のソース(CMSIS 2.0以上をダウンロード・インストールする必要あり) CMSIS\DSP_Lib\Include\arm_math.h サンプルソース(DFFSKN40基板付属CD-ROMに収録) IARprojects\src\projects\arm_recip 引数と戻り値 説明(イメージ) 使用例(サンプルソースの一部)
実験 上記のサンプルソースをDFFSKN40基板(デジタルフィルター社)にて実験した。Cortex-M4マイコンはPK40X256VMD100(Kinetis, フリースケール社)搭載。演算結果をLCDに16進数で表示している。 下の写真はn = 0のとき。 x[0] = 1のとき指数部が15 (0xF)、仮数部が32766 (0x7FFE) 下の写真はn = 1のとき。 x[1] = 100 (0x0064)のとき指数部が9、仮数部が20971 (0x51EB) 下の写真はn = 2のとき。 x[2] = 10000 (0x2710)のとき指数部が2、仮数部が26842 (0x68DA) 下の写真はn = 3のとき。 x[3] = 32767 (0x7FFF)のとき指数部が1、仮数部が16383 (0x3FFF) まめ知識 EXCELで計算させてみると以下のようになる。逆数値を表現する手段として指数部・仮数部という2つの情報を用いることに注意。Q15値とはQ15フォーマットにおける値で2^15=32768で割ったもの。 いわゆるニュートン法で平方根を求める。漸化式は2回繰り返す。 漸化式の初期値を求めるのにarmRecipTableQ15を使う。 |