DSP2812浮点运算库Word文档格式.docx
《DSP2812浮点运算库Word文档格式.docx》由会员分享,可在线阅读,更多相关《DSP2812浮点运算库Word文档格式.docx(117页珍藏版)》请在冰豆网上搜索。
//---------------------------------------------------------------------------
//Selectmathtype,IQ_MATHorFLOAT_MATH:
#ifndef__IQMATHLIB_H_INCLUDED__
#define__IQMATHLIB_H_INCLUDED__
#defineFLOAT_MATH1
#defineIQ_MATH0
#ifndefMATH_TYPE
#defineMATH_TYPEIQ_MATH
#endif
//SelectglobalQvalueandscaling.TheQvalueislimitedtothe
//followingrangeforallfunctions:
//30<
=GLOBAL_Q<
=1
#ifndefGLOBAL_Q
#defineGLOBAL_Q24
//VariousUsefullConstantDefinitions:
#defineQGGLOBAL_Q
#defineQ3030
#defineQ2929
#defineQ2828
#defineQ2727
#defineQ2626
#defineQ2525
#defineQ2424
#defineQ2323
#defineQ2222
#defineQ2121
#defineQ2020
#defineQ1919
#defineQ1818
#defineQ1717
#defineQ1616
#defineQ1515
#defineQ1414
#defineQ1313
#defineQ1212
#defineQ1111
#defineQ1010
#defineQ99
#defineQ88
#defineQ77
#defineQ66
#defineQ55
#defineQ44
#defineQ33
#defineQ22
#defineQ11
#defineMAX_IQ_POS2147483647
#defineMAX_IQ_NEG-2147483648
#defineMIN_IQ_POS1
#defineMIN_IQ_NEG-1
#ifMATH_TYPE==IQ_MATH
//IfIQ_MATHisused,thefollowingIQmathlibraryfunctiondefinitions
//areused:
//===========================================================================
typedeflong_iq;
typedeflong_iq30;
typedeflong_iq29;
typedeflong_iq28;
typedeflong_iq27;
typedeflong_iq26;
typedeflong_iq25;
typedeflong_iq24;
typedeflong_iq23;
typedeflong_iq22;
typedeflong_iq21;
typedeflong_iq20;
typedeflong_iq19;
typedeflong_iq18;
typedeflong_iq17;
typedeflong_iq16;
typedeflong_iq15;
typedeflong_iq14;
typedeflong_iq13;
typedeflong_iq12;
typedeflong_iq11;
typedeflong_iq10;
typedeflong_iq9;
typedeflong_iq8;
typedeflong_iq7;
typedeflong_iq6;
typedeflong_iq5;
typedeflong_iq4;
typedeflong_iq3;
typedeflong_iq2;
typedeflong_iq1;
#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)
#ifGLOBAL_Q==30
#define_IQ(A)_IQ30(A)
#ifGLOBAL_Q==29
#define_IQ(A)_IQ29(A)
#ifGLOBAL_Q==28
#define_IQ(A)_IQ28(A)
#ifGLOBAL_Q==27
#define_IQ(A)_IQ27(A)
#ifGLOBAL_Q==26
#define_IQ(A)_IQ26(A)
#ifGLOBAL_Q==25
#define_IQ(A)_IQ25(A)
#ifGLOBAL_Q==24
#define_IQ(A)_IQ24(A)
#ifGLOBAL_Q==23
#define_IQ(A)_IQ23(A)
#ifGLOBAL_Q==22
#define_IQ(A)_IQ22(A)
#ifGLOBAL_Q==21
#define_IQ(A)_IQ21(A)
#ifGLOBAL_Q==20
#define_IQ(A)_IQ20(A)
#ifGLOBAL_Q==19
#define_IQ(A)_IQ19(A)
#ifGLOBAL_Q==18
#define_IQ(A)_IQ18(A)
#ifGLOBAL_Q==17
#define_IQ(A)_IQ17(A)
#ifGLOBAL_Q==16
#define_IQ(A)_IQ16(A)
#ifGLOBAL_Q==15
#define_IQ(A)_IQ15(A)
#ifGLOBAL_Q==14
#define_IQ(A)_IQ14(A)
#ifGLOBAL_Q==13
#define_IQ(A)_IQ13(A)
#ifGLOBAL_Q==12
#define_IQ(A)_IQ12(A)
#ifGLOBAL_Q==11
#define_IQ(A)_IQ11(A)
#ifGLOBAL_Q==10
#define_IQ(A)_IQ10(A)
#ifGLOBAL_Q==9
#define_IQ(A)_IQ9(A)
#ifGLOBAL_Q==8
#define_IQ(A)_IQ8(A)
#ifGLOBAL_Q==7
#define_IQ(A)_IQ7(A)
#ifGLOBAL_Q==6
#define_IQ(A)_IQ6(A)
#ifGLOBAL_Q==5
#define_IQ(A)_IQ5(A)
#ifGLOBAL_Q==4
#define_IQ(A)_IQ4(A)
#ifGLOBAL_Q==3
#define_IQ(A)_IQ3(A)
#ifGLOBAL_Q==2
#define_IQ(A)_IQ2(A)
#ifGLOBAL_Q==1
#define_IQ(A)_IQ1(A)
externfloat_IQ30toF(longA);
externfloat_IQ29toF(longA);
externfloat_IQ28toF(longA);
externfloat_IQ27toF(longA);
externfloat_IQ26toF(longA);
externfloat_IQ25toF(longA);
externfloat_IQ24toF(longA);
externfloat_IQ23toF(longA);
externfloat_IQ22toF(longA);
externfloat_IQ21toF(longA);
externfloat_IQ20toF(longA);
externfloat_IQ19toF(longA);
externfloat_IQ18toF(longA);
externfloat_IQ17toF(longA);
externfloat_IQ16toF(longA);
externfloat_IQ15toF(longA);
externfloat_IQ14toF(longA);
externfloat_IQ13toF(longA);
externfloat_IQ12toF(longA);
externfloat_IQ11toF(longA);
externfloat_IQ10toF(longA);
externfloat_IQ9toF(longA);
externfloat_IQ8toF(longA);
externfloat_IQ7toF(longA);
externfloat_IQ6toF(longA);
externfloat_IQ5toF(longA);
externfloat_IQ4toF(longA);
externfloat_IQ3toF(longA);
externfloat_IQ2toF(longA);
externfloat_IQ1toF(longA);
#define_IQtoF(A)_IQ30toF(A)
#define_IQtoF(A)_IQ29toF(A)
#define_IQtoF(A)_IQ28toF(A)
#define_IQtoF(A)_IQ27toF(A)
#define_IQtoF(A)_IQ26toF(A)
#define_IQtoF(A)_IQ25toF(A)
#define_IQtoF(A)_IQ24toF(A)
#define_IQtoF(A)_IQ23toF(A)
#define_IQtoF(A)_IQ22toF(A)
#define_IQtoF(A)_IQ21toF(A)
#define_IQtoF(A)_IQ20toF(A)
#define_IQtoF(A)_IQ19toF(A)
#define_IQtoF(A)_IQ18toF(A)
#define_IQtoF(A)_IQ17toF(A)
#define_IQtoF(A)_IQ16toF(A)
#define_IQtoF(A)_IQ15toF(A)
#define_IQtoF(A)_IQ14toF(A)
#define_IQtoF(A)_IQ13toF(A)
#define_IQtoF(A)_IQ12toF(A)
#define_IQtoF(A)_IQ11toF(A)
#define_IQtoF(A)_IQ10toF(A)
#define_IQtoF(A)_IQ9toF(A)
#define_IQtoF(A)_IQ8toF(A)
#define_IQtoF(A)_IQ7toF(A)
#define_IQtoF(A)_IQ6toF(A)
#define_IQtoF(A)_IQ5toF(A)
#define_IQtoF(A)_IQ4toF(A)
#define_IQtoF(A)_IQ3toF(A)
#define_IQtoF(A)_IQ2toF(A)
#define_IQtoF(A)_IQ1toF(A)
#define_IQsat(A,Pos,Neg)__IQsat(A,Pos,Neg)
#define_IQtoIQ30(A)((long)(A)<
<
(30-GLOBAL_Q))
#define_IQ30toIQ(A)((long)(A)>
>
#define_IQtoIQ29(A)((GLOBAL_Q>
=29)?
((long)(A)>
(GLOBAL_Q-29)):
((long)(A)<
(29-GLOBAL_Q)))
#define_IQ29toIQ(A)((GLOBAL_Q>
((long)(A)<
((long)(A)>
#d