arm_sqrt_q15関数 |
sqrt(平方根)を求める |
![]() CMSIS_2_00\CMSIS\DSP_Lib\Source\Cortex-M4-M3\FastMathFunctions\arm_sqrt_q15.c ![]() 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という関数を使う。 |