Go to the documentation of this file.
8 #define Q15_MUL_Q15(a,b) (__SSAT(((q31_t)(a)*(b))>>15, 16))
9 #define Q31_MUL_Q31(a,b) (__SSAT(((q63_t)(a)*(b))>>31, 32))
10 #define FLOAT_TO_Q7(a) (__SSAT((q15_t)((a)*128.0f), 8))
11 #define FLOAT_TO_Q15(a) (__SSAT((q31_t)((a)*32768.0f), 16))
12 #define FLOAT_TO_Q31(a) clip_q63_to_q31((q63_t)((a)*2147483648.0f))
14 #define Q7_CLIP(a) ((a) > Q7_MAX ? Q7_MAX : (a) < Q7_MIN ? Q7_MIN : (a))
15 #define Q15_CLIP(a) ((a) > Q15_MAX ? Q15_MAX : (a) < Q15_MIN ? Q15_MIN : (a))
16 #define Q31_CLIP(a) ((a) > Q31_MAX ? Q31_MAX : (a) < Q31_MIN ? Q31_MIN : (a))
17 #define Q15_MUL_Q15(a,b) Q15_CLIP(((q63_t)(a)*(b))>>15)
18 #define Q31_MUL_Q31(a,b) Q31_CLIP(((q63_t)(a)*(b))>>31)
19 #define FLOAT_TO_Q7(a) Q7_CLIP((q15_t)((a)*128.0f))
20 #define FLOAT_TO_Q15(a) Q15_CLIP((q63_t)((a)*32768.0f))
21 #define FLOAT_TO_Q31(a) Q31_CLIP((q63_t)((a)*2147483648.0f))
30 #define Q7_MIN INT8_MIN
33 #define Q7_MAX INT8_MAX
36 #define Q15_MIN INT16_MIN
39 #define Q15_MAX INT16_MAX
42 #define Q31_MIN INT32_MIN
45 #define Q31_MAX INT32_MAX
48 #define Q15_DIV_Q15(a,b) (((q31_t)(a)<<15)/(b))
49 #define Q15_RECIPROCAL(a) (((q31_t)Q15_MAX<<15)/(a))
51 #define Q7_TO_FLOAT(a) ((float)(a)/128.0f)
52 #define Q15_TO_FLOAT(a) ((float)(a)/32768.0f)
53 #define Q31_TO_FLOAT(a) ((float)(a)/2147483648.0f)
54 #define Q63_TO_FLOAT(a) ((float)(a)/9223372036854775808.0f)