2 Copyright © 1995-2003, The AROS Development Team. All rights reserved.
6 #include "mathieeedoubtrans_intern.h"
10 Convert IEEE single to IEEE double precision
13 IEEE double precision floting point number
17 negative : result is negative
33 AROS_LHQUAD1(double, IEEEDPFieee
,
34 AROS_LHAQUAD(LONG
, y
, D0
, D1
),
35 struct MathIeeeDoubTransBase
*, MathIeeeDoubTransBase
, 18, MathIeeeDoubTrans
40 LONG tmpL
= y
& IEEESPExponent_Mask
; /* get the Exponent */
43 SetSR( 0, Zero_Bit
| Overflow_Bit
| Negative_Bit
);
47 SetSR( Zero_Bit
, Zero_Bit
| Overflow_Bit
| Negative_Bit
);
48 Set_Value64C(Res
, 0x0, 0x0);
53 tmpL
= tmpL
- 0x7e + 0x3fe;
55 /* set the Exponent */
58 /* set the Mantisse */
59 tmpL
= y
& IEEESPMantisse_Mask
;
60 SHL32(tmpQ
, tmpL
, 29);
65 OR64QC(Res
, IEEEDPSign_Mask_Hi
, IEEEDPSign_Mask_Lo
);
66 SetSR( Negative_Bit
, Zero_Bit
| Overflow_Bit
| Negative_Bit
);