| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #ifndef _FIX_MATH_H__
- #define _FIX_MATH_H__
- #include "bsp/bsp.h"
- #include "os/os_types.h"
- typedef signed short _s16q10_t;
- typedef signed short _s16q5_t;
- typedef signed short _s16q4_t;
- typedef signed int _s32q4_t;
- #define S16Q4(A) (signed short)((A) * 16.0F)
- #define S16Q5(A) (signed short)((A) * 32.0F)
- #define S16Q10(A) (signed short)((A) * 1024.0F)
- #define S32Q4(A) (signed int)((A) * 16.0F)
- static __INLINE float S16Q4toF(_s16q4_t v) {
- s16 num = (v >> 4) & 0xFFFF;
- u16 tail = v & 0x000F;
- float f = num + (float)tail / 16.0f;
- return f;
- }
- static __INLINE float S16Q5toF(_s16q5_t v) {
- s16 num = (v >> 5) & 0xFFFF;
- u16 tail = v & 0x001F;
- float f = num + (float)tail / 32.0f;
- return f;
- }
- static __INLINE float S16Q10toF(_s16q5_t v) {
- s16 num = (v >> 10) & 0xFFFF;
- u16 tail = v & 0x03FF;
- float f = num + (float)tail / 1024.0f;
- return f;
- }
- static __INLINE float S32Q4toF(_s32q4_t v) {
- s32 num = (v >> 4) & 0xFFFFFFFF;
- u16 tail = v & 0x000F;
- float f = num + (float)tail / 16.0f;
- return f;
- }
- #endif /* _FIX_MATH_H__ */
|