5 #include "primitives.h"
9 int_fast32_t f64_to_i32( float64_t a
, int_fast8_t roundingMode
, bool exact
)
16 int_fast16_t shiftCount
;
20 sign
= signF64UI( uiA
);
21 exp
= expF64UI( uiA
);
22 sig
= fracF64UI( uiA
);
23 if ( ( exp
== 0x7FF ) && sig
) sign
= 0;
24 if ( exp
) sig
|= UINT64_C( 0x0010000000000000 );
25 shiftCount
= 0x42C - exp
;
26 if ( 0 < shiftCount
) sig
= softfloat_shift64RightJam( sig
, shiftCount
);
27 return softfloat_roundPackToI32( sign
, sig
, roundingMode
, exact
);