5c61c6c4b42b9e5bf456b12d0321272763e4249c
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 ulShift
= pef
->lExp
;
38 return ((pef
->lMant
<< ulShift
) == 0);
40 return (ulShift
== 32);
45 _FLOATOBJ_Equal0(FLOATOBJ
*pf
)
47 EFLOAT_S
*pef
= (EFLOAT_S
*)pf
;
48 return (pef
->lMant
== 0 && pef
->lExp
== 0);
53 _FLOATOBJ_Equal1(FLOATOBJ
*pf
)
55 EFLOAT_S
*pef
= (EFLOAT_S
*)pf
;
56 return (pef
->lMant
== 0x40000000 && pef
->lExp
== 2);
59 extern const FLOATOBJ gef0
;
60 extern const FLOATOBJ gef1
;
61 extern const FLOATOBJ gef16
;
63 #define FLOATOBJ_0 {0x00000000, 0x00000000}
64 #define FLOATOBJ_1 {0x40000000, 0x00000002}
65 #define FLOATOBJ_16 {0x40000000, 0x00000006}
66 #define FLOATOBJ_1_16 {0x40000000, 0xfffffffe}
68 #define FLOATOBJ_Set0(fo) do { (fo)->ul1 = 0; (fo)->ul2 = 0; } while (0)
69 #define FLOATOBJ_Set1(fo) do { (fo)->ul1 = 0x40000000; (fo)->ul2 = 2; } while (0)
73 #define _FLOATOBJ_Equal(pf,pf1) (*(pf) == *(pf1))
74 #define _FLOATOBJ_GetLong(pf) ((LONG)*(pf))
75 #define _FLOATOBJ_IsLong(pf) ((FLOAT)((LONG)*(pf)) == *(pf))
76 #define _FLOATOBJ_Equal0(pf) (*(pf) == 0.)
77 #define _FLOATOBJ_Equal1(pf) (*(pf) == 1.)
78 #define _FLOATOBJ_GetFix(pf) ((LONG)(*(pf) * 16.))
82 #define FLOATOBJ_16 16.
83 #define FLOATOBJ_1_16 (1./16.)
85 static const FLOATOBJ gef0
= 0.;
86 static const FLOATOBJ gef1
= 1.;
87 static const FLOATOBJ gef16
= 16.;
89 #define FLOATOBJ_Set0(fo) *(fo) = 0;
90 #define FLOATOBJ_Set1(fo) *(fo) = 1;