12#define FIX_TYPE __int64
13#define ROUND2FIXED(a) ((a) >= 0 ? (((a)+0.5)) : (((a)-0.5)))
15#define FIXPOINT_ONE (T(1)<<point)
17#define DOUBLE2FIX64(a,point) (ROUND2FIXED((a)*((__int64(1))<<point)))
18#define DOUBLE2FIX32(a,point) (ROUND2FIXED((a)*(int(1)<<point))
24#define FLT2FIX(f) (DOUBLE2FIX64((f),(FIX_POINT)))
26#define MULI(a,i) ((a).m_value*(i))
27#define MULC(a,c) ((a.m_value*c)>>FIX_POINT)
28#define MULX(a,n) (((a).m_value*(n).m_value)>>FIX_POINT)
30#define ADDC(a,c) (a.m_value+c)
31#define ADDN(a,n) (a.m_value+n.m_value)
32#define SUBC(a,c) (a.m_value-c)
33#define SUBN(a,n) (a.m_value-n.m_value)
37#define SHR(a,shift) ((a)>>shift)
44#define DBL2FIX DOUBLE2FIX64
49 #define INLINE __INLINE__
62 m_value=T(val)<<point;
69 m_value=ROUND2FIXED(val*FIXPOINT_ONE);
75 m_value=ROUND2FIXED(val*FIXPOINT_ONE);
87 m_value=T(val)<<point;
93 m_value=ROUND2FIXED(val*FIXPOINT_ONE);
99 m_value=ROUND2FIXED(val*FIXPOINT_ONE);
130 m_value-=val.m_value;
140 m_value+=val.m_value;
163 m_value+=FIXPOINT_ONE;
172 m_value-=FIXPOINT_ONE;
185 m_value*=val.m_value;
186 m_value+=(T(1)<<(point2-1));
205 m_value=ROUND2FIXED(m_value*val);
215 m_value=ROUND2FIXED(m_value*val);
253 long long val64=m_value;
295 m_value^=val.m_value;
312 Res.m_value=-m_value;
317 {
return m_value>y.m_value;}
319 {
return m_value>=y.m_value;}
321 {
return m_value<y.m_value;}
323 {
return m_value<=y.m_value;}
325 {
return m_value==y.m_value;}
327 {
return m_value!=y.m_value;}
348#define fixpoint64(point) tfixpoint<__int64,point>
349#define fixpoint32(point) tfixpoint<int,point>
353#define FIXPOINT64(val,point) (ROUND2FIXED((val)*((__int64(1))<<point)))
355double __INLINE__ cnv2double(
double x){
359float __INLINE__ cnv2float(
float x){
Definition: tfixpoint.h:52