// File: /workspace/github_c_makefile_star2_O2/janet-lang[P]janet/src/core/math.c
// Function: janet_lib_math
void janet_lib_math(JanetTable *env) {
    JanetRegExt math_cfuns[] = {
        JANET_CORE_REG("not", janet_not),
        JANET_CORE_REG("math/random", janet_rand),
        JANET_CORE_REG("math/seedrandom", janet_srand),
        JANET_CORE_REG("math/cos", janet_cos),
        JANET_CORE_REG("math/sin", janet_sin),
        JANET_CORE_REG("math/tan", janet_tan),
        JANET_CORE_REG("math/acos", janet_acos),
        JANET_CORE_REG("math/asin", janet_asin),
        JANET_CORE_REG("math/atan", janet_atan),
        JANET_CORE_REG("math/exp", janet_exp),
        JANET_CORE_REG("math/log", janet_log),
        JANET_CORE_REG("math/log10", janet_log10),
        JANET_CORE_REG("math/log2", janet_log2),
        JANET_CORE_REG("math/sqrt", janet_sqrt),
        JANET_CORE_REG("math/cbrt", janet_cbrt),
        JANET_CORE_REG("math/floor", janet_floor),
        JANET_CORE_REG("math/ceil", janet_ceil),
        JANET_CORE_REG("math/pow", janet_pow),
        JANET_CORE_REG("math/abs", janet_fabs),
        JANET_CORE_REG("math/sinh", janet_sinh),
        JANET_CORE_REG("math/cosh", janet_cosh),
        JANET_CORE_REG("math/tanh", janet_tanh),
        JANET_CORE_REG("math/atanh", janet_atanh),
        JANET_CORE_REG("math/asinh", janet_asinh),
        JANET_CORE_REG("math/acosh", janet_acosh),
        JANET_CORE_REG("math/atan2", janet_atan2),
        JANET_CORE_REG("math/rng", cfun_rng_make),
        JANET_CORE_REG("math/rng-uniform", cfun_rng_uniform),
        JANET_CORE_REG("math/rng-int", cfun_rng_int),
        JANET_CORE_REG("math/rng-buffer", cfun_rng_buffer),
        JANET_CORE_REG("math/hypot", janet_hypot),
        JANET_CORE_REG("math/exp2", janet_exp2),
        JANET_CORE_REG("math/log1p", janet_log1p),
        JANET_CORE_REG("math/gamma", janet_tgamma),
        JANET_CORE_REG("math/log-gamma", janet_lgamma),
        JANET_CORE_REG("math/erfc", janet_erfc),
        JANET_CORE_REG("math/erf", janet_erf),
        JANET_CORE_REG("math/expm1", janet_expm1),
        JANET_CORE_REG("math/trunc", janet_trunc),
        JANET_CORE_REG("math/round", janet_round),
        JANET_CORE_REG("math/next", janet_nextafter),
        JANET_CORE_REG("math/gcd", janet_cfun_gcd),
        JANET_CORE_REG("math/lcm", janet_cfun_lcm),
        JANET_CORE_REG("math/frexp", janet_cfun_frexp),
        JANET_CORE_REG("math/ldexp", janet_cfun_ldexp),
        JANET_REG_END
    };
    janet_core_cfuns_ext(env, NULL, math_cfuns);
    janet_register_abstract_type(&janet_rng_type);
#ifdef JANET_BOOTSTRAP
    JANET_CORE_DEF(env, "math/pi", janet_wrap_number(3.1415926535897931),
                   "The value pi.");
    JANET_CORE_DEF(env, "math/e", janet_wrap_number(2.7182818284590451),
                   "The base of the natural log.");
    JANET_CORE_DEF(env, "math/inf", janet_wrap_number(INFINITY),
                   "The number representing positive infinity");
    JANET_CORE_DEF(env, "math/-inf", janet_wrap_number(-INFINITY),
                   "The number representing negative infinity");
    JANET_CORE_DEF(env, "math/int32-min", janet_wrap_number(INT32_MIN),
                   "The minimum contiguous integer representable by a 32 bit signed integer");
    JANET_CORE_DEF(env, "math/int32-max", janet_wrap_number(INT32_MAX),
                   "The maximum contiguous integer representable by a 32 bit signed integer");
    JANET_CORE_DEF(env, "math/int-min", janet_wrap_number(JANET_INTMIN_DOUBLE),
                   "The minimum contiguous integer representable by a double (2^53)");
    JANET_CORE_DEF(env, "math/int-max", janet_wrap_number(JANET_INTMAX_DOUBLE),
                   "The maximum contiguous integer representable by a double (-(2^53))");
#ifdef NAN
    JANET_CORE_DEF(env, "math/nan", janet_wrap_number(NAN), "Not a number (IEEE-754 NaN)");
#else
    JANET_CORE_DEF(env, "math/nan", janet_wrap_number(0.0 / 0.0), "Not a number (IEEE-754 NaN)");
#endif
#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x730, %rsp            # imm = 0x730
movq %rdi, %rbx
leaq 0x4be21(%rip), %rsi     # 0x7cb10
leaq -0x740(%rbp), %r14
movl $0x730, %edx            # imm = 0x730
movq %r14, %rdi
callq 0x12670
movq %rbx, %rdi
xorl %esi, %esi
movq %r14, %rdx
callq 0x452db
leaq 0x4bd89(%rip), %rdi     # 0x7caa0
callq 0x455ed
movsd 0x2b334(%rip), %xmm0    # 0x5c058
callq 0x4b471
leaq 0x2b531(%rip), %rsi     # 0x5c261
leaq 0x2b532(%rip), %rcx     # 0x5c269
leaq 0x2b33b(%rip), %r14     # 0x5c079
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1aa, %r9d            # imm = 0x1AA
callq 0x44d5e
movsd 0x2b306(%rip), %xmm0    # 0x5c060
callq 0x4b471
leaq 0x2b511(%rip), %rsi     # 0x5c277
leaq 0x2b511(%rip), %rcx     # 0x5c27e
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1ac, %r9d            # imm = 0x1AC
callq 0x44d5e
movsd 0x24217(%rip), %xmm0    # 0x54fa0
callq 0x4b471
leaq 0x2b506(%rip), %rsi     # 0x5c29b
leaq 0x2b508(%rip), %rcx     # 0x5c2a4
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1ae, %r9d            # imm = 0x1AE
callq 0x44d5e
movsd 0x2b2b0(%rip), %xmm0    # 0x5c068
callq 0x4b471
leaq 0x2b50a(%rip), %rsi     # 0x5c2ce
leaq 0x2b50d(%rip), %rcx     # 0x5c2d8
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1b0, %r9d            # imm = 0x1B0
callq 0x44d5e
movsd 0x1d691(%rip), %xmm0    # 0x4e478
callq 0x4b471
leaq 0x2b50f(%rip), %rsi     # 0x5c302
leaq 0x2b517(%rip), %rcx     # 0x5c311
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1b2, %r9d            # imm = 0x1B2
callq 0x44d5e
movsd 0x1d66a(%rip), %xmm0    # 0x4e480
callq 0x4b471
leaq 0x2b537(%rip), %rsi     # 0x5c359
leaq 0x2b53f(%rip), %rcx     # 0x5c368
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1b4, %r9d            # imm = 0x1B4
callq 0x44d5e
movsd 0x28f73(%rip), %xmm0    # 0x59db8
callq 0x4b471
leaq 0x2b55f(%rip), %rsi     # 0x5c3b0
leaq 0x2b565(%rip), %rcx     # 0x5c3bd
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1b6, %r9d            # imm = 0x1B6
callq 0x44d5e
movsd 0x28f3c(%rip), %xmm0    # 0x59db0
callq 0x4b471
leaq 0x2b57d(%rip), %rsi     # 0x5c3fd
leaq 0x2b583(%rip), %rcx     # 0x5c40a
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1b8, %r9d            # imm = 0x1B8
callq 0x44d5e
movsd 0x2b1ad(%rip), %xmm0    # 0x5c050
callq 0x4b471
leaq 0x2b59e(%rip), %rsi     # 0x5c44d
leaq 0x2b5a0(%rip), %rcx     # 0x5c456
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1ba, %r9d            # imm = 0x1BA
callq 0x44d5e
addq $0x730, %rsp            # imm = 0x730
popq %rbx
popq %r14
popq %rbp
retq
nop