45{
51 bool sign;
53
54
55
57 uiA64 = uA.s.signExp;
59 sig = uA.s.signif;
60
61
62 shiftDist = 0x403E - exp;
63 if ( 64 <= shiftDist ) {
64 if ( exact && (exp | sig) ) {
66 }
67 return 0;
68 }
69
70
72 if ( shiftDist <= 0 ) {
73 if (
75 && (sig ==
UINT64_C( 0x8000000000000000 ))
76 ) {
77 return -
INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1;
78 }
80 return
81 (exp == 0x7FFF) && (sig &
UINT64_C( 0x7FFFFFFFFFFFFFFF ))
84 }
85
86
87 absZ = sig>>shiftDist;
88 if ( exact && (
uint64_t) (sig<<(-shiftDist & 63)) ) {
90 }
91 return sign ? -absZ : absZ;
92
93}
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
void softfloat_raiseFlags(uint_fast8_t flags)
#define i64_fromNegOverflow
#define i64_fromPosOverflow
#define packToExtF80UI64(sign, exp)
#define expExtF80UI64(a64)
#define signExtF80UI64(a64)
THREAD_LOCAL uint_fast8_t softfloat_exceptionFlags
unsigned __int64 uint64_t