/* Generated by Nim Compiler v0.16.0 */ /* (c) 2017 Andreas Rumpf */ /* The generated code is subject to the original license. */ /* Compiled for: Linux, amd64, gcc */ /* Command for C compiler: gcc -c -w -I/afs/athena.mit.edu/software/nim-lang_v0.16.0/nim-0.16.0/lib -o /afs/athena.mit.edu/software/nim-lang_v0.16.0/nim-0.16.0/nimcache/stdlib_math.o /afs/athena.mit.edu/software/nim-lang_v0.16.0/nim-0.16.0/nimcache/stdlib_math.c */ #define NIM_INTBITS 64 #include "nimbase.h" #include #undef linux typedef NU8 Floatclass_pPga1yW9b8J9cwNnm9b1aPRnA; N_NIMCALL(NI, binom_TP1l1uTkkFkPa6yon2PyGg)(NI n0, NI k0); N_NIMCALL(NI, mulInt)(NI a0, NI b0); static N_INLINE(NI, subInt)(NI a0, NI b0); N_NOINLINE(void, raiseOverflow)(void); static N_INLINE(NI, addInt)(NI a0, NI b0); static N_INLINE(NI, divInt)(NI a0, NI b0); N_NOINLINE(void, raiseDivByZero)(void); static N_INLINE(void, nimFrame)(TFrame* s0); N_NOINLINE(void, stackoverflow_II46IjNZztN9bmbxUD8dt8g)(void); static N_INLINE(void, popFrame)(void); N_NIMCALL(NI, fac_07E8HBGS9a9a9amVjbwI9a9a7yg)(NI n0); N_NIMCALL(Floatclass_pPga1yW9b8J9cwNnm9b1aPRnA, classify_rfodLs2J9b87EDgWnWZoObA)(NF x0); N_NIMCALL(NIM_BOOL, ispoweroftwo_M0Db9b9cHxuUgw2ZF0P8utPg)(NI x0); N_NIMCALL(NI, nextpoweroftwo_gcitR3TEXHJ3GR9bmwIvtRA)(NI x0); N_NIMCALL(NI, countbits32_hJyETcwTUJpi9clvlrTbRyA)(NI32 n0); extern TFrame* frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw; static N_INLINE(NI, subInt)(NI a0, NI b0) { NI result0; { result0 = (NI)0; result0 = (NI)((NU64)(a0) - (NU64)(b0)); { NIM_BOOL LOC3; LOC3 = (NIM_BOOL)0; LOC3 = (((NI) 0) <= (NI)(result0 ^ a0)); if (LOC3) goto LA4; LOC3 = (((NI) 0) <= (NI)(result0 ^ (NI)((NU64) ~(b0)))); LA4: ; if (!LOC3) goto LA5; goto BeforeRet; } LA5: ; raiseOverflow(); }BeforeRet: ; return result0; } static N_INLINE(NI, addInt)(NI a0, NI b0) { NI result0; { result0 = (NI)0; result0 = (NI)((NU64)(a0) + (NU64)(b0)); { NIM_BOOL LOC3; LOC3 = (NIM_BOOL)0; LOC3 = (((NI) 0) <= (NI)(result0 ^ a0)); if (LOC3) goto LA4; LOC3 = (((NI) 0) <= (NI)(result0 ^ b0)); LA4: ; if (!LOC3) goto LA5; goto BeforeRet; } LA5: ; raiseOverflow(); }BeforeRet: ; return result0; } static N_INLINE(NI, divInt)(NI a0, NI b0) { NI result0; { result0 = (NI)0; { if (!(b0 == ((NI) 0))) goto LA3; raiseDivByZero(); } LA3: ; { NIM_BOOL LOC7; LOC7 = (NIM_BOOL)0; LOC7 = (a0 == ((NI) (IL64(-9223372036854775807) - IL64(1)))); if (!(LOC7)) goto LA8; LOC7 = (b0 == ((NI) -1)); LA8: ; if (!LOC7) goto LA9; raiseOverflow(); } LA9: ; result0 = (NI)(a0 / b0); goto BeforeRet; }BeforeRet: ; return result0; } static N_INLINE(void, nimFrame)(TFrame* s0) { NI LOC1; LOC1 = (NI)0; { if (!(frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw == NIM_NIL)) goto LA4; LOC1 = ((NI) 0); } goto LA2; LA4: ; { LOC1 = ((NI) ((NI16)((*frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth + ((NI16) 1)))); } LA2: ; (*s0).calldepth = ((NI16) (LOC1)); (*s0).prev = frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw; frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw = s0; { if (!((*s0).calldepth == ((NI16) 2000))) goto LA9; stackoverflow_II46IjNZztN9bmbxUD8dt8g(); } LA9: ; } static N_INLINE(void, popFrame)(void) { frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw = (*frameptr_HRfVMH3jYeBJz6Q6X9b6Ptw).prev; } N_NIMCALL(NI, binom_TP1l1uTkkFkPa6yon2PyGg)(NI n0, NI k0) { NI result0; nimfr("binom", "math.nim") { result0 = (NI)0; nimln(26, "math.nim"); { if (!(k0 <= ((NI) 0))) goto LA3; result0 = ((NI) 1); goto BeforeRet; } LA3: ; nimln(27, "math.nim"); { NI T_YqBQIdfvZX5pt75kDBsDLg_2; NI T_YqBQIdfvZX5pt75kDBsDLg_3; T_YqBQIdfvZX5pt75kDBsDLg_2 = mulInt(((NI) 2), k0); if (!(n0 < (NI)(T_YqBQIdfvZX5pt75kDBsDLg_2))) goto LA7; T_YqBQIdfvZX5pt75kDBsDLg_3 = subInt(n0, k0); result0 = binom_TP1l1uTkkFkPa6yon2PyGg(n0, (NI)(T_YqBQIdfvZX5pt75kDBsDLg_3)); goto BeforeRet; } LA7: ; nimln(28, "math.nim"); result0 = n0; { NI i_IdC71W62BiWL1uGmbEfnog; NI res_KMCA8wNTsTXDJDjePZ2Uxw; i_IdC71W62BiWL1uGmbEfnog = (NI)0; nimln(1908, "system.nim"); res_KMCA8wNTsTXDJDjePZ2Uxw = ((NI) 2); { nimln(1909, "system.nim"); while (1) { NI T_YqBQIdfvZX5pt75kDBsDLg_4; NI T_YqBQIdfvZX5pt75kDBsDLg_5; NI T_YqBQIdfvZX5pt75kDBsDLg_6; NI T_YqBQIdfvZX5pt75kDBsDLg_7; NI T_YqBQIdfvZX5pt75kDBsDLg_8; nimln(1908, "system.nim"); if (!(res_KMCA8wNTsTXDJDjePZ2Uxw <= k0)) goto LA11; nimln(1910, "system.nim"); i_IdC71W62BiWL1uGmbEfnog = res_KMCA8wNTsTXDJDjePZ2Uxw; nimln(30, "math.nim"); T_YqBQIdfvZX5pt75kDBsDLg_4 = addInt(n0, ((NI) 1)); T_YqBQIdfvZX5pt75kDBsDLg_5 = subInt((NI)(T_YqBQIdfvZX5pt75kDBsDLg_4), i_IdC71W62BiWL1uGmbEfnog); T_YqBQIdfvZX5pt75kDBsDLg_6 = mulInt(result0, (NI)(T_YqBQIdfvZX5pt75kDBsDLg_5)); T_YqBQIdfvZX5pt75kDBsDLg_7 = divInt((NI)(T_YqBQIdfvZX5pt75kDBsDLg_6), i_IdC71W62BiWL1uGmbEfnog); result0 = (NI)(T_YqBQIdfvZX5pt75kDBsDLg_7); nimln(1908, "system.nim"); T_YqBQIdfvZX5pt75kDBsDLg_8 = addInt(res_KMCA8wNTsTXDJDjePZ2Uxw, ((NI) 1)); res_KMCA8wNTsTXDJDjePZ2Uxw = (NI)(T_YqBQIdfvZX5pt75kDBsDLg_8); } LA11: ; } } }BeforeRet: ; popFrame(); return result0; } N_NIMCALL(NI, fac_07E8HBGS9a9a9amVjbwI9a9a7yg)(NI n0) { NI result0; nimfr("fac", "math.nim") result0 = (NI)0; nimln(34, "math.nim"); result0 = ((NI) 1); { NI i_F3RWyujhsglNDm3u7OjEJw; NI res_Giqe4aubNfJPrOXzCHEssw; i_F3RWyujhsglNDm3u7OjEJw = (NI)0; nimln(1908, "system.nim"); res_Giqe4aubNfJPrOXzCHEssw = ((NI) 2); { nimln(1909, "system.nim"); while (1) { NI T_YqBQIdfvZX5pt75kDBsDLg_9; NI T_YqBQIdfvZX5pt75kDBsDLg_10; nimln(1908, "system.nim"); if (!(res_Giqe4aubNfJPrOXzCHEssw <= n0)) goto LA3; nimln(1910, "system.nim"); i_F3RWyujhsglNDm3u7OjEJw = res_Giqe4aubNfJPrOXzCHEssw; nimln(36, "math.nim"); T_YqBQIdfvZX5pt75kDBsDLg_9 = mulInt(result0, i_F3RWyujhsglNDm3u7OjEJw); result0 = (NI)(T_YqBQIdfvZX5pt75kDBsDLg_9); nimln(1908, "system.nim"); T_YqBQIdfvZX5pt75kDBsDLg_10 = addInt(res_Giqe4aubNfJPrOXzCHEssw, ((NI) 1)); res_Giqe4aubNfJPrOXzCHEssw = (NI)(T_YqBQIdfvZX5pt75kDBsDLg_10); } LA3: ; } } popFrame(); return result0; } N_NIMCALL(Floatclass_pPga1yW9b8J9cwNnm9b1aPRnA, classify_rfodLs2J9b87EDgWnWZoObA)(NF x0) { Floatclass_pPga1yW9b8J9cwNnm9b1aPRnA result0; { result0 = (Floatclass_pPga1yW9b8J9cwNnm9b1aPRnA)0; { if (!(x0 == 0.0)) goto LA3; { if (!(((NF)(1.0000000000000000e+00) / (NF)(x0)) == INF)) goto LA7; result0 = ((Floatclass_pPga1yW9b8J9cwNnm9b1aPRnA) 2); goto BeforeRet; } goto LA5; LA7: ; { result0 = ((Floatclass_pPga1yW9b8J9cwNnm9b1aPRnA) 3); goto BeforeRet; } LA5: ; } LA3: ; { if (!(((NF)(x0) * (NF)(5.0000000000000000e-01)) == x0)) goto LA12; { if (!(0.0 < x0)) goto LA16; result0 = ((Floatclass_pPga1yW9b8J9cwNnm9b1aPRnA) 5); goto BeforeRet; } goto LA14; LA16: ; { result0 = ((Floatclass_pPga1yW9b8J9cwNnm9b1aPRnA) 6); goto BeforeRet; } LA14: ; } LA12: ; { if (!!((x0 == x0))) goto LA21; result0 = ((Floatclass_pPga1yW9b8J9cwNnm9b1aPRnA) 4); goto BeforeRet; } LA21: ; result0 = ((Floatclass_pPga1yW9b8J9cwNnm9b1aPRnA) 0); goto BeforeRet; }BeforeRet: ; return result0; } N_NIMCALL(NIM_BOOL, ispoweroftwo_M0Db9b9cHxuUgw2ZF0P8utPg)(NI x0) { NIM_BOOL result0; NIM_BOOL LOC1; { result0 = (NIM_BOOL)0; LOC1 = (NIM_BOOL)0; LOC1 = (((NI) 0) < x0); if (!(LOC1)) goto LA2; LOC1 = ((NI)(x0 & (NI)(x0 - ((NI) 1))) == ((NI) 0)); LA2: ; result0 = LOC1; goto BeforeRet; }BeforeRet: ; return result0; } N_NIMCALL(NI, nextpoweroftwo_gcitR3TEXHJ3GR9bmwIvtRA)(NI x0) { NI result0; result0 = (NI)0; result0 = (NI)(x0 - ((NI) 1)); result0 = (NI)(result0 | (NI)((NU64)(result0) >> (NU64)(((NI) 32)))); result0 = (NI)(result0 | (NI)((NU64)(result0) >> (NU64)(((NI) 16)))); result0 = (NI)(result0 | (NI)((NU64)(result0) >> (NU64)(((NI) 8)))); result0 = (NI)(result0 | (NI)((NU64)(result0) >> (NU64)(((NI) 4)))); result0 = (NI)(result0 | (NI)((NU64)(result0) >> (NU64)(((NI) 2)))); result0 = (NI)(result0 | (NI)((NU64)(result0) >> (NU64)(((NI) 1)))); result0 += ((NI) ((NI)(((NI) 1) + ((NI) ((x0 <= ((NI) 0))))))); return result0; } N_NIMCALL(NI, countbits32_hJyETcwTUJpi9clvlrTbRyA)(NI32 n0) { NI result0; NI32 v0; result0 = (NI)0; v0 = n0; v0 = (NI32)((NU32)(v0) - (NU32)((NI32)((NI32)((NU32)(v0) >> (NU32)(((NI32) 1))) & ((NI32) 1431655765)))); v0 = (NI32)((NU32)((NI32)(v0 & ((NI32) 858993459))) + (NU32)((NI32)((NI32)((NU32)(v0) >> (NU32)(((NI32) 2))) & ((NI32) 858993459)))); result0 = ((NI) ((NI32)((NU32)((NI32)((NU32)((NI32)((NI32)((NU32)(v0) + (NU32)((NI32)((NU32)(v0) >> (NU32)(((NI32) 4))))) & ((NI32) 252645135))) * (NU32)(((NI32) 16843009)))) >> (NU32)(((NI32) 24))))); return result0; } N_NIMCALL(NF, round_FL9bhksfuQsfLDCxRHuknsg)(NF x0, NI places0) { NF result0; result0 = (NF)0; { if (!(places0 == ((NI) 0))) goto LA3; result0 = round(x0); } goto LA1; LA3: ; { NF mult0; NF LOC6; mult0 = pow(1.0000000000000000e+01, ((NF) (places0))); LOC6 = (NF)0; LOC6 = round(((NF)(x0) * (NF)(mult0))); result0 = ((NF)(LOC6) / (NF)(mult0)); } LA1: ; return result0; } NIM_EXTERNC N_NOINLINE(void, stdlib_mathInit000)(void) { nimfr("math", "math.nim") popFrame(); } NIM_EXTERNC N_NOINLINE(void, stdlib_mathDatInit000)(void) { }