8 uint_fast64_t f32_to_ui64_r_minMag( float32_t a
, bool exact
)
14 int_fast16_t shiftCount
;
15 uint_fast64_t sig64
, z
;
19 exp
= expF32UI( uiA
);
20 sig
= fracF32UI( uiA
);
22 if ( exact
&& ( exp
| sig
) ) {
23 softfloat_exceptionFlags
|= softfloat_flag_inexact
;
27 if ( signF32UI( uiA
) ) goto invalid
;
28 shiftCount
= 0xBE - exp
;
29 if ( shiftCount
< 0 ) goto invalid
;
31 sig64
= (uint_fast64_t) sig
<<40;
32 z
= sig64
>>shiftCount
;
33 shiftCount
= 40 - shiftCount
;
35 exact
&& ( shiftCount
< 0 ) && (uint32_t) ( sig
<<( shiftCount
& 31 ) )
37 softfloat_exceptionFlags
|= softfloat_flag_inexact
;
41 softfloat_raiseFlags( softfloat_flag_invalid
);
42 return UINT64_C( 0xFFFFFFFFFFFFFFFF );