2 Copyright © 1995-2003, The AROS Development Team. All rights reserved.
6 #include "mathieeedoubtrans_intern.h"
8 /*****************************************************************************
12 AROS_LH1(double, IEEEDPFieee
,
15 AROS_LHA(LONG
, y
, D0
),
18 struct MathIeeeDoubTransBase
*, MathIeeeDoubTransBase
, 18, MathIeeeDoubTrans
)
21 Convert IEEE single to IEEE double precision
26 IEEE double precision floting point number
30 negative : result is negative
37 *****************************************************************************/
41 LONG tmpL
= y
& IEEESPExponent_Mask
; /* get the Exponent */
44 SetSR( 0, Zero_Bit
| Overflow_Bit
| Negative_Bit
);
48 SetSR( Zero_Bit
, Zero_Bit
| Overflow_Bit
| Negative_Bit
);
49 Set_Value64C(Res
, 0x0, 0x0);
54 tmpL
= tmpL
- 0x7e + 0x3fe;
56 /* set the Exponent */
59 /* set the Mantisse */
60 tmpL
= y
& IEEESPMantisse_Mask
;
61 SHL32(tmpQ
, tmpL
, 29);
66 OR64QC(Res
, IEEEDPSign_Mask_Hi
, IEEEDPSign_Mask_Lo
);
67 SetSR( Negative_Bit
, Zero_Bit
| Overflow_Bit
| Negative_Bit
);