/* *======================================================================================== * (C) Copyright 2019 АО "Диаконт" * г. Санкт-Петербург, Россия * * Файл: iqmath.h * Описание: Реализация вычислений iq * *======================================================================================== */ #ifndef IQMATH_H_ #define IQMATH_H_ /* *---------------------------------------------------------------------------------------- *Включаемые файлы *---------------------------------------------------------------------------------------- */ /* *---------------------------------------------------------------------------------------- *Объявления макросов *---------------------------------------------------------------------------------------- */ #define _IQsat(A, Pos, Neg) (__fmax(((__fmin((A),(Pos)))),(Neg))) #define _IQ(A) (A) #define _IQmpy(A, B) ((A) * (B)) #define _IQdiv2(A) ((A) * 0.5f) #define _IQmpy2(A) ((A) * 2.0f) #define IQtoQ5(A) (long) ((A) * 32.0f) #define IQtoQ6(A) (long) ((A) * 64.0f) #define IQtoQ8(A) (long) ((A) * 256.0f) #define IQtoQ12(A) (long) ((A) * 4096.0f) #define Q5toIQ(A) (((float) (A)) * 0.031250f) #define Q6toIQ(A) (((float) (A)) * 0.015625f) #define ONEbySQRT3 0.57735026918963 /* 1/sqrt(3) */ #define ABS(x) ( ((x) >= 0) ? (x) : -(x) ) #define FABS(x) ( ((x) >= 0.0f) ? (x) : -(x) ) /* *---------------------------------------------------------------------------------------- *Объявления типов *---------------------------------------------------------------------------------------- */ typedef float _iq; /* *---------------------------------------------------------------------------------------- *Объявления функций *---------------------------------------------------------------------------------------- */ /* *---------------------------------------------------------------------------------------- *Определения глобальных переменных *---------------------------------------------------------------------------------------- */ #endif /* IQMATH_H_ */