arm_recip_q15関数
reciprocal value(逆数)を求める

関数のソース(CMSIS 2.0以上をダウンロード・インストールする必要あり)
CMSIS\DSP_Lib\Include\arm_math.h

サンプルソース(DFFSKN40基板付属CD-ROMに収録)
IARprojects\src\projects\arm_recip

引数と戻り値


説明(イメージ)


使用例(サンプルソースの一部)

q15_t x[] = {1, 100, 10000, 32767};
q15_t recipVal[] = {0, 0, 0, 0};

 : 中略

for(n = 0; n < 4; n++) {
expbit[n] = arm_recip_q15(x[n], recipVal+n, armRecipTableQ15);
}


実験
上記のサンプルソースを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を使う。

戻る

Top Page