// File: /workspace/github_c_makefile_star2_O3/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 0x4e065(%rip), %rsi     # 0x81b10
leaq -0x740(%rbp), %r14
movl $0x730, %edx            # imm = 0x730
movq %r14, %rdi
callq 0x12670
movq %rbx, %rdi
xorl %esi, %esi
movq %r14, %rdx
callq 0x48d77
leaq 0x4dfcd(%rip), %rdi     # 0x81aa0
callq 0x49050
movsd 0x2c568(%rip), %xmm0    # 0x60048
callq 0x4ee44
leaq 0x2c765(%rip), %rsi     # 0x60251
leaq 0x2c766(%rip), %rcx     # 0x60259
leaq 0x2c56f(%rip), %r14     # 0x60069
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1aa, %r9d            # imm = 0x1AA
callq 0x487f1
movsd 0x2c53a(%rip), %xmm0    # 0x60050
callq 0x4ee44
leaq 0x2c745(%rip), %rsi     # 0x60267
leaq 0x2c745(%rip), %rcx     # 0x6026e
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1ac, %r9d            # imm = 0x1AC
callq 0x487f1
movsd 0x2545b(%rip), %xmm0    # 0x58fa0
callq 0x4ee44
leaq 0x2c73a(%rip), %rsi     # 0x6028b
leaq 0x2c73c(%rip), %rcx     # 0x60294
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1ae, %r9d            # imm = 0x1AE
callq 0x487f1
movsd 0x2c4e4(%rip), %xmm0    # 0x60058
callq 0x4ee44
leaq 0x2c73e(%rip), %rsi     # 0x602be
leaq 0x2c741(%rip), %rcx     # 0x602c8
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1b0, %r9d            # imm = 0x1B0
callq 0x487f1
movsd 0x1e8d5(%rip), %xmm0    # 0x52478
callq 0x4ee44
leaq 0x2c743(%rip), %rsi     # 0x602f2
leaq 0x2c74b(%rip), %rcx     # 0x60301
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1b2, %r9d            # imm = 0x1B2
callq 0x487f1
movsd 0x1e8ae(%rip), %xmm0    # 0x52480
callq 0x4ee44
leaq 0x2c76b(%rip), %rsi     # 0x60349
leaq 0x2c773(%rip), %rcx     # 0x60358
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1b4, %r9d            # imm = 0x1B4
callq 0x487f1
movsd 0x2a1b7(%rip), %xmm0    # 0x5ddb8
callq 0x4ee44
leaq 0x2c793(%rip), %rsi     # 0x603a0
leaq 0x2c799(%rip), %rcx     # 0x603ad
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1b6, %r9d            # imm = 0x1B6
callq 0x487f1
movsd 0x2a180(%rip), %xmm0    # 0x5ddb0
callq 0x4ee44
leaq 0x2c7b1(%rip), %rsi     # 0x603ed
leaq 0x2c7b7(%rip), %rcx     # 0x603fa
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1b8, %r9d            # imm = 0x1B8
callq 0x487f1
movsd 0x2c3e1(%rip), %xmm0    # 0x60040
callq 0x4ee44
leaq 0x2c7d2(%rip), %rsi     # 0x6043d
leaq 0x2c7d4(%rip), %rcx     # 0x60446
movq %rbx, %rdi
movq %rax, %rdx
movq %r14, %r8
movl $0x1ba, %r9d            # imm = 0x1BA
callq 0x487f1
addq $0x730, %rsp            # imm = 0x730
popq %rbx
popq %r14
popq %rbp
retq
nop