7 _FLOATOBJ_Equal(FLOATOBJ
*pf1
, FLOATOBJ
*pf2
)
9 EFLOAT_S
*pef1
= (EFLOAT_S
*)pf1
;
10 EFLOAT_S
*pef2
= (EFLOAT_S
*)pf2
;
11 return (pef1
->lMant
== pef2
->lMant
&& pef1
->lExp
== pef2
->lExp
);
16 _FLOATOBJ_GetLong(FLOATOBJ
*pf
)
18 EFLOAT_S
*pef
= (EFLOAT_S
*)pf
;
19 return pef
->lMant
>> (32 - pef
->lExp
);
24 _FLOATOBJ_GetFix(FLOATOBJ
*pf
)
26 EFLOAT_S
*pef
= (EFLOAT_S
*)pf
;
27 LONG Shift
= (28 - pef
->lExp
);
28 return (Shift
>= 0 ? pef
->lMant
>> Shift
: pef
->lMant
<< -Shift
);
33 _FLOATOBJ_IsLong(FLOATOBJ
*pf
)
35 EFLOAT_S
*pef
= (EFLOAT_S
*)pf
;
36 ULONG Shift
= 32 - pef
->lExp
;
37 if (Shift
> 31) return FALSE
;
38 return (((pef
->lMant
>> Shift
) << Shift
) == pef
->lMant
);
43 _FLOATOBJ_Equal0(FLOATOBJ
*pf
)
45 EFLOAT_S
*pef
= (EFLOAT_S
*)pf
;
46 return (pef
->lMant
== 0 && pef
->lExp
== 0);
51 _FLOATOBJ_Equal1(FLOATOBJ
*pf
)
53 EFLOAT_S
*pef
= (EFLOAT_S
*)pf
;
54 return (pef
->lMant
== 0x40000000 && pef
->lExp
== 2);
57 extern const FLOATOBJ gef0
;
58 extern const FLOATOBJ gef1
;
59 extern const FLOATOBJ gef16
;
61 #define FLOATOBJ_0 {0x00000000, 0x00000000}
62 #define FLOATOBJ_1 {0x40000000, 0x00000002}
63 #define FLOATOBJ_16 {0x40000000, 0x00000006}
64 #define FLOATOBJ_1_16 {0x40000000, 0xfffffffe}
66 #define FLOATOBJ_Set0(fo) (fo)->ul1 = 0; (fo)->ul2 = 0;
67 #define FLOATOBJ_Set1(fo) (fo)->ul1 = 0x40000000; (fo)->ul2 = 2;
71 #define _FLOATOBJ_Equal(pf,pf1) (*(pf) == *(pf1))
72 #define _FLOATOBJ_GetLong(pf) ((LONG)*(pf))
73 #define _FLOATOBJ_IsLong(pf) ((FLOAT)((LONG)*(pf)) == *(pf))
74 #define _FLOATOBJ_Equal0(pf) (*(pf) == 0.)
75 #define _FLOATOBJ_Equal1(pf) (*(pf) == 1.)
76 #define _FLOATOBJ_GetFix(pf) ((LONG)(*(pf) * 16.))
80 #define FLOATOBJ_16 16.
81 #define FLOATOBJ_1_16 (1./16.)
83 #define gef0 FLOATOBJ_0
84 #define gef1 FLOATOBJ_1
85 #define gef16 FLOATOBJ_16
87 #define FLOATOBJ_Set0(fo) *(fo) = 0;
88 #define FLOATOBJ_Set1(fo) *(fo) = 1;