/* Generated by Nim Compiler v1.6.2 */ #define NIM_INTBITS 32 #include "nimbase.h" #include #include #undef LANGUAGE_C #undef MIPSEB #undef MIPSEL #undef PPC #undef R3000 #undef R4000 #undef i386 #undef linux #undef mips #undef near #undef far #undef powerpc #undef unix #define nimfr_(x, y) #define nimln_(x, y) typedef struct tyObject_Double__IoVNMXAH9aQnPnWZZsWMVxw tyObject_Double__IoVNMXAH9aQnPnWZZsWMVxw; typedef struct tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg; typedef struct tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw; typedef struct tyObject_MulCmp__tPF4ETaAdtVLNu8l2IurgA tyObject_MulCmp__tPF4ETaAdtVLNu8l2IurgA; typedef struct NimStringDesc NimStringDesc; typedef struct TGenericSeq TGenericSeq; typedef struct tyObject_Single__d6NidTbsj2ZAh9ao1GJW9aXQ tyObject_Single__d6NidTbsj2ZAh9ao1GJW9aXQ; typedef struct tyObject_FloatingDecimal32__AcbjRnPoMG8Pkr9bMFAoLNg tyObject_FloatingDecimal32__AcbjRnPoMG8Pkr9bMFAoLNg; struct tyObject_Double__IoVNMXAH9aQnPnWZZsWMVxw { NU64 bits; }; struct tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg { NU64 significand; NI32 exponent; }; struct tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw { NU64 hi; NU64 lo; }; typedef tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw tyArray__YxVLJbmWgWA9aXEi5wDoQhA[619]; struct tyObject_MulCmp__tPF4ETaAdtVLNu8l2IurgA { NU64 mul; NU64 cmp; }; typedef tyObject_MulCmp__tPF4ETaAdtVLNu8l2IurgA tyArray__9apbx8OXkiOk9cnMKRpy11KQ[25]; typedef NIM_CHAR tyArray__38Z69amCaoywES5tRmClBSw[200]; typedef NI8 tyArray__k7wgHIN8mKeRF236nmwvnQ[100]; typedef NIM_CHAR tyArray__Wfh9bjgBQ4UqJsyISUuDSuA[16]; struct TGenericSeq { NI len; NI reserved; }; struct NimStringDesc { TGenericSeq Sup; NIM_CHAR data[SEQ_DECL_SIZE]; }; typedef NIM_CHAR tyArray__eVNFTutn6un5gcq48fQLdg[65]; struct tyObject_Single__d6NidTbsj2ZAh9ao1GJW9aXQ { NU32 bits; }; struct tyObject_FloatingDecimal32__AcbjRnPoMG8Pkr9bMFAoLNg { NU32 digits; NI32 exponent; }; typedef NU64 tyArray__ocdlWeLAycDNOOtB9cadACA[77]; static N_INLINE(NI, toChars__systemZdragonbox_672)(NIM_CHAR* buffer, NI bufferLen_0, NF v, NIM_BOOL forceTrailingDotZero); N_LIB_PRIVATE N_NIMCALL(NU64, physicalSignificand__systemZdragonbox_34)(tyObject_Double__IoVNMXAH9aQnPnWZZsWMVxw this_0); N_LIB_PRIVATE N_NIMCALL(tyObject_Double__IoVNMXAH9aQnPnWZZsWMVxw, constructDouble__systemZdragonbox_31)(NF value); N_LIB_PRIVATE N_NIMCALL(NU64, physicalExponent__systemZdragonbox_37)(tyObject_Double__IoVNMXAH9aQnPnWZZsWMVxw this_0); N_LIB_PRIVATE N_NIMCALL(NI, signBit__systemZdragonbox_56)(tyObject_Double__IoVNMXAH9aQnPnWZZsWMVxw this_0); static N_INLINE(tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg, toDecimal64__systemZdragonbox_336)(NU64 ieeeSignificand, NU64 ieeeExponent); static N_INLINE(void, nimZeroMem)(void* p, NI size); static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size); static N_INLINE(NIM_BOOL, multipleOfPow2__systemZdragonbox_139)(NU64 value, NI32 e2); static N_INLINE(tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg, toDecimal64AsymmetricInterval__systemZdragonbox_195)(NI32 e2); static N_INLINE(NI32, floorLog10ThreeQuartersPow2__systemZdragonbox_88)(NI32 e); static N_INLINE(NI32, floorDivPow2__systemZdragonbox_62)(NI32 x, NI32 n); static N_INLINE(NI32, floorLog2Pow10__systemZdragonbox_70)(NI32 e); static N_INLINE(tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw, computePow10__systemZdragonbox_100)(NI32 k); static N_INLINE(NI32, floorLog10Pow2__systemZdragonbox_79)(NI32 e); static N_INLINE(NU32, computeDelta__systemZdragonbox_251)(tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw pow10, NI32 betaMinus1); static N_INLINE(NU64, mulShift__systemZdragonbox_291)(NU64 x, tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw y); static N_INLINE(tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw, mul128__systemZdragonbox_275)(NU64 a, NU64 b); static N_INLINE(NU32, lo32__systemZdragonbox_265)(NU64 x); static N_INLINE(NU32, hi32__systemZdragonbox_268)(NU64 x); static N_INLINE(NIM_BOOL, isIntegralEndpoint__systemZdragonbox_326)(NU64 twoF, NI32 e2, NI32 minusK); static N_INLINE(NIM_BOOL, multipleOfPow5__systemZdragonbox_150)(NU64 value, NI32 e5); static N_INLINE(NIM_BOOL, mulParity__systemZdragonbox_308)(NU64 twoF, tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw pow10, NI32 betaMinus1); static N_INLINE(NIM_BOOL, isIntegralMidpoint__systemZdragonbox_331)(NU64 twoF, NI32 e2, NI32 minusK); static N_INLINE(NI, formatDigits__systemZdragonbox_548)(NIM_CHAR* buffer, NI bufferLen_0, NI pos, NU64 digits, NI32 decimalExponent, NIM_BOOL forceTrailingDotZero); static N_INLINE(NI32, decimalLength__systemZdragonbox_534)(NU64 v); static N_INLINE(NI32, printDecimalDigitsBackwards__systemZdragonbox_417)(NIM_CHAR* buf, NI bufLen_0, NI pos, NU64 output64); static N_INLINE(NI32, utoa8DigitsSkipTrailingZeros__systemZdragonbox_400)(NIM_CHAR* buf, NI bufLen_0, NI pos, NU32 digits); static N_INLINE(void, utoa2Digits__stdZprivateZdigitsutils_21)(NIM_CHAR* buf, NI bufLen_0, NI pos, NU32 digits); static N_INLINE(NI32, trailingZeros2Digits__stdZprivateZdigitsutils_34)(NU32 digits); N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newLen); N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src); N_LIB_PRIVATE N_NIMCALL(NI, writeFloatToBufferSprintf__systemZformatfloat_59)(NIM_CHAR* buf, NF value); N_LIB_PRIVATE N_NIMCALL(void, writeToBuffer__systemZformatfloat_51)(NIM_CHAR* buf, NCSTRING value); N_LIB_PRIVATE N_NIMCALL(void, addCstringN__systemZformatfloat_5)(NimStringDesc** result, NCSTRING buf, NI buflen); static N_INLINE(NI, float32ToChars__systemZschubfach_387)(NIM_CHAR* buffer, NI bufferLen_0, NF32 v, NIM_BOOL forceTrailingDotZero); N_LIB_PRIVATE N_NIMCALL(NU32, physicalSignificand__systemZschubfach_34)(tyObject_Single__d6NidTbsj2ZAh9ao1GJW9aXQ this_0); N_LIB_PRIVATE N_NIMCALL(tyObject_Single__d6NidTbsj2ZAh9ao1GJW9aXQ, constructSingle__systemZschubfach_31)(NF32 value); N_LIB_PRIVATE N_NIMCALL(NU32, physicalExponent__systemZschubfach_37)(tyObject_Single__d6NidTbsj2ZAh9ao1GJW9aXQ this_0); N_LIB_PRIVATE N_NIMCALL(NI, signBit__systemZschubfach_56)(tyObject_Single__d6NidTbsj2ZAh9ao1GJW9aXQ this_0); static N_INLINE(tyObject_FloatingDecimal32__AcbjRnPoMG8Pkr9bMFAoLNg, toDecimal32__systemZschubfach_142)(NU32 ieeeSignificand, NU32 ieeeExponent); static N_INLINE(NIM_BOOL, multipleOfPow2__systemZschubfach_125)(NU32 value, NI32 e2); static N_INLINE(NI32, floorDivPow2__systemZschubfach_59)(NI32 x, NI32 n); static N_INLINE(NI32, floorLog2Pow10__systemZschubfach_67)(NI32 e); static N_INLINE(NU64, computePow10Single__systemZschubfach_88)(NI32 k); static N_INLINE(NU32, roundToOdd__systemZschubfach_116)(NU64 g, NU32 cp); static N_INLINE(NU32, lo32__systemZschubfach_106)(NU64 x); static N_INLINE(NU32, hi32__systemZschubfach_109)(NU64 x); static N_INLINE(NI, formatDigits__systemZschubfach_286)(NIM_CHAR* buffer, NI bufferLen_0, NI pos, NU32 digits, NI32 decimalExponent, NIM_BOOL forceTrailingDotZero); static N_INLINE(NI32, decimalLength__systemZschubfach_277)(NU32 v); static N_INLINE(NI32, printDecimalDigitsBackwards__systemZschubfach_206)(NIM_CHAR* buf, NI bufLen_0, NI pos, NU32 output); extern NIM_CONST tyArray__YxVLJbmWgWA9aXEi5wDoQhA pow10__systemZdragonbox_105; extern NIM_CONST tyArray__9apbx8OXkiOk9cnMKRpy11KQ mod5__systemZdragonbox_157; extern NIM_CONST tyArray__38Z69amCaoywES5tRmClBSw digits100__stdZprivateZdigitsutils_2; extern NIM_CONST tyArray__k7wgHIN8mKeRF236nmwvnQ trailingZeros100__stdZprivateZdigitsutils_1; extern NIM_CONST tyArray__ocdlWeLAycDNOOtB9cadACA g__systemZschubfach_78; static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size) { void* T1_; T1_ = (void*)0; T1_ = memset(a, v, ((size_t) (size))); } static N_INLINE(void, nimZeroMem)(void* p, NI size) { nimSetMem__systemZmemory_7(p, ((int) 0), size); } static N_INLINE(NIM_BOOL, multipleOfPow2__systemZdragonbox_139)(NU64 value, NI32 e2) { NIM_BOOL result; NIM_BOOL T1_; { result = (NIM_BOOL)0; T1_ = (NIM_BOOL)0; T1_ = (e2 < ((NI32) 64)); if (!(T1_)) goto LA2_; T1_ = ((NU64)(value & (NU64)((NU64)((NU64)((NU64)(1ULL) << (NU64)(e2))) - (NU64)(1ULL))) == 0ULL); LA2_: ; result = T1_; goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NI32, floorDivPow2__systemZdragonbox_62)(NI32 x, NI32 n) { NI32 result; { result = (NI32)0; result = (NI32)((NI32)(x) >> (NU32)(n)); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NI32, floorLog10ThreeQuartersPow2__systemZdragonbox_88)(NI32 e) { NI32 result; { result = (NI32)0; result = floorDivPow2__systemZdragonbox_62((NI32)((NI32)(e * ((NI32) 1262611)) - ((NI32) 524031)), ((NI32) 22)); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NI32, floorLog2Pow10__systemZdragonbox_70)(NI32 e) { NI32 result; { result = (NI32)0; result = floorDivPow2__systemZdragonbox_62((NI32)(e * ((NI32) 1741647)), ((NI32) 19)); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw, computePow10__systemZdragonbox_100)(NI32 k) { tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw result; { nimZeroMem((void*)(&result), sizeof(tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw)); result = pow10__systemZdragonbox_105[((NI32)(k - ((NI32) -292)))- 0]; goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg, toDecimal64AsymmetricInterval__systemZdragonbox_195)(NI32 e2) { tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg result; NI32 minusK; NI32 betaMinus1; NI32 T1_; tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw pow10; NU64 lowerEndpoint; NU64 upperEndpoint; NIM_BOOL lowerEndpointIsInteger; NIM_BOOL T2_; NU64 xi; NU64 zi; NU64 q; { nimZeroMem((void*)(&result), sizeof(tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg)); minusK = floorLog10ThreeQuartersPow2__systemZdragonbox_88(e2); T1_ = (NI32)0; T1_ = floorLog2Pow10__systemZdragonbox_70(((NI32)-(minusK))); betaMinus1 = (NI32)(e2 + T1_); pow10 = computePow10__systemZdragonbox_100(((NI32)-(minusK))); lowerEndpoint = (NU64)((NU64)((NU64)((NU64)(pow10.hi) - (NU64)((NU64)((NU64)(pow10.hi) >> (NU64)(((NI32) 54)))))) >> (NU64)((NI32)(((NI32) 11) - betaMinus1))); upperEndpoint = (NU64)((NU64)((NU64)((NU64)(pow10.hi) + (NU64)((NU64)((NU64)(pow10.hi) >> (NU64)(((NI32) 53)))))) >> (NU64)((NI32)(((NI32) 11) - betaMinus1))); T2_ = (NIM_BOOL)0; T2_ = (((NI32) 2) <= e2); if (!(T2_)) goto LA3_; T2_ = (e2 <= ((NI32) 3)); LA3_: ; lowerEndpointIsInteger = T2_; xi = (NU64)((NU64)(lowerEndpoint) + (NU64)(((NU64) (!(lowerEndpointIsInteger))))); zi = upperEndpoint; q = (NU64)((NU64)(zi) / (NU64)(10ULL)); { if (!((NU64)(xi) <= (NU64)((NU64)((NU64)(q) * (NU64)(10ULL))))) goto LA6_; nimZeroMem((void*)(&result), sizeof(tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg)); result.significand = q; result.exponent = (NI32)(minusK + ((NI32) 1)); goto BeforeRet_; } LA6_: ; q = (NU64)((NU64)((NU64)((NU64)((NU64)((NU64)(pow10.hi) >> (NU64)((NI32)(((NI32) 10) - betaMinus1)))) + (NU64)(1ULL))) / (NU64)(2ULL)); { if (!(e2 == ((NI32) -77))) goto LA10_; q -= !(((NU64)((NU64)(q) % (NU64)(2ULL)) == 0ULL)); } goto LA8_; LA10_: ; { q += ((NU64)(q) < (NU64)(xi)); } LA8_: ; nimZeroMem((void*)(&result), sizeof(tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg)); result.significand = q; result.exponent = minusK; goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NI32, floorLog10Pow2__systemZdragonbox_79)(NI32 e) { NI32 result; { result = (NI32)0; result = floorDivPow2__systemZdragonbox_62((NI32)(e * ((NI32) 1262611)), ((NI32) 22)); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NU32, computeDelta__systemZdragonbox_251)(tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw pow10, NI32 betaMinus1) { NU32 result; { result = (NU32)0; result = ((NU32) ((NU64)((NU64)(pow10.hi) >> (NU64)((NI32)(((NI32) 63) - betaMinus1))))); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NU32, lo32__systemZdragonbox_265)(NU64 x) { NU32 result; { result = (NU32)0; result = ((NU32) (x)); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NU32, hi32__systemZdragonbox_268)(NU64 x) { NU32 result; { result = (NU32)0; result = ((NU32) ((NU64)((NU64)(x) >> (NU64)(((NI) 32))))); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw, mul128__systemZdragonbox_275)(NU64 a, NU64 b) { tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw result; NU64 b00; NU32 T1_; NU32 T2_; NU64 b01; NU32 T3_; NU32 T4_; NU64 b10; NU32 T5_; NU32 T6_; NU64 b11; NU32 T7_; NU32 T8_; NU64 mid1; NU32 T9_; NU64 mid2; NU32 T10_; NU64 hi; NU32 T11_; NU32 T12_; NU64 lo; NU32 T13_; NU32 T14_; { nimZeroMem((void*)(&result), sizeof(tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw)); T1_ = (NU32)0; T1_ = lo32__systemZdragonbox_265(a); T2_ = (NU32)0; T2_ = lo32__systemZdragonbox_265(b); b00 = (NU64)((NU64)(((NU64) (T1_))) * (NU64)(((NU64) (T2_)))); T3_ = (NU32)0; T3_ = lo32__systemZdragonbox_265(a); T4_ = (NU32)0; T4_ = hi32__systemZdragonbox_268(b); b01 = (NU64)((NU64)(((NU64) (T3_))) * (NU64)(((NU64) (T4_)))); T5_ = (NU32)0; T5_ = hi32__systemZdragonbox_268(a); T6_ = (NU32)0; T6_ = lo32__systemZdragonbox_265(b); b10 = (NU64)((NU64)(((NU64) (T5_))) * (NU64)(((NU64) (T6_)))); T7_ = (NU32)0; T7_ = hi32__systemZdragonbox_268(a); T8_ = (NU32)0; T8_ = hi32__systemZdragonbox_268(b); b11 = (NU64)((NU64)(((NU64) (T7_))) * (NU64)(((NU64) (T8_)))); T9_ = (NU32)0; T9_ = hi32__systemZdragonbox_268(b00); mid1 = (NU64)((NU64)(b10) + (NU64)(((NU64) (T9_)))); T10_ = (NU32)0; T10_ = lo32__systemZdragonbox_265(mid1); mid2 = (NU64)((NU64)(b01) + (NU64)(((NU64) (T10_)))); T11_ = (NU32)0; T11_ = hi32__systemZdragonbox_268(mid1); T12_ = (NU32)0; T12_ = hi32__systemZdragonbox_268(mid2); hi = (NU64)((NU64)((NU64)((NU64)(b11) + (NU64)(((NU64) (T11_))))) + (NU64)(((NU64) (T12_)))); T13_ = (NU32)0; T13_ = lo32__systemZdragonbox_265(b00); T14_ = (NU32)0; T14_ = lo32__systemZdragonbox_265(mid2); lo = (NU64)(((NU64) (T13_)) | (NU64)((NU64)(((NU64) (T14_))) << (NU64)(((NI) 32)))); nimZeroMem((void*)(&result), sizeof(tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw)); result.hi = hi; result.lo = lo; goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NU64, mulShift__systemZdragonbox_291)(NU64 x, tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw y) { NU64 result; tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw p1; tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw p0; { result = (NU64)0; p1 = mul128__systemZdragonbox_275(x, y.hi); p0 = mul128__systemZdragonbox_275(x, y.lo); p1.lo += p0.hi; p1.hi += ((NU64)(p1.lo) < (NU64)(p0.hi)); result = p1.hi; goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NIM_BOOL, multipleOfPow5__systemZdragonbox_150)(NU64 value, NI32 e5) { NIM_BOOL result; tyObject_MulCmp__tPF4ETaAdtVLNu8l2IurgA m5; { result = (NIM_BOOL)0; m5 = mod5__systemZdragonbox_157[(e5)- 0]; result = ((NU64)((NU64)((NU64)(value) * (NU64)(m5.mul))) <= (NU64)(m5.cmp)); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NIM_BOOL, isIntegralEndpoint__systemZdragonbox_326)(NU64 twoF, NI32 e2, NI32 minusK) { NIM_BOOL result; { result = (NIM_BOOL)0; { if (!(e2 < ((NI32) -2))) goto LA3_; result = NIM_FALSE; goto BeforeRet_; } LA3_: ; { if (!(e2 <= ((NI32) 9))) goto LA7_; result = NIM_TRUE; goto BeforeRet_; } LA7_: ; { if (!(e2 <= ((NI32) 86))) goto LA11_; result = multipleOfPow5__systemZdragonbox_150(twoF, minusK); goto BeforeRet_; } LA11_: ; result = NIM_FALSE; goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NIM_BOOL, mulParity__systemZdragonbox_308)(NU64 twoF, tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw pow10, NI32 betaMinus1) { NIM_BOOL result; NU64 p01; NU64 p10; tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw T1_; NU64 mid; { result = (NIM_BOOL)0; p01 = (NU64)((NU64)(twoF) * (NU64)(pow10.hi)); T1_ = mul128__systemZdragonbox_275(twoF, pow10.lo); p10 = T1_.hi; mid = (NU64)((NU64)(p01) + (NU64)(p10)); result = !(((NU64)(mid & (NU64)((NU64)(1ULL) << (NU64)((NI32)(((NI32) 64) - betaMinus1)))) == 0ULL)); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NIM_BOOL, isIntegralMidpoint__systemZdragonbox_331)(NU64 twoF, NI32 e2, NI32 minusK) { NIM_BOOL result; { result = (NIM_BOOL)0; { if (!(e2 < ((NI32) -4))) goto LA3_; result = multipleOfPow2__systemZdragonbox_139(twoF, (NI32)((NI32)(minusK - e2) + ((NI32) 1))); goto BeforeRet_; } LA3_: ; { if (!(e2 <= ((NI32) 9))) goto LA7_; result = NIM_TRUE; goto BeforeRet_; } LA7_: ; { if (!(e2 <= ((NI32) 86))) goto LA11_; result = multipleOfPow5__systemZdragonbox_150(twoF, minusK); goto BeforeRet_; } LA11_: ; result = NIM_FALSE; goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg, toDecimal64__systemZdragonbox_336)(NU64 ieeeSignificand, NU64 ieeeExponent) { tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg result; NU64 m2; NI32 e2; NIM_BOOL isEven; NIM_BOOL acceptLower; NIM_BOOL acceptUpper; NI32 minusK; NI32 T20_; NI32 betaMinus1; NI32 T21_; tyObject_uint64x2__L25w5SFALWmTH9b30NrjeJw pow10; NU32 delta; NU64 twoFl; NU64 twoFc; NU64 twoFr; NU64 zi; NU64 q; NU32 r; NU32 dist; NU32 distQ; { nimZeroMem((void*)(&result), sizeof(tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg)); m2 = (NU64)0; e2 = (NI32)0; { if (!!((ieeeExponent == 0ULL))) goto LA3_; m2 = (NU64)(4503599627370496ULL | ieeeSignificand); e2 = (NI32)(((NI32) (ieeeExponent)) - ((NI32) 1075)); { NIM_BOOL T7_; NIM_BOOL T8_; T7_ = (NIM_BOOL)0; T8_ = (NIM_BOOL)0; T8_ = (((NI32) 0) <= ((NI32)-(e2))); if (!(T8_)) goto LA9_; T8_ = (((NI32)-(e2)) < ((NI32) 53)); LA9_: ; T7_ = T8_; if (!(T7_)) goto LA10_; T7_ = multipleOfPow2__systemZdragonbox_139(m2, ((NI32)-(e2))); LA10_: ; if (!T7_) goto LA11_; nimZeroMem((void*)(&result), sizeof(tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg)); result.significand = (NU64)((NU64)(m2) >> (NU64)(((NI32)-(e2)))); result.exponent = ((NI32) 0); goto BeforeRet_; } LA11_: ; { NIM_BOOL T15_; T15_ = (NIM_BOOL)0; T15_ = (ieeeSignificand == 0ULL); if (!(T15_)) goto LA16_; T15_ = ((NU64)(1ULL) < (NU64)(ieeeExponent)); LA16_: ; if (!T15_) goto LA17_; result = toDecimal64AsymmetricInterval__systemZdragonbox_195(e2); goto BeforeRet_; } LA17_: ; } goto LA1_; LA3_: ; { m2 = ieeeSignificand; e2 = ((NI32) -1074); } LA1_: ; isEven = ((NU64)((NU64)(m2) % (NU64)(2ULL)) == 0ULL); acceptLower = isEven; acceptUpper = isEven; T20_ = (NI32)0; T20_ = floorLog10Pow2__systemZdragonbox_79(e2); minusK = (NI32)(T20_ - ((NI32) 2)); T21_ = (NI32)0; T21_ = floorLog2Pow10__systemZdragonbox_70(((NI32)-(minusK))); betaMinus1 = (NI32)(e2 + T21_); pow10 = computePow10__systemZdragonbox_100(((NI32)-(minusK))); delta = computeDelta__systemZdragonbox_251(pow10, betaMinus1); twoFl = (NU64)((NU64)((NU64)((NU64)(2ULL) * (NU64)(m2))) - (NU64)(1ULL)); twoFc = (NU64)((NU64)(2ULL) * (NU64)(m2)); twoFr = (NU64)((NU64)((NU64)((NU64)(2ULL) * (NU64)(m2))) + (NU64)(1ULL)); zi = mulShift__systemZdragonbox_291((NU64)((NU64)(twoFr) << (NU64)(betaMinus1)), pow10); q = (NU64)((NU64)(zi) / (NU64)(1000ULL)); r = (NU32)((NU32)(((NU32) (zi))) - (NU32)((NU32)((NU32)(((NU32) 1000)) * (NU32)(((NU32) (q)))))); { if (!((NU32)(r) < (NU32)(delta))) goto LA24_; { NIM_BOOL T28_; NIM_BOOL T29_; NIM_BOOL T32_; T28_ = (NIM_BOOL)0; T29_ = (NIM_BOOL)0; T29_ = !((r == ((NU32) 0))); if (T29_) goto LA30_; T29_ = acceptUpper; LA30_: ; T28_ = T29_; if (T28_) goto LA31_; T32_ = (NIM_BOOL)0; T32_ = isIntegralEndpoint__systemZdragonbox_326(twoFr, e2, minusK); T28_ = !(T32_); LA31_: ; if (!T28_) goto LA33_; nimZeroMem((void*)(&result), sizeof(tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg)); result.significand = q; result.exponent = (NI32)((NI32)(minusK + ((NI32) 2)) + ((NI32) 1)); goto BeforeRet_; } LA33_: ; q -= ((NI) 1); r = ((NU32) 1000); } goto LA22_; LA24_: ; { if (!(r == delta)) goto LA36_; { NIM_BOOL T40_; NIM_BOOL T41_; T40_ = (NIM_BOOL)0; T41_ = (NIM_BOOL)0; T41_ = acceptLower; if (!(T41_)) goto LA42_; T41_ = isIntegralEndpoint__systemZdragonbox_326(twoFl, e2, minusK); LA42_: ; T40_ = T41_; if (T40_) goto LA43_; T40_ = mulParity__systemZdragonbox_308(twoFl, pow10, betaMinus1); LA43_: ; if (!T40_) goto LA44_; nimZeroMem((void*)(&result), sizeof(tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg)); result.significand = q; result.exponent = (NI32)((NI32)(minusK + ((NI32) 2)) + ((NI32) 1)); goto BeforeRet_; } LA44_: ; } goto LA22_; LA36_: ; { } LA22_: ; q = (NU64)((NU64)(q) * (NU64)(10ULL)); dist = (NU32)((NU32)((NU32)((NU32)(r) - (NU32)((NU32)((NU32)(delta) / (NU32)(((NU32) 2)))))) + (NU32)(((NU32) 50))); distQ = (NU32)((NU32)(dist) / (NU32)(((NU32) 100))); q += ((NU64) (distQ)); { NIM_BOOL approxYParity; if (!(dist == (NU32)((NU32)(distQ) * (NU32)(((NU32) 100))))) goto LA49_; approxYParity = !(((NU32)(dist & ((NU32) 1)) == ((NU32) 0))); { NIM_BOOL T53_; T53_ = (NIM_BOOL)0; T53_ = mulParity__systemZdragonbox_308(twoFc, pow10, betaMinus1); if (!!((T53_ == approxYParity))) goto LA54_; q -= ((NI) 1); } goto LA51_; LA54_: ; { NIM_BOOL T57_; T57_ = (NIM_BOOL)0; T57_ = !(((NU64)((NU64)(q) % (NU64)(2ULL)) == 0ULL)); if (!(T57_)) goto LA58_; T57_ = isIntegralMidpoint__systemZdragonbox_331(twoFc, e2, minusK); LA58_: ; if (!T57_) goto LA59_; q -= ((NI) 1); } goto LA51_; LA59_: ; LA51_: ; } LA49_: ; nimZeroMem((void*)(&result), sizeof(tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg)); result.significand = q; result.exponent = (NI32)(minusK + ((NI32) 2)); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NI32, decimalLength__systemZdragonbox_534)(NU64 v) { NI32 result; NU32 v32; { result = (NI32)0; { if (!!((((NU32) ((NU64)((NU64)(v) >> (NU64)(((NI) 32))))) == ((NU32) 0)))) goto LA3_; { if (!((NU64)(10000000000000000ULL) <= (NU64)(v))) goto LA7_; result = ((NI32) 17); goto BeforeRet_; } LA7_: ; { if (!((NU64)(1000000000000000ULL) <= (NU64)(v))) goto LA11_; result = ((NI32) 16); goto BeforeRet_; } LA11_: ; { if (!((NU64)(100000000000000ULL) <= (NU64)(v))) goto LA15_; result = ((NI32) 15); goto BeforeRet_; } LA15_: ; { if (!((NU64)(10000000000000ULL) <= (NU64)(v))) goto LA19_; result = ((NI32) 14); goto BeforeRet_; } LA19_: ; { if (!((NU64)(1000000000000ULL) <= (NU64)(v))) goto LA23_; result = ((NI32) 13); goto BeforeRet_; } LA23_: ; { if (!((NU64)(100000000000ULL) <= (NU64)(v))) goto LA27_; result = ((NI32) 12); goto BeforeRet_; } LA27_: ; { if (!((NU64)(10000000000ULL) <= (NU64)(v))) goto LA31_; result = ((NI32) 11); goto BeforeRet_; } LA31_: ; result = ((NI32) 10); goto BeforeRet_; } LA3_: ; v32 = ((NU32) (v)); { if (!((NU32)(((NU) 1000000000)) <= (NU32)(((NU) (v32))))) goto LA35_; result = ((NI32) 10); goto BeforeRet_; } LA35_: ; { if (!((NU32)(((NU) 100000000)) <= (NU32)(((NU) (v32))))) goto LA39_; result = ((NI32) 9); goto BeforeRet_; } LA39_: ; { if (!((NU32)(((NU) 10000000)) <= (NU32)(((NU) (v32))))) goto LA43_; result = ((NI32) 8); goto BeforeRet_; } LA43_: ; { if (!((NU32)(((NU) 1000000)) <= (NU32)(((NU) (v32))))) goto LA47_; result = ((NI32) 7); goto BeforeRet_; } LA47_: ; { if (!((NU32)(((NU) 100000)) <= (NU32)(((NU) (v32))))) goto LA51_; result = ((NI32) 6); goto BeforeRet_; } LA51_: ; { if (!((NU32)(((NU) 10000)) <= (NU32)(((NU) (v32))))) goto LA55_; result = ((NI32) 5); goto BeforeRet_; } LA55_: ; { if (!((NU32)(((NU) 1000)) <= (NU32)(((NU) (v32))))) goto LA59_; result = ((NI32) 4); goto BeforeRet_; } LA59_: ; { if (!((NU32)(((NU) 100)) <= (NU32)(((NU) (v32))))) goto LA63_; result = ((NI32) 3); goto BeforeRet_; } LA63_: ; { if (!((NU32)(((NU) 10)) <= (NU32)(((NU) (v32))))) goto LA67_; result = ((NI32) 2); goto BeforeRet_; } LA67_: ; result = ((NI32) 1); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(void, utoa2Digits__stdZprivateZdigitsutils_21)(NIM_CHAR* buf, NI bufLen_0, NI pos, NU32 digits) { buf[pos] = digits100__stdZprivateZdigitsutils_2[((NU32)((NU32)(((NU32) 2)) * (NU32)(digits)))- 0]; buf[(NI)(pos + ((NI) 1))] = digits100__stdZprivateZdigitsutils_2[((NU32)((NU32)((NU32)((NU32)(((NU32) 2)) * (NU32)(digits))) + (NU32)(((NU32) 1))))- 0]; } static N_INLINE(NI32, trailingZeros2Digits__stdZprivateZdigitsutils_34)(NU32 digits) { NI32 result; { result = (NI32)0; result = ((NI32) (trailingZeros100__stdZprivateZdigitsutils_1[(digits)- 0])); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NI32, utoa8DigitsSkipTrailingZeros__systemZdragonbox_400)(NIM_CHAR* buf, NI bufLen_0, NI pos, NU32 digits) { NI32 result; NU32 q; NU32 r; NU32 qH; NU32 qL; { result = (NI32)0; q = (NU32)((NU32)(digits) / (NU32)(((NU32) 10000))); r = (NU32)((NU32)(digits) % (NU32)(((NU32) 10000))); qH = (NU32)((NU32)(q) / (NU32)(((NU32) 100))); qL = (NU32)((NU32)(q) % (NU32)(((NU32) 100))); utoa2Digits__stdZprivateZdigitsutils_21(buf, bufLen_0, pos, qH); utoa2Digits__stdZprivateZdigitsutils_21(buf, bufLen_0, (NI)(pos + ((NI) 2)), qL); { NU32 T5_; NI32 T11_; NI T12_; if (!(r == ((NU32) 0))) goto LA3_; T5_ = (NU32)0; { if (!(qL == ((NU32) 0))) goto LA8_; T5_ = qH; } goto LA6_; LA8_: ; { T5_ = qL; } LA6_: ; T11_ = (NI32)0; T11_ = trailingZeros2Digits__stdZprivateZdigitsutils_34(T5_); T12_ = (NI)0; { if (!(qL == ((NU32) 0))) goto LA15_; T12_ = ((NI) 6); } goto LA13_; LA15_: ; { T12_ = ((NI) 4); } LA13_: ; result = (NI32)(T11_ + ((NI32) (T12_))); goto BeforeRet_; } goto LA1_; LA3_: ; { NU32 rH; NU32 rL; NU32 T19_; NI32 T25_; NI T26_; rH = (NU32)((NU32)(r) / (NU32)(((NU32) 100))); rL = (NU32)((NU32)(r) % (NU32)(((NU32) 100))); utoa2Digits__stdZprivateZdigitsutils_21(buf, bufLen_0, (NI)(pos + ((NI) 4)), rH); utoa2Digits__stdZprivateZdigitsutils_21(buf, bufLen_0, (NI)(pos + ((NI) 6)), rL); T19_ = (NU32)0; { if (!(rL == ((NU32) 0))) goto LA22_; T19_ = rH; } goto LA20_; LA22_: ; { T19_ = rL; } LA20_: ; T25_ = (NI32)0; T25_ = trailingZeros2Digits__stdZprivateZdigitsutils_34(T19_); T26_ = (NI)0; { if (!(rL == ((NU32) 0))) goto LA29_; T26_ = ((NI) 2); } goto LA27_; LA29_: ; { T26_ = ((NI) 0); } LA27_: ; result = (NI32)(T25_ + ((NI32) (T26_))); goto BeforeRet_; } LA1_: ; }BeforeRet_: ; return result; } static N_INLINE(NI32, printDecimalDigitsBackwards__systemZdragonbox_417)(NIM_CHAR* buf, NI bufLen_0, NI pos, NU64 output64) { NI32 result; NI pos_2; NU64 output64_2; NI32 tz; NI32 nd; NU32 output; { result = (NI32)0; pos_2 = pos; output64_2 = output64; tz = ((NI32) 0); nd = ((NI32) 0); { NU64 q; NU32 r; if (!((NU64)(100000000ULL) <= (NU64)(output64_2))) goto LA3_; q = (NU64)((NU64)(output64_2) / (NU64)(100000000ULL)); r = ((NU32) ((NU64)((NU64)(output64_2) % (NU64)(100000000ULL)))); output64_2 = q; pos_2 -= ((NI) 8); { if (!!((r == ((NU32) 0)))) goto LA7_; tz = utoa8DigitsSkipTrailingZeros__systemZdragonbox_400(buf, bufLen_0, pos_2, r); } goto LA5_; LA7_: ; { tz = ((NI32) 8); } LA5_: ; nd = ((NI32) 8); } LA3_: ; output = ((NU32) (output64_2)); { NU32 q_2; NU32 r_2; if (!((NU32)(((NU32) 10000)) <= (NU32)(output))) goto LA12_; q_2 = (NU32)((NU32)(output) / (NU32)(((NU32) 10000))); r_2 = (NU32)((NU32)(output) % (NU32)(((NU32) 10000))); output = q_2; pos_2 -= ((NI) 4); { NU32 rH; NU32 rL; if (!!((r_2 == ((NU32) 0)))) goto LA16_; rH = (NU32)((NU32)(r_2) / (NU32)(((NU32) 100))); rL = (NU32)((NU32)(r_2) % (NU32)(((NU32) 100))); utoa2Digits__stdZprivateZdigitsutils_21(buf, bufLen_0, pos_2, rH); utoa2Digits__stdZprivateZdigitsutils_21(buf, bufLen_0, (NI)(pos_2 + ((NI) 2)), rL); { NU32 T22_; NI32 T28_; NI T29_; if (!(tz == nd)) goto LA20_; T22_ = (NU32)0; { if (!(rL == ((NU32) 0))) goto LA25_; T22_ = rH; } goto LA23_; LA25_: ; { T22_ = rL; } LA23_: ; T28_ = (NI32)0; T28_ = trailingZeros2Digits__stdZprivateZdigitsutils_34(T22_); T29_ = (NI)0; { if (!(rL == ((NU32) 0))) goto LA32_; T29_ = ((NI) 2); } goto LA30_; LA32_: ; { T29_ = ((NI) 0); } LA30_: ; tz += ((NI) ((NI32)(T28_ + ((NI32) (T29_))))); } LA20_: ; } goto LA14_; LA16_: ; { { if (!(tz == nd)) goto LA38_; tz += ((NI) 4); } goto LA36_; LA38_: ; { { NI i; NI res; i = (NI)0; res = ((NI) 0); { while (1) { if (!(res <= ((NI) 3))) goto LA43; i = res; buf[(NI)(pos_2 + i)] = 48; res += ((NI) 1); } LA43: ; } } } LA36_: ; } LA14_: ; nd += ((NI) 4); } LA12_: ; { NU32 q_3; NU32 r_3; if (!((NU32)(((NU32) 100)) <= (NU32)(output))) goto LA46_; q_3 = (NU32)((NU32)(output) / (NU32)(((NU32) 100))); r_3 = (NU32)((NU32)(output) % (NU32)(((NU32) 100))); output = q_3; pos_2 -= ((NI) 2); utoa2Digits__stdZprivateZdigitsutils_21(buf, bufLen_0, pos_2, r_3); { NI32 T52_; if (!(tz == nd)) goto LA50_; T52_ = (NI32)0; T52_ = trailingZeros2Digits__stdZprivateZdigitsutils_34(r_3); tz += ((NI) (T52_)); } LA50_: ; nd += ((NI) 2); { NU32 q2; NU32 r2; if (!((NU32)(((NU32) 100)) <= (NU32)(output))) goto LA55_; q2 = (NU32)((NU32)(output) / (NU32)(((NU32) 100))); r2 = (NU32)((NU32)(output) % (NU32)(((NU32) 100))); output = q2; pos_2 -= ((NI) 2); utoa2Digits__stdZprivateZdigitsutils_21(buf, bufLen_0, pos_2, r2); { NI32 T61_; if (!(tz == nd)) goto LA59_; T61_ = (NI32)0; T61_ = trailingZeros2Digits__stdZprivateZdigitsutils_34(r2); tz += ((NI) (T61_)); } LA59_: ; nd += ((NI) 2); } LA55_: ; } LA46_: ; { NU32 q_4; if (!((NU32)(((NU32) 10)) <= (NU32)(output))) goto LA64_; q_4 = output; pos_2 -= ((NI) 2); utoa2Digits__stdZprivateZdigitsutils_21(buf, bufLen_0, pos_2, q_4); { NI32 T70_; if (!(tz == nd)) goto LA68_; T70_ = (NI32)0; T70_ = trailingZeros2Digits__stdZprivateZdigitsutils_34(q_4); tz += ((NI) (T70_)); } LA68_: ; } goto LA62_; LA64_: ; { NU32 q_5; q_5 = output; pos_2 -= ((NI) 1); buf[pos_2] = ((NIM_CHAR) (((NI) ((NU32)((NU32)(((NU32) 48)) + (NU32)(q_5)))))); } LA62_: ; result = tz; goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NI, formatDigits__systemZdragonbox_548)(NIM_CHAR* buffer, NI bufferLen_0, NI pos, NU64 digits, NI32 decimalExponent, NIM_BOOL forceTrailingDotZero) { NI result; NI pos_2; NI32 numDigits; NI32 decimalPoint; NIM_BOOL useFixed; NIM_BOOL T1_; NI32 decimalDigitsPosition; NI digitsEnd; NI32 tz; { result = (NI)0; pos_2 = pos; numDigits = decimalLength__systemZdragonbox_534(digits); decimalPoint = (NI32)(numDigits + decimalExponent); T1_ = (NIM_BOOL)0; T1_ = (((NI32) -6) <= decimalPoint); if (!(T1_)) goto LA2_; T1_ = (decimalPoint <= ((NI32) 17)); LA2_: ; useFixed = T1_; { NI i; NI i_2; i = (NI)0; i_2 = ((NI) 0); { while (1) { if (!(i_2 < ((NI) 32))) goto LA5; i = i_2; buffer[(NI)(pos_2 + i)] = 48; i_2 += ((NI) 1); } LA5: ; } } decimalDigitsPosition = (NI32)0; { if (!useFixed) goto LA8_; { if (!(decimalPoint <= ((NI32) 0))) goto LA12_; decimalDigitsPosition = (NI32)(((NI32) 2) - decimalPoint); } goto LA10_; LA12_: ; { decimalDigitsPosition = ((NI32) 0); } LA10_: ; } goto LA6_; LA8_: ; { decimalDigitsPosition = ((NI32) 1); } LA6_: ; digitsEnd = (NI)(pos_2 + ((NI) ((NI32)(decimalDigitsPosition + numDigits)))); tz = printDecimalDigitsBackwards__systemZdragonbox_417(buffer, bufferLen_0, digitsEnd, digits); digitsEnd -= ((NI) (tz)); numDigits -= ((NI) (tz)); { if (!useFixed) goto LA18_; { if (!(decimalPoint <= ((NI32) 0))) goto LA22_; buffer[(NI)(pos_2 + ((NI) 1))] = 46; pos_2 = digitsEnd; } goto LA20_; LA22_: ; { tyArray__Wfh9bjgBQ4UqJsyISUuDSuA tmp; if (!(decimalPoint < numDigits)) goto LA25_; nimZeroMem((void*)tmp, sizeof(tyArray__Wfh9bjgBQ4UqJsyISUuDSuA)); { NI i_3; NI i_4; i_3 = (NI)0; i_4 = ((NI) 0); { while (1) { if (!(i_4 < ((NI) 16))) goto LA29; i_3 = i_4; tmp[(i_3)- 0] = buffer[(NI)((NI)(i_3 + pos_2) + ((NI) (decimalPoint)))]; i_4 += ((NI) 1); } LA29: ; } } { NI i_5; NI i_6; i_5 = (NI)0; i_6 = ((NI) 0); { while (1) { if (!(i_6 < ((NI) 16))) goto LA32; i_5 = i_6; buffer[(NI)((NI)((NI)(i_5 + pos_2) + ((NI) (decimalPoint))) + ((NI) 1))] = tmp[(i_5)- 0]; i_6 += ((NI) 1); } LA32: ; } } buffer[(NI)(pos_2 + ((NI) (decimalPoint)))] = 46; pos_2 = (NI)(digitsEnd + ((NI) 1)); } goto LA20_; LA25_: ; { pos_2 += ((NI) (decimalPoint)); { if (!forceTrailingDotZero) goto LA36_; buffer[pos_2] = 46; buffer[(NI)(pos_2 + ((NI) 1))] = 48; pos_2 += ((NI) 2); } LA36_: ; } LA20_: ; } goto LA16_; LA18_: ; { NI32 scientificExponent; NU32 k; NI32 T49_; buffer[pos_2] = buffer[(NI)(pos_2 + ((NI) 1))]; { if (!(numDigits == ((NI32) 1))) goto LA41_; pos_2 += ((NI) 1); } goto LA39_; LA41_: ; { buffer[(NI)(pos_2 + ((NI) 1))] = 46; pos_2 = digitsEnd; } LA39_: ; scientificExponent = (NI32)(decimalPoint - ((NI32) 1)); buffer[pos_2] = 101; { if (!(scientificExponent < ((NI32) 0))) goto LA46_; buffer[(NI)(pos_2 + ((NI) 1))] = 45; } goto LA44_; LA46_: ; { buffer[(NI)(pos_2 + ((NI) 1))] = 43; } LA44_: ; pos_2 += ((NI) 2); T49_ = (NI32)0; { if (!(scientificExponent < ((NI32) 0))) goto LA52_; T49_ = ((NI32)-(scientificExponent)); } goto LA50_; LA52_: ; { T49_ = scientificExponent; } LA50_: ; k = ((NU32) (T49_)); { if (!((NU32)(k) < (NU32)(((NU32) 10)))) goto LA57_; buffer[pos_2] = ((NIM_CHAR) (((NI) ((NU32)((NU32)(((NU32) 48)) + (NU32)(k)))))); pos_2 += ((NI) 1); } goto LA55_; LA57_: ; { if (!((NU32)(k) < (NU32)(((NU32) 100)))) goto LA60_; utoa2Digits__stdZprivateZdigitsutils_21(buffer, bufferLen_0, pos_2, k); pos_2 += ((NI) 2); } goto LA55_; LA60_: ; { NU32 q; NU32 r; q = (NU32)((NU32)(k) / (NU32)(((NU32) 100))); r = (NU32)((NU32)(k) % (NU32)(((NU32) 100))); buffer[pos_2] = ((NIM_CHAR) (((NI) ((NU32)((NU32)(((NU32) 48)) + (NU32)(q)))))); pos_2 += ((NI) 1); utoa2Digits__stdZprivateZdigitsutils_21(buffer, bufferLen_0, pos_2, r); pos_2 += ((NI) 2); } LA55_: ; } LA16_: ; result = pos_2; goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NI, toChars__systemZdragonbox_672)(NIM_CHAR* buffer, NI bufferLen_0, NF v, NIM_BOOL forceTrailingDotZero) { NI result; NI pos; NU64 significand; tyObject_Double__IoVNMXAH9aQnPnWZZsWMVxw T1_; NU64 exponent; tyObject_Double__IoVNMXAH9aQnPnWZZsWMVxw T2_; { result = (NI)0; pos = ((NI) 0); T1_ = constructDouble__systemZdragonbox_31(v); significand = physicalSignificand__systemZdragonbox_34(T1_); T2_ = constructDouble__systemZdragonbox_31(v); exponent = physicalExponent__systemZdragonbox_37(T2_); { tyObject_Double__IoVNMXAH9aQnPnWZZsWMVxw T7_; NI T8_; if (!!((exponent == 2047ULL))) goto LA5_; buffer[pos] = 45; T7_ = constructDouble__systemZdragonbox_31(v); T8_ = (NI)0; T8_ = signBit__systemZdragonbox_56(T7_); pos += T8_; { NIM_BOOL T11_; tyObject_FloatingDecimal64__vQfQtj1GrzWru758F3GQIg dec; T11_ = (NIM_BOOL)0; T11_ = !((exponent == 0ULL)); if (T11_) goto LA12_; T11_ = !((significand == 0ULL)); LA12_: ; if (!T11_) goto LA13_; dec = toDecimal64__systemZdragonbox_336(significand, exponent); result = formatDigits__systemZdragonbox_548(buffer, bufferLen_0, pos, dec.significand, dec.exponent, forceTrailingDotZero); goto BeforeRet_; } goto LA9_; LA13_: ; { NI T16_; buffer[pos] = 48; buffer[(NI)(pos + ((NI) 1))] = 46; buffer[(NI)(pos + ((NI) 2))] = 48; buffer[(NI)(pos + ((NI) 3))] = 32; T16_ = (NI)0; { if (!forceTrailingDotZero) goto LA19_; T16_ = ((NI) 3); } goto LA17_; LA19_: ; { T16_ = ((NI) 1); } LA17_: ; pos += T16_; result = pos; goto BeforeRet_; } LA9_: ; } LA5_: ; { tyObject_Double__IoVNMXAH9aQnPnWZZsWMVxw T26_; NI T27_; if (!(significand == 0ULL)) goto LA24_; buffer[pos] = 45; T26_ = constructDouble__systemZdragonbox_31(v); T27_ = (NI)0; T27_ = signBit__systemZdragonbox_56(T26_); pos += T27_; buffer[pos] = 105; buffer[(NI)(pos + ((NI) 1))] = 110; buffer[(NI)(pos + ((NI) 2))] = 102; buffer[(NI)(pos + ((NI) 3))] = 32; result = (NI)(pos + ((NI) 3)); goto BeforeRet_; } goto LA22_; LA24_: ; { buffer[pos] = 110; buffer[(NI)(pos + ((NI) 1))] = 97; buffer[(NI)(pos + ((NI) 2))] = 110; buffer[(NI)(pos + ((NI) 3))] = 32; result = (NI)(pos + ((NI) 3)); goto BeforeRet_; } LA22_: ; }BeforeRet_: ; return result; } N_LIB_PRIVATE N_NIMCALL(NI, writeFloatToBufferRoundtrip__systemZformatfloat_13)(NIM_CHAR* buf, NF value) { NI result; result = (NI)0; result = toChars__systemZdragonbox_672(buf, 65, value, NIM_TRUE); buf[(result)- 0] = 0; return result; } N_LIB_PRIVATE N_NIMCALL(void, addCstringN__systemZformatfloat_5)(NimStringDesc** result, NCSTRING buf, NI buflen) { NI oldLen; NI newLen; void* T1_; oldLen = ((*result) ? (*result)->Sup.len : 0); newLen = (NI)(oldLen + buflen); unsureAsgnRef((void**) (&(*result)), setLengthStr((*result), ((NI) (newLen)))); T1_ = (void*)0; T1_ = memcpy(((void*) ((&(*result)->data[oldLen]))), ((void*) (buf)), ((size_t) (buflen))); } N_LIB_PRIVATE N_NIMCALL(void, writeToBuffer__systemZformatfloat_51)(NIM_CHAR* buf, NCSTRING value) { NI i; i = ((NI) 0); { while (1) { if (!!(((NU8)(value[i]) == (NU8)(0)))) goto LA2; buf[(i)- 0] = value[i]; i += ((NI) 1); } LA2: ; } } N_LIB_PRIVATE N_NIMCALL(NI, writeFloatToBufferSprintf__systemZformatfloat_59)(NIM_CHAR* buf, NF value) { NI result; NI n; int T1_; NIM_BOOL hasDot; result = (NI)0; T1_ = (int)0; T1_ = sprintf(((NCSTRING) (buf)), "%.16g", value); n = ((NI) (T1_)); hasDot = NIM_FALSE; { NI i; NI colontmp_; NI res; i = (NI)0; colontmp_ = (NI)0; colontmp_ = (NI)(n - ((NI) 1)); res = ((NI) 0); { while (1) { if (!(res <= colontmp_)) goto LA4; i = res; { if (!((NU8)(buf[(i)- 0]) == (NU8)(44))) goto LA7_; buf[(i)- 0] = 46; hasDot = NIM_TRUE; } goto LA5_; LA7_: ; { if (!(((NU8)(buf[(i)- 0])) >= ((NU8)(97)) && ((NU8)(buf[(i)- 0])) <= ((NU8)(122)) || ((NU8)(buf[(i)- 0])) >= ((NU8)(65)) && ((NU8)(buf[(i)- 0])) <= ((NU8)(90)) || ((NU8)(buf[(i)- 0])) == ((NU8)(46)))) goto LA10_; hasDot = NIM_TRUE; } goto LA5_; LA10_: ; LA5_: ; res += ((NI) 1); } LA4: ; } } { if (!!(hasDot)) goto LA14_; buf[(n)- 0] = 46; buf[((NI)(n + ((NI) 1)))- 0] = 48; buf[((NI)(n + ((NI) 2)))- 0] = 0; result = (NI)(n + ((NI) 2)); } goto LA12_; LA14_: ; { result = n; } LA12_: ; { if (!(((NU8)(buf[((NI)(n - ((NI) 1)))- 0])) == ((NU8)(110)) || ((NU8)(buf[((NI)(n - ((NI) 1)))- 0])) == ((NU8)(78)) || ((NU8)(buf[((NI)(n - ((NI) 1)))- 0])) == ((NU8)(68)) || ((NU8)(buf[((NI)(n - ((NI) 1)))- 0])) == ((NU8)(100)) || ((NU8)(buf[((NI)(n - ((NI) 1)))- 0])) == ((NU8)(41)))) goto LA19_; writeToBuffer__systemZformatfloat_51(buf, "nan"); result = ((NI) 3); } goto LA17_; LA19_: ; { if (!((NU8)(buf[((NI)(n - ((NI) 1)))- 0]) == (NU8)(70))) goto LA22_; { if (!((NU8)(buf[(((NI) 0))- 0]) == (NU8)(45))) goto LA26_; writeToBuffer__systemZformatfloat_51(buf, "-inf"); result = ((NI) 4); } goto LA24_; LA26_: ; { writeToBuffer__systemZformatfloat_51(buf, "inf"); result = ((NI) 3); } LA24_: ; } goto LA17_; LA22_: ; LA17_: ; return result; } N_LIB_PRIVATE N_NIMCALL(void, addFloatSprintf__systemZformatfloat_99)(NimStringDesc** result, NF x) { tyArray__eVNFTutn6un5gcq48fQLdg buffer; NI n; n = writeFloatToBufferSprintf__systemZformatfloat_59(buffer, x); addCstringN__systemZformatfloat_5(result, ((NCSTRING) ((&buffer[(((NI) 0))- 0]))), n); } static N_INLINE(NIM_BOOL, multipleOfPow2__systemZschubfach_125)(NU32 value, NI32 e2) { NIM_BOOL result; { result = (NIM_BOOL)0; result = ((NU32)(value & (NU32)((NU32)((NU32)((NU32)(((NU32) 1)) << (NU32)(e2))) - (NU32)(((NU32) 1)))) == ((NU32) 0)); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NI32, floorDivPow2__systemZschubfach_59)(NI32 x, NI32 n) { NI32 result; { result = (NI32)0; result = (NI32)((NI32)(x) >> (NU32)(n)); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NI32, floorLog2Pow10__systemZschubfach_67)(NI32 e) { NI32 result; { result = (NI32)0; result = floorDivPow2__systemZschubfach_59((NI32)(e * ((NI32) 1741647)), ((NI32) 19)); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NU64, computePow10Single__systemZschubfach_88)(NI32 k) { NU64 result; { result = (NU64)0; result = g__systemZschubfach_78[((NI32)(k - ((NI32) -31)))- 0]; goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NU32, lo32__systemZschubfach_106)(NU64 x) { NU32 result; { result = (NU32)0; result = ((NU32) (x)); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NU32, hi32__systemZschubfach_109)(NU64 x) { NU32 result; { result = (NU32)0; result = ((NU32) ((NU64)((NU64)(x) >> (NU64)(((NI) 32))))); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NU32, roundToOdd__systemZschubfach_116)(NU64 g, NU32 cp) { NU32 result; NU64 b01; NU32 T1_; NU64 b11; NU32 T2_; NU64 hi; NU32 T3_; NU32 y1; NU32 y0; { result = (NU32)0; T1_ = (NU32)0; T1_ = lo32__systemZschubfach_106(g); b01 = (NU64)((NU64)(((NU64) (T1_))) * (NU64)(((NU64) (cp)))); T2_ = (NU32)0; T2_ = hi32__systemZschubfach_109(g); b11 = (NU64)((NU64)(((NU64) (T2_))) * (NU64)(((NU64) (cp)))); T3_ = (NU32)0; T3_ = hi32__systemZschubfach_109(b01); hi = (NU64)((NU64)(b11) + (NU64)(((NU64) (T3_)))); y1 = hi32__systemZschubfach_109(hi); y0 = lo32__systemZschubfach_106(hi); result = (NU32)(y1 | ((NU32) (((NU32)(((NU32) 1)) < (NU32)(y0))))); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(tyObject_FloatingDecimal32__AcbjRnPoMG8Pkr9bMFAoLNg, toDecimal32__systemZschubfach_142)(NU32 ieeeSignificand, NU32 ieeeExponent) { tyObject_FloatingDecimal32__AcbjRnPoMG8Pkr9bMFAoLNg result; NU32 c; NI32 q; NIM_BOOL isEven; NIM_BOOL lowerBoundaryIsCloser; NIM_BOOL T14_; NU32 cbl; NU32 cb; NU32 cbr; NI32 k; NI T16_; NI32 h; NI32 T22_; NU64 pow10; NU32 vbl; NU32 vb; NU32 vbr; NU32 lower; NU32 upper; NU32 s; NIM_BOOL uInside; NIM_BOOL wInside; NU32 mid; NIM_BOOL roundUp; NIM_BOOL T35_; NIM_BOOL T37_; { nimZeroMem((void*)(&result), sizeof(tyObject_FloatingDecimal32__AcbjRnPoMG8Pkr9bMFAoLNg)); c = (NU32)0; q = (NI32)0; { if (!!((ieeeExponent == ((NU32) 0)))) goto LA3_; c = (NU32)(((NU32) 8388608) | ieeeSignificand); q = (NI32)(((NI32) (ieeeExponent)) - ((NI32) 150)); { NIM_BOOL T7_; NIM_BOOL T8_; T7_ = (NIM_BOOL)0; T8_ = (NIM_BOOL)0; T8_ = (((NI32) 0) <= ((NI32)-(q))); if (!(T8_)) goto LA9_; T8_ = (((NI32)-(q)) < ((NI32) 24)); LA9_: ; T7_ = T8_; if (!(T7_)) goto LA10_; T7_ = multipleOfPow2__systemZschubfach_125(c, ((NI32)-(q))); LA10_: ; if (!T7_) goto LA11_; nimZeroMem((void*)(&result), sizeof(tyObject_FloatingDecimal32__AcbjRnPoMG8Pkr9bMFAoLNg)); result.digits = (NU32)((NU32)(c) >> (NU32)(((NI32)-(q)))); result.exponent = ((NI32) 0); goto BeforeRet_; } LA11_: ; } goto LA1_; LA3_: ; { c = ieeeSignificand; q = ((NI32) -149); } LA1_: ; isEven = ((NU32)((NU32)(c) % (NU32)(((NU32) 2))) == ((NU32) 0)); T14_ = (NIM_BOOL)0; T14_ = (ieeeSignificand == ((NU32) 0)); if (!(T14_)) goto LA15_; T14_ = ((NU32)(((NU32) 1)) < (NU32)(ieeeExponent)); LA15_: ; lowerBoundaryIsCloser = T14_; cbl = (NU32)((NU32)((NU32)((NU32)((NU32)((NU32)(((NU32) 4)) * (NU32)(c))) - (NU32)(((NU32) 2)))) + (NU32)(((NU32) (lowerBoundaryIsCloser)))); cb = (NU32)((NU32)(((NU32) 4)) * (NU32)(c)); cbr = (NU32)((NU32)((NU32)((NU32)(((NU32) 4)) * (NU32)(c))) + (NU32)(((NU32) 2))); T16_ = (NI)0; { if (!lowerBoundaryIsCloser) goto LA19_; T16_ = ((NI) 524031); } goto LA17_; LA19_: ; { T16_ = ((NI) 0); } LA17_: ; k = floorDivPow2__systemZschubfach_59((NI32)((NI32)(q * ((NI32) 1262611)) - ((NI32) (T16_))), ((NI32) 22)); T22_ = (NI32)0; T22_ = floorLog2Pow10__systemZschubfach_67(((NI32)-(k))); h = (NI32)((NI32)(q + T22_) + ((NI32) 1)); pow10 = computePow10Single__systemZschubfach_88(((NI32)-(k))); vbl = roundToOdd__systemZschubfach_116(pow10, (NU32)((NU32)(cbl) << (NU32)(h))); vb = roundToOdd__systemZschubfach_116(pow10, (NU32)((NU32)(cb) << (NU32)(h))); vbr = roundToOdd__systemZschubfach_116(pow10, (NU32)((NU32)(cbr) << (NU32)(h))); lower = (NU32)((NU32)(vbl) + (NU32)(((NU32) (!(isEven))))); upper = (NU32)((NU32)(vbr) - (NU32)(((NU32) (!(isEven))))); s = (NU32)((NU32)(vb) / (NU32)(((NU32) 4))); { NU32 sp; NIM_BOOL upInside; NIM_BOOL wpInside; if (!((NU32)(((NU32) 10)) <= (NU32)(s))) goto LA25_; sp = (NU32)((NU32)(s) / (NU32)(((NU32) 10))); upInside = ((NU32)(lower) <= (NU32)((NU32)((NU32)(((NU32) 40)) * (NU32)(sp)))); wpInside = ((NU32)((NU32)((NU32)((NU32)((NU32)(((NU32) 40)) * (NU32)(sp))) + (NU32)(((NU32) 40)))) <= (NU32)(upper)); { if (!!((upInside == wpInside))) goto LA29_; nimZeroMem((void*)(&result), sizeof(tyObject_FloatingDecimal32__AcbjRnPoMG8Pkr9bMFAoLNg)); result.digits = (NU32)((NU32)(sp) + (NU32)(((NU32) (wpInside)))); result.exponent = (NI32)(k + ((NI32) 1)); goto BeforeRet_; } LA29_: ; } LA25_: ; uInside = ((NU32)(lower) <= (NU32)((NU32)((NU32)(((NU32) 4)) * (NU32)(s)))); wInside = ((NU32)((NU32)((NU32)((NU32)((NU32)(((NU32) 4)) * (NU32)(s))) + (NU32)(((NU32) 4)))) <= (NU32)(upper)); { if (!!((uInside == wInside))) goto LA33_; nimZeroMem((void*)(&result), sizeof(tyObject_FloatingDecimal32__AcbjRnPoMG8Pkr9bMFAoLNg)); result.digits = (NU32)((NU32)(s) + (NU32)(((NU32) (wInside)))); result.exponent = k; goto BeforeRet_; } LA33_: ; mid = (NU32)((NU32)((NU32)((NU32)(((NU32) 4)) * (NU32)(s))) + (NU32)(((NU32) 2))); T35_ = (NIM_BOOL)0; T35_ = ((NU32)(mid) < (NU32)(vb)); if (T35_) goto LA36_; T37_ = (NIM_BOOL)0; T37_ = (vb == mid); if (!(T37_)) goto LA38_; T37_ = !(((NU32)(s & ((NU32) 1)) == ((NU32) 0))); LA38_: ; T35_ = T37_; LA36_: ; roundUp = T35_; nimZeroMem((void*)(&result), sizeof(tyObject_FloatingDecimal32__AcbjRnPoMG8Pkr9bMFAoLNg)); result.digits = (NU32)((NU32)(s) + (NU32)(((NU32) (roundUp)))); result.exponent = k; goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NI32, decimalLength__systemZschubfach_277)(NU32 v) { NI32 result; { result = (NI32)0; { if (!((NU32)(((NU) 100000000)) <= (NU32)(((NU) (v))))) goto LA3_; result = ((NI32) 9); goto BeforeRet_; } LA3_: ; { if (!((NU32)(((NU) 10000000)) <= (NU32)(((NU) (v))))) goto LA7_; result = ((NI32) 8); goto BeforeRet_; } LA7_: ; { if (!((NU32)(((NU) 1000000)) <= (NU32)(((NU) (v))))) goto LA11_; result = ((NI32) 7); goto BeforeRet_; } LA11_: ; { if (!((NU32)(((NU) 100000)) <= (NU32)(((NU) (v))))) goto LA15_; result = ((NI32) 6); goto BeforeRet_; } LA15_: ; { if (!((NU32)(((NU) 10000)) <= (NU32)(((NU) (v))))) goto LA19_; result = ((NI32) 5); goto BeforeRet_; } LA19_: ; { if (!((NU32)(((NU) 1000)) <= (NU32)(((NU) (v))))) goto LA23_; result = ((NI32) 4); goto BeforeRet_; } LA23_: ; { if (!((NU32)(((NU) 100)) <= (NU32)(((NU) (v))))) goto LA27_; result = ((NI32) 3); goto BeforeRet_; } LA27_: ; { if (!((NU32)(((NU) 10)) <= (NU32)(((NU) (v))))) goto LA31_; result = ((NI32) 2); goto BeforeRet_; } LA31_: ; result = ((NI32) 1); goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NI32, printDecimalDigitsBackwards__systemZschubfach_206)(NIM_CHAR* buf, NI bufLen_0, NI pos, NU32 output) { NI32 result; NU32 output_2; NI pos_2; NI32 tz; NI32 nd; { result = (NI32)0; output_2 = output; pos_2 = pos; tz = ((NI32) 0); nd = ((NI32) 0); { NU32 q; NU32 r; if (!((NU32)(((NU32) 10000)) <= (NU32)(output_2))) goto LA3_; q = (NU32)((NU32)(output_2) / (NU32)(((NU32) 10000))); r = (NU32)((NU32)(output_2) % (NU32)(((NU32) 10000))); output_2 = q; pos_2 -= ((NI) 4); { NU32 rH; NU32 rL; NU32 T9_; NI32 T15_; NI T16_; if (!!((r == ((NU32) 0)))) goto LA7_; rH = (NU32)((NU32)(r) / (NU32)(((NU32) 100))); rL = (NU32)((NU32)(r) % (NU32)(((NU32) 100))); utoa2Digits__stdZprivateZdigitsutils_21(buf, bufLen_0, pos_2, rH); utoa2Digits__stdZprivateZdigitsutils_21(buf, bufLen_0, (NI)(pos_2 + ((NI) 2)), rL); T9_ = (NU32)0; { if (!(rL == ((NU32) 0))) goto LA12_; T9_ = rH; } goto LA10_; LA12_: ; { T9_ = rL; } LA10_: ; T15_ = (NI32)0; T15_ = trailingZeros2Digits__stdZprivateZdigitsutils_34(T9_); T16_ = (NI)0; { if (!(rL == ((NU32) 0))) goto LA19_; T16_ = ((NI) 2); } goto LA17_; LA19_: ; { T16_ = ((NI) 0); } LA17_: ; tz = (NI32)(T15_ + ((NI32) (T16_))); } goto LA5_; LA7_: ; { tz = ((NI32) 4); } LA5_: ; nd = ((NI32) 4); } LA3_: ; { NU32 q_2; NU32 r_2; if (!((NU32)(((NU32) 100)) <= (NU32)(output_2))) goto LA25_; q_2 = (NU32)((NU32)(output_2) / (NU32)(((NU32) 100))); r_2 = (NU32)((NU32)(output_2) % (NU32)(((NU32) 100))); output_2 = q_2; pos_2 -= ((NI) 2); utoa2Digits__stdZprivateZdigitsutils_21(buf, bufLen_0, pos_2, r_2); { NI32 T31_; if (!(tz == nd)) goto LA29_; T31_ = (NI32)0; T31_ = trailingZeros2Digits__stdZprivateZdigitsutils_34(r_2); tz += ((NI) (T31_)); } LA29_: ; nd += ((NI) 2); { NU32 q2; NU32 r2; if (!((NU32)(((NU32) 100)) <= (NU32)(output_2))) goto LA34_; q2 = (NU32)((NU32)(output_2) / (NU32)(((NU32) 100))); r2 = (NU32)((NU32)(output_2) % (NU32)(((NU32) 100))); output_2 = q2; pos_2 -= ((NI) 2); utoa2Digits__stdZprivateZdigitsutils_21(buf, bufLen_0, pos_2, r2); { NI32 T40_; if (!(tz == nd)) goto LA38_; T40_ = (NI32)0; T40_ = trailingZeros2Digits__stdZprivateZdigitsutils_34(r2); tz += ((NI) (T40_)); } LA38_: ; nd += ((NI) 2); } LA34_: ; } LA25_: ; { NU32 q_3; if (!((NU32)(((NU32) 10)) <= (NU32)(output_2))) goto LA43_; q_3 = output_2; pos_2 -= ((NI) 2); utoa2Digits__stdZprivateZdigitsutils_21(buf, bufLen_0, pos_2, q_3); { NI32 T49_; if (!(tz == nd)) goto LA47_; T49_ = (NI32)0; T49_ = trailingZeros2Digits__stdZprivateZdigitsutils_34(q_3); tz += ((NI) (T49_)); } LA47_: ; } goto LA41_; LA43_: ; { NU32 q_4; q_4 = output_2; pos_2 -= ((NI) 1); buf[pos_2] = ((NIM_CHAR) (((NI) ((NU32)((NU32)(((NU32) 48)) + (NU32)(q_4)))))); } LA41_: ; result = tz; goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NI, formatDigits__systemZschubfach_286)(NIM_CHAR* buffer, NI bufferLen_0, NI pos, NU32 digits, NI32 decimalExponent, NIM_BOOL forceTrailingDotZero) { NI result; NI pos_2; NI32 numDigits; NI32 decimalPoint; NIM_BOOL useFixed; NIM_BOOL T1_; NI32 decimalDigitsPosition; NI digitsEnd; NI32 tz; { result = (NI)0; pos_2 = pos; numDigits = decimalLength__systemZschubfach_277(digits); decimalPoint = (NI32)(numDigits + decimalExponent); T1_ = (NIM_BOOL)0; T1_ = (((NI32) -4) <= decimalPoint); if (!(T1_)) goto LA2_; T1_ = (decimalPoint <= ((NI32) 9)); LA2_: ; useFixed = T1_; { NI i; NI i_2; i = (NI)0; i_2 = ((NI) 0); { while (1) { if (!(i_2 < ((NI) 32))) goto LA5; i = i_2; buffer[(NI)(pos_2 + i)] = 48; i_2 += ((NI) 1); } LA5: ; } } decimalDigitsPosition = (NI32)0; { if (!useFixed) goto LA8_; { if (!(decimalPoint <= ((NI32) 0))) goto LA12_; decimalDigitsPosition = (NI32)(((NI32) 2) - decimalPoint); } goto LA10_; LA12_: ; { decimalDigitsPosition = ((NI32) 0); } LA10_: ; } goto LA6_; LA8_: ; { decimalDigitsPosition = ((NI32) 1); } LA6_: ; digitsEnd = (NI)((NI)(pos_2 + ((NI) (decimalDigitsPosition))) + ((NI) (numDigits))); tz = printDecimalDigitsBackwards__systemZschubfach_206(buffer, bufferLen_0, digitsEnd, digits); digitsEnd -= ((NI) (tz)); numDigits -= ((NI) (tz)); { if (!useFixed) goto LA18_; { if (!(decimalPoint <= ((NI32) 0))) goto LA22_; buffer[(NI)(pos_2 + ((NI) 1))] = 46; pos_2 = digitsEnd; } goto LA20_; LA22_: ; { if (!(decimalPoint < numDigits)) goto LA25_; { NI i_3; NI res; i_3 = (NI)0; res = ((NI) 7); { while (1) { if (!(((NI) 0) <= res)) goto LA29; i_3 = res; buffer[(NI)((NI)(i_3 + ((NI) (decimalPoint))) + ((NI) 1))] = buffer[(NI)(i_3 + ((NI) (decimalPoint)))]; res -= ((NI) 1); } LA29: ; } } buffer[(NI)(pos_2 + ((NI) (decimalPoint)))] = 46; pos_2 = (NI)(digitsEnd + ((NI) 1)); } goto LA20_; LA25_: ; { pos_2 += ((NI) (decimalPoint)); { if (!forceTrailingDotZero) goto LA33_; buffer[pos_2] = 46; buffer[(NI)(pos_2 + ((NI) 1))] = 48; pos_2 += ((NI) 2); } LA33_: ; } LA20_: ; } goto LA16_; LA18_: ; { NI32 scientificExponent; NU32 k; NI32 T46_; buffer[pos_2] = buffer[(NI)(pos_2 + ((NI) 1))]; { if (!(numDigits == ((NI32) 1))) goto LA38_; pos_2 += ((NI) 1); } goto LA36_; LA38_: ; { buffer[(NI)(pos_2 + ((NI) 1))] = 46; pos_2 = digitsEnd; } LA36_: ; scientificExponent = (NI32)(decimalPoint - ((NI32) 1)); buffer[pos_2] = 101; { if (!(scientificExponent < ((NI32) 0))) goto LA43_; buffer[(NI)(pos_2 + ((NI) 1))] = 45; } goto LA41_; LA43_: ; { buffer[(NI)(pos_2 + ((NI) 1))] = 43; } LA41_: ; pos_2 += ((NI) 2); T46_ = (NI32)0; { if (!(scientificExponent < ((NI32) 0))) goto LA49_; T46_ = ((NI32)-(scientificExponent)); } goto LA47_; LA49_: ; { T46_ = scientificExponent; } LA47_: ; k = ((NU32) (T46_)); { if (!((NU32)(k) < (NU32)(((NU32) 10)))) goto LA54_; buffer[pos_2] = ((NIM_CHAR) (((NI) ((NU32)((NU32)(((NU32) 48)) + (NU32)(k)))))); pos_2 += ((NI) 1); } goto LA52_; LA54_: ; { utoa2Digits__stdZprivateZdigitsutils_21(buffer, bufferLen_0, pos_2, k); pos_2 += ((NI) 2); } LA52_: ; } LA16_: ; result = pos_2; goto BeforeRet_; }BeforeRet_: ; return result; } static N_INLINE(NI, float32ToChars__systemZschubfach_387)(NIM_CHAR* buffer, NI bufferLen_0, NF32 v, NIM_BOOL forceTrailingDotZero) { NI result; NU32 significand; tyObject_Single__d6NidTbsj2ZAh9ao1GJW9aXQ T1_; NU32 exponent; tyObject_Single__d6NidTbsj2ZAh9ao1GJW9aXQ T2_; NI pos; { result = (NI)0; T1_ = constructSingle__systemZschubfach_31(v); significand = physicalSignificand__systemZschubfach_34(T1_); T2_ = constructSingle__systemZschubfach_31(v); exponent = physicalExponent__systemZschubfach_37(T2_); pos = ((NI) 0); { tyObject_Single__d6NidTbsj2ZAh9ao1GJW9aXQ T7_; NI T8_; if (!!((exponent == ((NU32) 255)))) goto LA5_; buffer[pos] = 45; T7_ = constructSingle__systemZschubfach_31(v); T8_ = (NI)0; T8_ = signBit__systemZschubfach_56(T7_); pos += T8_; { NIM_BOOL T11_; tyObject_FloatingDecimal32__AcbjRnPoMG8Pkr9bMFAoLNg dec; T11_ = (NIM_BOOL)0; T11_ = !((exponent == ((NU32) 0))); if (T11_) goto LA12_; T11_ = !((significand == ((NU32) 0))); LA12_: ; if (!T11_) goto LA13_; dec = toDecimal32__systemZschubfach_142(significand, exponent); result = formatDigits__systemZschubfach_286(buffer, bufferLen_0, pos, dec.digits, dec.exponent, forceTrailingDotZero); goto BeforeRet_; } goto LA9_; LA13_: ; { NI T16_; buffer[pos] = 48; buffer[(NI)(pos + ((NI) 1))] = 46; buffer[(NI)(pos + ((NI) 2))] = 48; buffer[(NI)(pos + ((NI) 3))] = 32; T16_ = (NI)0; { if (!forceTrailingDotZero) goto LA19_; T16_ = ((NI) 3); } goto LA17_; LA19_: ; { T16_ = ((NI) 1); } LA17_: ; pos += T16_; result = pos; goto BeforeRet_; } LA9_: ; } LA5_: ; { tyObject_Single__d6NidTbsj2ZAh9ao1GJW9aXQ T26_; NI T27_; if (!(significand == ((NU32) 0))) goto LA24_; buffer[pos] = 45; T26_ = constructSingle__systemZschubfach_31(v); T27_ = (NI)0; T27_ = signBit__systemZschubfach_56(T26_); pos += T27_; buffer[pos] = 105; buffer[(NI)(pos + ((NI) 1))] = 110; buffer[(NI)(pos + ((NI) 2))] = 102; buffer[(NI)(pos + ((NI) 3))] = 32; result = (NI)(pos + ((NI) 3)); goto BeforeRet_; } goto LA22_; LA24_: ; { buffer[pos] = 110; buffer[(NI)(pos + ((NI) 1))] = 97; buffer[(NI)(pos + ((NI) 2))] = 110; buffer[(NI)(pos + ((NI) 3))] = 32; result = (NI)(pos + ((NI) 3)); goto BeforeRet_; } LA22_: ; }BeforeRet_: ; return result; } N_LIB_PRIVATE N_NIMCALL(NI, writeFloatToBufferRoundtrip__systemZformatfloat_44)(NIM_CHAR* buf, NF32 value) { NI result; result = (NI)0; result = float32ToChars__systemZschubfach_387(buf, 65, value, NIM_TRUE); buf[(result)- 0] = 0; return result; }