Страницы

Страницы

среда, 4 февраля 2015 г.

CMSIS DSP Library: arm_sqrt_q15

Определение функции:

arm_status arm_sqrt_q15(q15_t in, q15_t * pOut)

q15 - формат с фиксированной точкой  1.15 в котором 0 представлен как 0х0000, а 1 представлена как 0х7FFF. Это значит, что например 1/2 будет представлена в формате 0х4000, а 1/4 как 0х2000. Функция возвращает статус  ARM_MATH_SUCCESS или ARM_MATH_ARGUMENT_ERROR. Результат функция возвращает по ссылке pOut. Результат представлен также в формате q15. Например

arm_sqrt_q15(0x1000,&out);

0х1000 является представлением в формате q15 числа 1/8 или 0.125. Корень квадратный sqrt(0.125)=0.3536. Функция дает результат 0х2D42 = 11586/2^15 = 0,3536. Время выполнения функции для 32F103 @72MHz  - 244 такта  (3,39 mks).

Аналогичным образом используется и более точная функция:

arm_sqrt_q31(q31_t in, q31_t * pOut);

Ее время выполнения функции для 32F103 @72MHz  - 286 тактов  (3,97 mks).

Для плавающей точки:

arm_sqrt_f32(float32_t in, float32_t * pOut);

Время выполнения функции для 32F103 @72MHz  - 544 такта  (7,56 mks).

Указанное время выполнения функций были определены для версии V1.4.4 библиотеки CMSIS DSP (Date: 12. March 2014), которая идентична предыдущим версиям V1.4.3, V1.4.2, и V1.4.1.

Для справки: при использовании стандартной библиотеки Си math.h для различных типов переменных получим примерно такие (в зависимости от аргумента) времена выполнения функций в тактах

float         sqrtf(float)     ~ 575
double      sqrt(double)  ~ 2640


Комментариев нет:

Отправить комментарий