662 lines
20 KiB
C
662 lines
20 KiB
C
|
/**
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IQmath <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> MATLAB
|
|||
|
*
|
|||
|
*/
|
|||
|
#ifndef IQ_MATH_LIB
|
|||
|
#define IQ_MATH_LIB
|
|||
|
|
|||
|
|
|||
|
#ifndef GLOBAL_Q
|
|||
|
#define GLOBAL_Q 24
|
|||
|
#endif
|
|||
|
|
|||
|
typedef long _iq;
|
|||
|
typedef long _iq30;
|
|||
|
typedef long _iq29;
|
|||
|
typedef long _iq28;
|
|||
|
typedef long _iq27;
|
|||
|
typedef long _iq26;
|
|||
|
typedef long _iq25;
|
|||
|
typedef long _iq24;
|
|||
|
typedef long _iq23;
|
|||
|
typedef long _iq22;
|
|||
|
typedef long _iq21;
|
|||
|
typedef long _iq20;
|
|||
|
typedef long _iq19;
|
|||
|
typedef long _iq18;
|
|||
|
typedef long _iq17;
|
|||
|
typedef long _iq16;
|
|||
|
typedef long _iq15;
|
|||
|
typedef long _iq14;
|
|||
|
typedef long _iq13;
|
|||
|
typedef long _iq12;
|
|||
|
typedef long _iq11;
|
|||
|
typedef long _iq10;
|
|||
|
typedef long _iq9;
|
|||
|
typedef long _iq8;
|
|||
|
typedef long _iq7;
|
|||
|
typedef long _iq6;
|
|||
|
typedef long _iq5;
|
|||
|
typedef long _iq4;
|
|||
|
typedef long _iq3;
|
|||
|
typedef long _iq2;
|
|||
|
typedef long _iq1;
|
|||
|
|
|||
|
//---------------------------------------------------------------------------
|
|||
|
#define _IQmpy2(A) ((A)<<1)
|
|||
|
#define _IQmpy4(A) ((A)<<2)
|
|||
|
#define _IQmpy8(A) ((A)<<3)
|
|||
|
#define _IQmpy16(A) ((A)<<4)
|
|||
|
#define _IQmpy32(A) ((A)<<5)
|
|||
|
#define _IQmpy64(A) ((A)<<6)
|
|||
|
|
|||
|
#define _IQdiv2(A) ((A)>>1)
|
|||
|
#define _IQdiv4(A) ((A)>>2)
|
|||
|
#define _IQdiv8(A) ((A)>>3)
|
|||
|
#define _IQdiv16(A) ((A)>>4)
|
|||
|
#define _IQdiv32(A) ((A)>>5)
|
|||
|
#define _IQdiv64(A) ((A)>>6)
|
|||
|
//---------------------------------------------------------------------------
|
|||
|
#define _IQ30(A) (long) ((A) * 1073741824.0L)
|
|||
|
#define _IQ29(A) (long) ((A) * 536870912.0L)
|
|||
|
#define _IQ28(A) (long) ((A) * 268435456.0L)
|
|||
|
#define _IQ27(A) (long) ((A) * 134217728.0L)
|
|||
|
#define _IQ26(A) (long) ((A) * 67108864.0L)
|
|||
|
#define _IQ25(A) (long) ((A) * 33554432.0L)
|
|||
|
#define _IQ24(A) (long) ((A) * 16777216.0L)
|
|||
|
#define _IQ23(A) (long) ((A) * 8388608.0L)
|
|||
|
#define _IQ22(A) (long) ((A) * 4194304.0L)
|
|||
|
#define _IQ21(A) (long) ((A) * 2097152.0L)
|
|||
|
#define _IQ20(A) (long) ((A) * 1048576.0L)
|
|||
|
#define _IQ19(A) (long) ((A) * 524288.0L)
|
|||
|
#define _IQ18(A) (long) ((A) * 262144.0L)
|
|||
|
#define _IQ17(A) (long) ((A) * 131072.0L)
|
|||
|
#define _IQ16(A) (long) ((A) * 65536.0L)
|
|||
|
#define _IQ15(A) (long) ((A) * 32768.0L)
|
|||
|
#define _IQ14(A) (long) ((A) * 16384.0L)
|
|||
|
#define _IQ13(A) (long) ((A) * 8192.0L)
|
|||
|
#define _IQ12(A) (long) ((A) * 4096.0L)
|
|||
|
#define _IQ11(A) (long) ((A) * 2048.0L)
|
|||
|
#define _IQ10(A) (long) ((A) * 1024.0L)
|
|||
|
#define _IQ9(A) (long) ((A) * 512.0L)
|
|||
|
#define _IQ8(A) (long) ((A) * 256.0L)
|
|||
|
#define _IQ7(A) (long) ((A) * 128.0L)
|
|||
|
#define _IQ6(A) (long) ((A) * 64.0L)
|
|||
|
#define _IQ5(A) (long) ((A) * 32.0L)
|
|||
|
#define _IQ4(A) (long) ((A) * 16.0L)
|
|||
|
#define _IQ3(A) (long) ((A) * 8.0L)
|
|||
|
#define _IQ2(A) (long) ((A) * 4.0L)
|
|||
|
#define _IQ1(A) (long) ((A) * 2.0L)
|
|||
|
|
|||
|
#if GLOBAL_Q == 30
|
|||
|
#define _IQ(A) _IQ30(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 29
|
|||
|
#define _IQ(A) _IQ29(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 28
|
|||
|
#define _IQ(A) _IQ28(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 27
|
|||
|
#define _IQ(A) _IQ27(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 26
|
|||
|
#define _IQ(A) _IQ26(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 25
|
|||
|
#define _IQ(A) _IQ25(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 24
|
|||
|
#define _IQ(A) _IQ24(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 23
|
|||
|
#define _IQ(A) _IQ23(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 22
|
|||
|
#define _IQ(A) _IQ22(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 21
|
|||
|
#define _IQ(A) _IQ21(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 20
|
|||
|
#define _IQ(A) _IQ20(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 19
|
|||
|
#define _IQ(A) _IQ19(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 18
|
|||
|
#define _IQ(A) _IQ18(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 17
|
|||
|
#define _IQ(A) _IQ17(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 16
|
|||
|
#define _IQ(A) _IQ16(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 15
|
|||
|
#define _IQ(A) _IQ15(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 14
|
|||
|
#define _IQ(A) _IQ14(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 13
|
|||
|
#define _IQ(A) _IQ13(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 12
|
|||
|
#define _IQ(A) _IQ12(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 11
|
|||
|
#define _IQ(A) _IQ11(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 10
|
|||
|
#define _IQ(A) _IQ10(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 9
|
|||
|
#define _IQ(A) _IQ9(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 8
|
|||
|
#define _IQ(A) _IQ8(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 7
|
|||
|
#define _IQ(A) _IQ7(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 6
|
|||
|
#define _IQ(A) _IQ6(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 5
|
|||
|
#define _IQ(A) _IQ5(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 4
|
|||
|
#define _IQ(A) _IQ4(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 3
|
|||
|
#define _IQ(A) _IQ3(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 2
|
|||
|
#define _IQ(A) _IQ2(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 1
|
|||
|
#define _IQ(A) _IQ1(A)
|
|||
|
#endif
|
|||
|
|
|||
|
//---------------------------------------------------------------------------
|
|||
|
|
|||
|
#define _IQ30toF(A) ((float) ((A) / 1073741824.0L))
|
|||
|
#define _IQ29toF(A) ((float) ((A) / 536870912.0L))
|
|||
|
#define _IQ28toF(A) ((float) ((A) / 268435456.0L))
|
|||
|
#define _IQ27toF(A) ((float) ((A) / 134217728.0L))
|
|||
|
#define _IQ26toF(A) ((float) ((A) / 67108864.0L))
|
|||
|
#define _IQ25toF(A) ((float) ((A) / 33554432.0L))
|
|||
|
#define _IQ24toF(A) ((float) ((A) / 16777216.0L))
|
|||
|
#define _IQ23toF(A) ((float) ((A) / 8388608.0L))
|
|||
|
#define _IQ22toF(A) ((float) ((A) / 4194304.0L))
|
|||
|
#define _IQ21toF(A) ((float) ((A) / 2097152.0L))
|
|||
|
#define _IQ20toF(A) ((float) ((A) / 1048576.0L))
|
|||
|
#define _IQ19toF(A) ((float) ((A) / 524288.0L))
|
|||
|
#define _IQ18toF(A) ((float) ((A) / 262144.0L))
|
|||
|
#define _IQ17toF(A) ((float) ((A) / 131072.0L))
|
|||
|
#define _IQ16toF(A) ((float) ((A) / 65536.0L))
|
|||
|
#define _IQ15toF(A) ((float) ((A) / 32768.0L))
|
|||
|
#define _IQ14toF(A) ((float) ((A) / 16384.0L))
|
|||
|
#define _IQ13toF(A) ((float) ((A) / 8192.0L))
|
|||
|
#define _IQ12toF(A) ((float) ((A) / 4096.0L))
|
|||
|
#define _IQ11toF(A) ((float) ((A) / 2048.0L))
|
|||
|
#define _IQ10toF(A) ((float) ((A) / 1024.0L))
|
|||
|
#define _IQ9toF(A) ((float) ((A) / 512.0L))
|
|||
|
#define _IQ8toF(A) ((float) ((A) / 256.0L))
|
|||
|
#define _IQ7toF(A) ((float) ((A) / 128.0L))
|
|||
|
#define _IQ6toF(A) ((float) ((A) / 64.0L))
|
|||
|
#define _IQ5toF(A) ((float) ((A) / 32.0L))
|
|||
|
#define _IQ4toF(A) ((float) ((A) / 16.0L))
|
|||
|
#define _IQ3toF(A) ((float) ((A) / 8.0L))
|
|||
|
#define _IQ2toF(A) ((float) ((A) / 4.0L))
|
|||
|
#define _IQ1toF(A) ((float) ((A) / 2.0L))
|
|||
|
|
|||
|
#if GLOBAL_Q == 30
|
|||
|
#define _IQtoF(A) _IQ30toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 29
|
|||
|
#define _IQtoF(A) _IQ29toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 28
|
|||
|
#define _IQtoF(A) _IQ28toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 27
|
|||
|
#define _IQtoF(A) _IQ27toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 26
|
|||
|
#define _IQtoF(A) _IQ26toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 25
|
|||
|
#define _IQtoF(A) _IQ25toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 24
|
|||
|
#define _IQtoF(A) _IQ24toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 23
|
|||
|
#define _IQtoF(A) _IQ23toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 22
|
|||
|
#define _IQtoF(A) _IQ22toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 21
|
|||
|
#define _IQtoF(A) _IQ21toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 20
|
|||
|
#define _IQtoF(A) _IQ20toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 19
|
|||
|
#define _IQtoF(A) _IQ19toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 18
|
|||
|
#define _IQtoF(A) _IQ18toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 17
|
|||
|
#define _IQtoF(A) _IQ17toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 16
|
|||
|
#define _IQtoF(A) _IQ16toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 15
|
|||
|
#define _IQtoF(A) _IQ15toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 14
|
|||
|
#define _IQtoF(A) _IQ14toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 13
|
|||
|
#define _IQtoF(A) _IQ13toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 12
|
|||
|
#define _IQtoF(A) _IQ12toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 11
|
|||
|
#define _IQtoF(A) _IQ11toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 10
|
|||
|
#define _IQtoF(A) _IQ10toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 9
|
|||
|
#define _IQtoF(A) _IQ9toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 8
|
|||
|
#define _IQtoF(A) _IQ8toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 7
|
|||
|
#define _IQtoF(A) _IQ7toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 6
|
|||
|
#define _IQtoF(A) _IQ6toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 5
|
|||
|
#define _IQtoF(A) _IQ5toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 4
|
|||
|
#define _IQtoF(A) _IQ4toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 3
|
|||
|
#define _IQtoF(A) _IQ3toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 2
|
|||
|
#define _IQtoF(A) _IQ2toF(A)
|
|||
|
#endif
|
|||
|
#if GLOBAL_Q == 1
|
|||
|
#define _IQtoF(A) _IQ1toF(A)
|
|||
|
#endif
|
|||
|
|
|||
|
#define _IQsat(A, Pos, Neg) ((A > Pos) ? Pos : (A < Neg) ? Neg : A)
|
|||
|
//---------------------------------------------------------------------------
|
|||
|
#define _IQtoIQ30(A) ((long) (A) << (30 - GLOBAL_Q))
|
|||
|
#define _IQ30toIQ(A) ((long) (A) >> (30 - GLOBAL_Q))
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 29)
|
|||
|
#define _IQtoIQ29(A) ((long) (A) >> (GLOBAL_Q - 29))
|
|||
|
#define _IQ29toIQ(A) ((long) (A) << (GLOBAL_Q - 29))
|
|||
|
#else
|
|||
|
#define _IQtoIQ29(A) ((long) (A) << (29 - GLOBAL_Q))
|
|||
|
#define _IQ29toIQ(A) ((long) (A) >> (29 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 28)
|
|||
|
#define _IQtoIQ28(A) ((long) (A) >> (GLOBAL_Q - 28))
|
|||
|
#define _IQ28toIQ(A) ((long) (A) << (GLOBAL_Q - 28))
|
|||
|
#else
|
|||
|
#define _IQtoIQ28(A) ((long) (A) << (28 - GLOBAL_Q))
|
|||
|
#define _IQ28toIQ(A) ((long) (A) >> (28 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 27)
|
|||
|
#define _IQtoIQ27(A) ((long) (A) >> (GLOBAL_Q - 27))
|
|||
|
#define _IQ27toIQ(A) ((long) (A) << (GLOBAL_Q - 27))
|
|||
|
#else
|
|||
|
#define _IQtoIQ27(A) ((long) (A) << (27 - GLOBAL_Q))
|
|||
|
#define _IQ27toIQ(A) ((long) (A) >> (27 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 26)
|
|||
|
#define _IQtoIQ26(A) ((long) (A) >> (GLOBAL_Q - 26))
|
|||
|
#define _IQ26toIQ(A) ((long) (A) << (GLOBAL_Q - 26))
|
|||
|
#else
|
|||
|
#define _IQtoIQ26(A) ((long) (A) << (26 - GLOBAL_Q))
|
|||
|
#define _IQ26toIQ(A) ((long) (A) >> (26 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 25)
|
|||
|
#define _IQtoIQ25(A) ((long) (A) >> (GLOBAL_Q - 25))
|
|||
|
#define _IQ25toIQ(A) ((long) (A) << (GLOBAL_Q - 25))
|
|||
|
#else
|
|||
|
#define _IQtoIQ25(A) ((long) (A) << (25 - GLOBAL_Q))
|
|||
|
#define _IQ25toIQ(A) ((long) (A) >> (25 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 24)
|
|||
|
#define _IQtoIQ24(A) ((long) (A) >> (GLOBAL_Q - 24))
|
|||
|
#define _IQ24toIQ(A) ((long) (A) << (GLOBAL_Q - 24))
|
|||
|
#else
|
|||
|
#define _IQtoIQ24(A) ((long) (A) << (24 - GLOBAL_Q))
|
|||
|
#define _IQ24toIQ(A) ((long) (A) >> (24 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 23)
|
|||
|
#define _IQtoIQ23(A) ((long) (A) >> (GLOBAL_Q - 23))
|
|||
|
#define _IQ23toIQ(A) ((long) (A) << (GLOBAL_Q - 23))
|
|||
|
#else
|
|||
|
#define _IQtoIQ23(A) ((long) (A) << (23 - GLOBAL_Q))
|
|||
|
#define _IQ23toIQ(A) ((long) (A) >> (23 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 22)
|
|||
|
#define _IQtoIQ22(A) ((long) (A) >> (GLOBAL_Q - 22))
|
|||
|
#define _IQ22toIQ(A) ((long) (A) << (GLOBAL_Q - 22))
|
|||
|
#else
|
|||
|
#define _IQtoIQ22(A) ((long) (A) << (22 - GLOBAL_Q))
|
|||
|
#define _IQ22toIQ(A) ((long) (A) >> (22 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 21)
|
|||
|
#define _IQtoIQ21(A) ((long) (A) >> (GLOBAL_Q - 21))
|
|||
|
#define _IQ21toIQ(A) ((long) (A) << (GLOBAL_Q - 21))
|
|||
|
#else
|
|||
|
#define _IQtoIQ21(A) ((long) (A) << (21 - GLOBAL_Q))
|
|||
|
#define _IQ21toIQ(A) ((long) (A) >> (21 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 20)
|
|||
|
#define _IQtoIQ20(A) ((long) (A) >> (GLOBAL_Q - 20))
|
|||
|
#define _IQ20toIQ(A) ((long) (A) << (GLOBAL_Q - 20))
|
|||
|
#else
|
|||
|
#define _IQtoIQ20(A) ((long) (A) << (20 - GLOBAL_Q))
|
|||
|
#define _IQ20toIQ(A) ((long) (A) >> (20 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 19)
|
|||
|
#define _IQtoIQ19(A) ((long) (A) >> (GLOBAL_Q - 19))
|
|||
|
#define _IQ19toIQ(A) ((long) (A) << (GLOBAL_Q - 19))
|
|||
|
#else
|
|||
|
#define _IQtoIQ19(A) ((long) (A) << (19 - GLOBAL_Q))
|
|||
|
#define _IQ19toIQ(A) ((long) (A) >> (19 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 18)
|
|||
|
#define _IQtoIQ18(A) ((long) (A) >> (GLOBAL_Q - 18))
|
|||
|
#define _IQ18toIQ(A) ((long) (A) << (GLOBAL_Q - 18))
|
|||
|
#else
|
|||
|
#define _IQtoIQ18(A) ((long) (A) << (18 - GLOBAL_Q))
|
|||
|
#define _IQ18toIQ(A) ((long) (A) >> (18 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 17)
|
|||
|
#define _IQtoIQ17(A) ((long) (A) >> (GLOBAL_Q - 17))
|
|||
|
#define _IQ17toIQ(A) ((long) (A) << (GLOBAL_Q - 17))
|
|||
|
#else
|
|||
|
#define _IQtoIQ17(A) ((long) (A) << (17 - GLOBAL_Q))
|
|||
|
#define _IQ17toIQ(A) ((long) (A) >> (17 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 16)
|
|||
|
#define _IQtoIQ16(A) ((long) (A) >> (GLOBAL_Q - 16))
|
|||
|
#define _IQ16toIQ(A) ((long) (A) << (GLOBAL_Q - 16))
|
|||
|
#else
|
|||
|
#define _IQtoIQ16(A) ((long) (A) << (16 - GLOBAL_Q))
|
|||
|
#define _IQ16toIQ(A) ((long) (A) >> (16 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 15)
|
|||
|
#define _IQtoIQ15(A) ((long) (A) >> (GLOBAL_Q - 15))
|
|||
|
#define _IQ15toIQ(A) ((long) (A) << (GLOBAL_Q - 15))
|
|||
|
#define _IQtoQ15(A) ((long) (A) >> (GLOBAL_Q - 15))
|
|||
|
#define _Q15toIQ(A) ((long) (A) << (GLOBAL_Q - 15))
|
|||
|
#else
|
|||
|
#define _IQtoIQ15(A) ((long) (A) << (15 - GLOBAL_Q))
|
|||
|
#define _IQ15toIQ(A) ((long) (A) >> (15 - GLOBAL_Q))
|
|||
|
#define _IQtoQ15(A) ((long) (A) << (15 - GLOBAL_Q))
|
|||
|
#define _Q15toIQ(A) ((long) (A) >> (15 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 14)
|
|||
|
#define _IQtoIQ14(A) ((long) (A) >> (GLOBAL_Q - 14))
|
|||
|
#define _IQ14toIQ(A) ((long) (A) << (GLOBAL_Q - 14))
|
|||
|
#define _IQtoQ14(A) ((long) (A) >> (GLOBAL_Q - 14))
|
|||
|
#define _Q14toIQ(A) ((long) (A) << (GLOBAL_Q - 14))
|
|||
|
#else
|
|||
|
#define _IQtoIQ14(A) ((long) (A) << (14 - GLOBAL_Q))
|
|||
|
#define _IQ14toIQ(A) ((long) (A) >> (14 - GLOBAL_Q))
|
|||
|
#define _IQtoQ14(A) ((long) (A) << (14 - GLOBAL_Q))
|
|||
|
#define _Q14toIQ(A) ((long) (A) >> (14 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 13)
|
|||
|
#define _IQtoIQ13(A) ((long) (A) >> (GLOBAL_Q - 13))
|
|||
|
#define _IQ13toIQ(A) ((long) (A) << (GLOBAL_Q - 13))
|
|||
|
#define _IQtoQ13(A) ((long) (A) >> (GLOBAL_Q - 13))
|
|||
|
#define _Q13toIQ(A) ((long) (A) << (GLOBAL_Q - 13))
|
|||
|
#else
|
|||
|
#define _IQtoIQ13(A) ((long) (A) << (13 - GLOBAL_Q))
|
|||
|
#define _IQ13toIQ(A) ((long) (A) >> (13 - GLOBAL_Q))
|
|||
|
#define _IQtoQ13(A) ((long) (A) << (13 - GLOBAL_Q))
|
|||
|
#define _Q13toIQ(A) ((long) (A) >> (13 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 12)
|
|||
|
#define _IQtoIQ12(A) ((long) (A) >> (GLOBAL_Q - 12))
|
|||
|
#define _IQ12toIQ(A) ((long) (A) << (GLOBAL_Q - 12))
|
|||
|
#define _IQtoQ12(A) ((long) (A) >> (GLOBAL_Q - 12))
|
|||
|
#define _Q12toIQ(A) ((long) (A) << (GLOBAL_Q - 12))
|
|||
|
#else
|
|||
|
#define _IQtoIQ12(A) ((long) (A) << (12 - GLOBAL_Q))
|
|||
|
#define _IQ12toIQ(A) ((long) (A) >> (12 - GLOBAL_Q))
|
|||
|
#define _IQtoQ12(A) ((long) (A) << (12 - GLOBAL_Q))
|
|||
|
#define _Q12toIQ(A) ((long) (A) >> (12 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 11)
|
|||
|
#define _IQtoIQ11(A) ((long) (A) >> (GLOBAL_Q - 11))
|
|||
|
#define _IQ11toIQ(A) ((long) (A) << (GLOBAL_Q - 11))
|
|||
|
#define _IQtoQ11(A) ((long) (A) >> (GLOBAL_Q - 11))
|
|||
|
#define _Q11toIQ(A) ((long) (A) << (GLOBAL_Q - 11))
|
|||
|
#else
|
|||
|
#define _IQtoIQ11(A) ((long) (A) << (11 - GLOBAL_Q))
|
|||
|
#define _IQ11toIQ(A) ((long) (A) >> (11 - GLOBAL_Q))
|
|||
|
#define _IQtoQ11(A) ((long) (A) << (11 - GLOBAL_Q))
|
|||
|
#define _Q11toIQ(A) ((long) (A) >> (11 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 10)
|
|||
|
#define _IQtoIQ10(A) ((long) (A) >> (GLOBAL_Q - 10))
|
|||
|
#define _IQ10toIQ(A) ((long) (A) << (GLOBAL_Q - 10))
|
|||
|
#define _IQtoQ10(A) ((long) (A) >> (GLOBAL_Q - 10))
|
|||
|
#define _Q10toIQ(A) ((long) (A) << (GLOBAL_Q - 10))
|
|||
|
#else
|
|||
|
#define _IQtoIQ10(A) ((long) (A) << (10 - GLOBAL_Q))
|
|||
|
#define _IQ10toIQ(A) ((long) (A) >> (10 - GLOBAL_Q))
|
|||
|
#define _IQtoQ10(A) ((long) (A) << (10 - GLOBAL_Q))
|
|||
|
#define _Q10toIQ(A) ((long) (A) >> (10 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 9)
|
|||
|
#define _IQtoIQ9(A) ((long) (A) >> (GLOBAL_Q - 9))
|
|||
|
#define _IQ9toIQ(A) ((long) (A) << (GLOBAL_Q - 9))
|
|||
|
#define _IQtoQ9(A) ((long) (A) >> (GLOBAL_Q - 9))
|
|||
|
#define _Q9toIQ(A) ((long) (A) << (GLOBAL_Q - 9))
|
|||
|
#else
|
|||
|
#define _IQtoIQ9(A) ((long) (A) << (9 - GLOBAL_Q))
|
|||
|
#define _IQ9toIQ(A) ((long) (A) >> (9 - GLOBAL_Q))
|
|||
|
#define _IQtoQ9(A) ((long) (A) << (9 - GLOBAL_Q))
|
|||
|
#define _Q9toIQ(A) ((long) (A) >> (9 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 8)
|
|||
|
#define _IQtoIQ8(A) ((long) (A) >> (GLOBAL_Q - 8))
|
|||
|
#define _IQ8toIQ(A) ((long) (A) << (GLOBAL_Q - 8))
|
|||
|
#define _IQtoQ8(A) ((long) (A) >> (GLOBAL_Q - 8))
|
|||
|
#define _Q8toIQ(A) ((long) (A) << (GLOBAL_Q - 8))
|
|||
|
#else
|
|||
|
#define _IQtoIQ8(A) ((long) (A) << (8 - GLOBAL_Q))
|
|||
|
#define _IQ8toIQ(A) ((long) (A) >> (8 - GLOBAL_Q))
|
|||
|
#define _IQtoQ8(A) ((long) (A) << (8 - GLOBAL_Q))
|
|||
|
#define _Q8toIQ(A) ((long) (A) >> (8 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 7)
|
|||
|
#define _IQtoIQ7(A) ((long) (A) >> (GLOBAL_Q - 7))
|
|||
|
#define _IQ7toIQ(A) ((long) (A) << (GLOBAL_Q - 7))
|
|||
|
#define _IQtoQ7(A) ((long) (A) >> (GLOBAL_Q - 7))
|
|||
|
#define _Q7toIQ(A) ((long) (A) << (GLOBAL_Q - 7))
|
|||
|
#else
|
|||
|
#define _IQtoIQ7(A) ((long) (A) << (7 - GLOBAL_Q))
|
|||
|
#define _IQ7toIQ(A) ((long) (A) >> (7 - GLOBAL_Q))
|
|||
|
#define _IQtoQ7(A) ((long) (A) << (7 - GLOBAL_Q))
|
|||
|
#define _Q7toIQ(A) ((long) (A) >> (7 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 6)
|
|||
|
#define _IQtoIQ6(A) ((long) (A) >> (GLOBAL_Q - 6))
|
|||
|
#define _IQ6toIQ(A) ((long) (A) << (GLOBAL_Q - 6))
|
|||
|
#define _IQtoQ6(A) ((long) (A) >> (GLOBAL_Q - 6))
|
|||
|
#define _Q6toIQ(A) ((long) (A) << (GLOBAL_Q - 6))
|
|||
|
#else
|
|||
|
#define _IQtoIQ6(A) ((long) (A) << (6 - GLOBAL_Q))
|
|||
|
#define _IQ6toIQ(A) ((long) (A) >> (6 - GLOBAL_Q))
|
|||
|
#define _IQtoQ6(A) ((long) (A) << (6 - GLOBAL_Q))
|
|||
|
#define _Q6toIQ(A) ((long) (A) >> (6 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 5)
|
|||
|
#define _IQtoIQ5(A) ((long) (A) >> (GLOBAL_Q - 5))
|
|||
|
#define _IQ5toIQ(A) ((long) (A) << (GLOBAL_Q - 5))
|
|||
|
#define _IQtoQ5(A) ((long) (A) >> (GLOBAL_Q - 5))
|
|||
|
#define _Q5toIQ(A) ((long) (A) << (GLOBAL_Q - 5))
|
|||
|
#else
|
|||
|
#define _IQtoIQ5(A) ((long) (A) << (5 - GLOBAL_Q))
|
|||
|
#define _IQ5toIQ(A) ((long) (A) >> (5 - GLOBAL_Q))
|
|||
|
#define _IQtoQ5(A) ((long) (A) << (5 - GLOBAL_Q))
|
|||
|
#define _Q5toIQ(A) ((long) (A) >> (5 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 4)
|
|||
|
#define _IQtoIQ4(A) ((long) (A) >> (GLOBAL_Q - 4))
|
|||
|
#define _IQ4toIQ(A) ((long) (A) << (GLOBAL_Q - 4))
|
|||
|
#define _IQtoQ4(A) ((long) (A) >> (GLOBAL_Q - 4))
|
|||
|
#define _Q4toIQ(A) ((long) (A) << (GLOBAL_Q - 4))
|
|||
|
#else
|
|||
|
#define _IQtoIQ4(A) ((long) (A) << (4 - GLOBAL_Q))
|
|||
|
#define _IQ4toIQ(A) ((long) (A) >> (4 - GLOBAL_Q))
|
|||
|
#define _IQtoQ4(A) ((long) (A) << (4 - GLOBAL_Q))
|
|||
|
#define _Q4toIQ(A) ((long) (A) >> (4 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 3)
|
|||
|
#define _IQtoIQ3(A) ((long) (A) >> (GLOBAL_Q - 3))
|
|||
|
#define _IQ3toIQ(A) ((long) (A) << (GLOBAL_Q - 3))
|
|||
|
#define _IQtoQ3(A) ((long) (A) >> (GLOBAL_Q - 3))
|
|||
|
#define _Q3toIQ(A) ((long) (A) << (GLOBAL_Q - 3))
|
|||
|
#else
|
|||
|
#define _IQtoIQ3(A) ((long) (A) << (3 - GLOBAL_Q))
|
|||
|
#define _IQ3toIQ(A) ((long) (A) >> (3 - GLOBAL_Q))
|
|||
|
#define _IQtoQ3(A) ((long) (A) << (3 - GLOBAL_Q))
|
|||
|
#define _Q3toIQ(A) ((long) (A) >> (3 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 2)
|
|||
|
#define _IQtoIQ2(A) ((long) (A) >> (GLOBAL_Q - 2))
|
|||
|
#define _IQ2toIQ(A) ((long) (A) << (GLOBAL_Q - 2))
|
|||
|
#define _IQtoQ2(A) ((long) (A) >> (GLOBAL_Q - 2))
|
|||
|
#define _Q2toIQ(A) ((long) (A) << (GLOBAL_Q - 2))
|
|||
|
#else
|
|||
|
#define _IQtoIQ2(A) ((long) (A) << (2 - GLOBAL_Q))
|
|||
|
#define _IQ2toIQ(A) ((long) (A) >> (2 - GLOBAL_Q))
|
|||
|
#define _IQtoQ2(A) ((long) (A) << (2 - GLOBAL_Q))
|
|||
|
#define _Q2toIQ(A) ((long) (A) >> (2 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#if (GLOBAL_Q >= 1)
|
|||
|
#define _IQtoQ1(A) ((long) (A) >> (GLOBAL_Q - 1))
|
|||
|
#define _Q1toIQ(A) ((long) (A) << (GLOBAL_Q - 1))
|
|||
|
#else
|
|||
|
#define _IQtoQ1(A) ((long) (A) << (1 - GLOBAL_Q))
|
|||
|
#define _Q1toIQ(A) ((long) (A) >> (1 - GLOBAL_Q))
|
|||
|
#endif
|
|||
|
|
|||
|
#define _IQtoIQ1(A) ((long) (A) >> (GLOBAL_Q - 1))
|
|||
|
#define _IQ1toIQ(A) ((long) (A) << (GLOBAL_Q - 1))
|
|||
|
|
|||
|
/////////////////////////////////////////////////////////////
|
|||
|
long multiply(long x, long y);
|
|||
|
long long multiply_fixed_base_select(long long x, long long y, int base);
|
|||
|
long divide(long num, long den);
|
|||
|
long sin_fixed(long x);
|
|||
|
long cos_fixed(long x);
|
|||
|
long sqrt_fixed(long x);
|
|||
|
|
|||
|
#define _IQabs(A) ((A) > 0 ? (A): -(A))
|
|||
|
#define _IQmpy(A,B) multiply(A,B)
|
|||
|
#define _IQ19mpy(A,B) multiply_fixed_base_select(A,B,19)
|
|||
|
#define _IQdiv(A,B) divide(A,B)
|
|||
|
#define _IQsin(A) sin_fixed(A)
|
|||
|
#define _IQcos(A) cos_fixed(A)
|
|||
|
#define _IQsqrt(A) sqrt_fixed(A)
|
|||
|
|
|||
|
#define PI 3.1415926535897932384626433832795
|
|||
|
#define PI_2 1.5707963267948966192313216916398
|
|||
|
#define TWO_PI 6.283185307179586476925286766559
|
|||
|
|
|||
|
#ifndef ONE_24
|
|||
|
#define ONE_24 16777216
|
|||
|
#endif
|
|||
|
#ifndef ONE_27
|
|||
|
#define ONE_27 134217728
|
|||
|
#endif
|
|||
|
#ifndef ONE_28
|
|||
|
#define ONE_28 268435456
|
|||
|
#endif
|
|||
|
|
|||
|
// #ifndef FIXED_PI
|
|||
|
// #define FIXED_PI 52707179
|
|||
|
// #endif
|
|||
|
|
|||
|
// #ifndef FIXED_2PI
|
|||
|
// #define FIXED_2PI 105414357
|
|||
|
// #endif
|
|||
|
|
|||
|
#ifndef FIXED_PI_30
|
|||
|
#define FIXED_PI_30 3373259426
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef FIXED_2PI_30
|
|||
|
#define FIXED_2PI_30 6746518852
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef FIXED_3PIna2
|
|||
|
#define FIXED_3PIna2 79060768
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef FIXED_PIna3
|
|||
|
#define FIXED_PIna3 17569059
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef FIXED_PIna6
|
|||
|
#define FIXED_PIna6 8784529
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
#endif //IQ_MATH_LIB
|