arm_sqrt_q15関数 |
sqrt(平方根)を求める |
関数のソース(CMSIS 2.0以上をダウンロード・インストールする必要あり) CMSIS_2_00\CMSIS\DSP_Lib\Source\Cortex-M4-M3\FastMathFunctions\arm_sqrt_q15.c サンプルソース(DFFSKN40基板付属CD-ROMに収録) IARprojects\src\projects\arm_sqrt 引数と戻り値 説明(イメージ) 使用例(サンプルソースの一部)
実験 上記のサンプルソースをDFFSKN40基板(デジタルフィルター社)にて実験した。Cortex-M4マイコンはPK40X256VMD100(Kinetis, フリースケール社)搭載。演算結果をLCDに16進数で表示している。 下の写真はn = 0のとき。 x[0] = 30,000(16進で0x7530)なので、30,000 / 32,768 = 0.91552 という意味。 演算結果sqrtVal[0] = 0x 7A77、10進で31,351、すなわち31,351 / 32,768 = 0.95676 下の写真はn = 1のとき。 x[1] = 16,384(16進で0x4000)なので、16,384 / 32,768 = 0.5 という意味。 演算結果sqrtVal[1] = 0x 5A82、10進で23,170、すなわち23,170 / 32,768 = 0.70709 下の写真はn = 2のとき。 x[2] = 8,192(16進で0x2000)なので、8,192 / 32,768 = 0.25 という意味。 演算結果sqrtVal[2] = 0x 3FFF、10進で16,383、すなわち16,383 / 32,768 = 0.49996 下の写真はn = 3のとき。 x[3] = 3,276(16進で0x0CCC)なので、3,276 / 32,768 = 0.1 という意味。 演算結果sqrtVal[3] = 0x 2877、10進で10,359、すなわち10,359 / 32,768 = 0.31613 まめ知識 いわゆるニュートン法で平方根を求める。漸化式は10回繰り返す。逆数を求めるのにarm_recip_q15という関数を使う。 |