5 #include "primitives.h"
7 #include "specialize.h"
10 float32_t
f64_to_f32( float64_t a
)
17 uint_fast32_t uiZ
, sig32
;
22 sign
= signF64UI( uiA
);
23 exp
= expF64UI( uiA
);
24 sig
= fracF64UI( uiA
);
27 sig
? softfloat_commonNaNToF32UI(
28 softfloat_f64UIToCommonNaN( uiA
) )
29 : packToF32UI( sign
, 0xFF, 0 );
32 sig32
= softfloat_shortShift64RightJam( sig
, 22 );
33 if ( ! ( exp
| sig32
) ) {
34 uiZ
= packToF32UI( sign
, 0, 0 );
37 return softfloat_roundPackToF32( sign
, exp
- 0x381, sig32
| 0x40000000 );