![](/media/cache/profiles/8b0dc65f996f98fd178a9defd0efa077.jpg.50x50_q85.jpg)
For Terrance
Diff: Headers/FixedMath.h
- Revision:
- 0:085749c8446f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Headers/FixedMath.h Wed Jun 13 15:10:06 2012 +0000 @@ -0,0 +1,63 @@ +#include "DataTypes.h" + +#ifndef FIXEDMATH_H_ +#define FIXEDMATH_H_ + + +typedef SIGNED_WORD FIXED_7_8; +typedef SIGNED_WORD FIXED_9_6; + +typedef SIGNED_WORD FIXED_0_15; +typedef SIGNED_WORD FIXED_1_14; + + +extern const FIXED_1_14 Fixed_1_14_SineTable [256]; +extern const FIXED_7_8 Fixed_7_8_SineTable [256]; + +#define FMul_15_0(A,B) (FIXED_0_15)(((FIXED_0_15)(A) * (FIXED_0_15 )(B))>>15) +#define FMul_7_8to0_15(A,B) (FIXED_7_8)(((FIXED_7_8)(A) * (FIXED_0_15)(B))>>15) +#define FMul_15_0to7_8(A,B) (SIGNED_WORD)(((SIGNED_WORD)(A) * (FIXED_7_8)(B))>>8) + + + +#define INT_7_8(A) (SIGNED_WORD)(A>>8) +#define INT_TO_7_8(A) ((FIXED_7_8)(A)<<8) +#define FRAC_7_8(A) (FIXED_7_8)(A&0xFF) + +#define INT_9_6(A) (SIGNED_WORD)(A>>6) +#define INT_TO_9_6(A) ((FIXED_9_6)(A)<<6) +#define FRAC_6_9(A) (FIXED_9_6)(A&0x3F) + + + +//#define FMul_15_0to0_15 (SIGNED_WORD)(((SIGNED_WORD)(A) * (FIXED_0_15)(B))>>16) +inline SIGNED_WORD FMul_15_0to0_15(SIGNED_WORD A,SIGNED_WORD B) +{ + return (((long)(A) * (long)(B))>>15); +} + +inline SIGNED_WORD FMul_15_0to1_14(SIGNED_WORD A,SIGNED_WORD B) +{ + long temp; + temp = (((long)(A) * (long)(B))>>13); + if(temp&0x01) + { + temp = temp>>1; + temp = temp +1; + } + else + { + temp = temp>>1; + } + return temp; +} + +//inline SIGNED_WORD ABS(A) +//{ + //if(A<0) + //return -A; + //else + //return A; +//} + +#endif /*FIXEDMATH_H_*/