For Terrance

Dependencies:   mbed

Committer:
emh203
Date:
Wed Jun 13 15:10:06 2012 +0000
Revision:
0:085749c8446f

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emh203 0:085749c8446f 1 #include "DataTypes.h"
emh203 0:085749c8446f 2
emh203 0:085749c8446f 3 #ifndef FIXEDMATH_H_
emh203 0:085749c8446f 4 #define FIXEDMATH_H_
emh203 0:085749c8446f 5
emh203 0:085749c8446f 6
emh203 0:085749c8446f 7 typedef SIGNED_WORD FIXED_7_8;
emh203 0:085749c8446f 8 typedef SIGNED_WORD FIXED_9_6;
emh203 0:085749c8446f 9
emh203 0:085749c8446f 10 typedef SIGNED_WORD FIXED_0_15;
emh203 0:085749c8446f 11 typedef SIGNED_WORD FIXED_1_14;
emh203 0:085749c8446f 12
emh203 0:085749c8446f 13
emh203 0:085749c8446f 14 extern const FIXED_1_14 Fixed_1_14_SineTable [256];
emh203 0:085749c8446f 15 extern const FIXED_7_8 Fixed_7_8_SineTable [256];
emh203 0:085749c8446f 16
emh203 0:085749c8446f 17 #define FMul_15_0(A,B) (FIXED_0_15)(((FIXED_0_15)(A) * (FIXED_0_15 )(B))>>15)
emh203 0:085749c8446f 18 #define FMul_7_8to0_15(A,B) (FIXED_7_8)(((FIXED_7_8)(A) * (FIXED_0_15)(B))>>15)
emh203 0:085749c8446f 19 #define FMul_15_0to7_8(A,B) (SIGNED_WORD)(((SIGNED_WORD)(A) * (FIXED_7_8)(B))>>8)
emh203 0:085749c8446f 20
emh203 0:085749c8446f 21
emh203 0:085749c8446f 22
emh203 0:085749c8446f 23 #define INT_7_8(A) (SIGNED_WORD)(A>>8)
emh203 0:085749c8446f 24 #define INT_TO_7_8(A) ((FIXED_7_8)(A)<<8)
emh203 0:085749c8446f 25 #define FRAC_7_8(A) (FIXED_7_8)(A&0xFF)
emh203 0:085749c8446f 26
emh203 0:085749c8446f 27 #define INT_9_6(A) (SIGNED_WORD)(A>>6)
emh203 0:085749c8446f 28 #define INT_TO_9_6(A) ((FIXED_9_6)(A)<<6)
emh203 0:085749c8446f 29 #define FRAC_6_9(A) (FIXED_9_6)(A&0x3F)
emh203 0:085749c8446f 30
emh203 0:085749c8446f 31
emh203 0:085749c8446f 32
emh203 0:085749c8446f 33 //#define FMul_15_0to0_15 (SIGNED_WORD)(((SIGNED_WORD)(A) * (FIXED_0_15)(B))>>16)
emh203 0:085749c8446f 34 inline SIGNED_WORD FMul_15_0to0_15(SIGNED_WORD A,SIGNED_WORD B)
emh203 0:085749c8446f 35 {
emh203 0:085749c8446f 36 return (((long)(A) * (long)(B))>>15);
emh203 0:085749c8446f 37 }
emh203 0:085749c8446f 38
emh203 0:085749c8446f 39 inline SIGNED_WORD FMul_15_0to1_14(SIGNED_WORD A,SIGNED_WORD B)
emh203 0:085749c8446f 40 {
emh203 0:085749c8446f 41 long temp;
emh203 0:085749c8446f 42 temp = (((long)(A) * (long)(B))>>13);
emh203 0:085749c8446f 43 if(temp&0x01)
emh203 0:085749c8446f 44 {
emh203 0:085749c8446f 45 temp = temp>>1;
emh203 0:085749c8446f 46 temp = temp +1;
emh203 0:085749c8446f 47 }
emh203 0:085749c8446f 48 else
emh203 0:085749c8446f 49 {
emh203 0:085749c8446f 50 temp = temp>>1;
emh203 0:085749c8446f 51 }
emh203 0:085749c8446f 52 return temp;
emh203 0:085749c8446f 53 }
emh203 0:085749c8446f 54
emh203 0:085749c8446f 55 //inline SIGNED_WORD ABS(A)
emh203 0:085749c8446f 56 //{
emh203 0:085749c8446f 57 //if(A<0)
emh203 0:085749c8446f 58 //return -A;
emh203 0:085749c8446f 59 //else
emh203 0:085749c8446f 60 //return A;
emh203 0:085749c8446f 61 //}
emh203 0:085749c8446f 62
emh203 0:085749c8446f 63 #endif /*FIXEDMATH_H_*/