#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Hyperbolic arcsine";

double f_if(float x) {
        float r11058 = x;
        float r11059 = r11058 * r11058;
        float r11060 = 1.0f;
        float r11061 = r11059 + r11060;
        float r11062 = sqrt(r11061);
        float r11063 = r11058 + r11062;
        float r11064 = log(r11063);
        return r11064;
}

double f_id(double x) {
        double r11065 = x;
        double r11066 = r11065 * r11065;
        double r11067 = 1.0;
        double r11068 = r11066 + r11067;
        double r11069 = sqrt(r11068);
        double r11070 = r11065 + r11069;
        double r11071 = log(r11070);
        return r11071;
}


double f_of(float x) {
        float r11072 = x;
        float r11073 = -1.0508372426442374f;
        bool r11074 = r11072 <= r11073;
        float r11075 = 0.125f;
        float r11076 = r11075 / r11072;
        float r11077 = r11072 * r11072;
        float r11078 = r11076 / r11077;
        float r11079 = 0.5f;
        float r11080 = r11079 / r11072;
        float r11081 = r11078 - r11080;
        float r11082 = 0.0625f;
        float r11083 = 5.0f;
        float r11084 = pow(r11072, r11083);
        float r11085 = r11082 / r11084;
        float r11086 = r11081 - r11085;
        float r11087 = cbrt(r11086);
        float r11088 = r11087 * r11087;
        float r11089 = r11087 * r11088;
        float r11090 = log(r11089);
        float r11091 = 0.9670372196853471f;
        bool r11092 = r11072 <= r11091;
        float r11093 = 0.075f;
        float r11094 = r11084 * r11093;
        float r11095 = r11094 + r11072;
        float r11096 = 0.16666666666666666f;
        float r11097 = 3.0f;
        float r11098 = pow(r11072, r11097);
        float r11099 = r11096 * r11098;
        float r11100 = r11095 - r11099;
        float r11101 = r11072 + r11080;
        float r11102 = r11101 - r11078;
        float r11103 = r11072 + r11102;
        float r11104 = log(r11103);
        float r11105 = r11092 ? r11100 : r11104;
        float r11106 = r11074 ? r11090 : r11105;
        return r11106;
}

double f_od(double x) {
        double r11107 = x;
        double r11108 = -1.0508372426442374;
        bool r11109 = r11107 <= r11108;
        double r11110 = 0.125;
        double r11111 = r11110 / r11107;
        double r11112 = r11107 * r11107;
        double r11113 = r11111 / r11112;
        double r11114 = 0.5;
        double r11115 = r11114 / r11107;
        double r11116 = r11113 - r11115;
        double r11117 = 0.0625;
        double r11118 = 5.0;
        double r11119 = pow(r11107, r11118);
        double r11120 = r11117 / r11119;
        double r11121 = r11116 - r11120;
        double r11122 = cbrt(r11121);
        double r11123 = r11122 * r11122;
        double r11124 = r11122 * r11123;
        double r11125 = log(r11124);
        double r11126 = 0.9670372196853471;
        bool r11127 = r11107 <= r11126;
        double r11128 = 0.075;
        double r11129 = r11119 * r11128;
        double r11130 = r11129 + r11107;
        double r11131 = 0.16666666666666666;
        double r11132 = 3.0;
        double r11133 = pow(r11107, r11132);
        double r11134 = r11131 * r11133;
        double r11135 = r11130 - r11134;
        double r11136 = r11107 + r11115;
        double r11137 = r11136 - r11113;
        double r11138 = r11107 + r11137;
        double r11139 = log(r11138);
        double r11140 = r11127 ? r11135 : r11139;
        double r11141 = r11109 ? r11125 : r11140;
        return r11141;
}

void mpfr_fmod2(mpfr_t r, mpfr_t n, mpfr_t d, mpfr_rnd_t rmd) {
        mpfr_fmod(r, n, d, rmd);
        if (mpfr_cmp_ui(r, 0) < 0) mpfr_add(r, r, d, rmd);
}


static mpfr_t r11142, r11143, r11144, r11145, r11146, r11147, r11148;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11142);
        mpfr_init(r11143);
        mpfr_init_set_str(r11144, "1", 10, MPFR_RNDN);
        mpfr_init(r11145);
        mpfr_init(r11146);
        mpfr_init(r11147);
        mpfr_init(r11148);
}

double f_im(double x) {
        mpfr_set_d(r11142, x, MPFR_RNDN);
        mpfr_mul(r11143, r11142, r11142, MPFR_RNDN);
        ;
        mpfr_add(r11145, r11143, r11144, MPFR_RNDN);
        mpfr_sqrt(r11146, r11145, MPFR_RNDN);
        mpfr_add(r11147, r11142, r11146, MPFR_RNDN);
        mpfr_log(r11148, r11147, MPFR_RNDN);
        return mpfr_get_d(r11148, MPFR_RNDN);
}

static mpfr_t r11149, r11150, r11151, r11152, r11153, r11154, r11155, r11156, r11157, r11158, r11159, r11160, r11161, r11162, r11163, r11164, r11165, r11166, r11167, r11168, r11169, r11170, r11171, r11172, r11173, r11174, r11175, r11176, r11177, r11178, r11179, r11180, r11181, r11182, r11183;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11149);
        mpfr_init_set_str(r11150, "-1.0508372426442374", 10, MPFR_RNDN);
        mpfr_init(r11151);
        mpfr_init_set_str(r11152, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11153);
        mpfr_init(r11154);
        mpfr_init(r11155);
        mpfr_init_set_str(r11156, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11157);
        mpfr_init(r11158);
        mpfr_init_set_str(r11159, "1/16", 10, MPFR_RNDN);
        mpfr_init_set_str(r11160, "5", 10, MPFR_RNDN);
        mpfr_init(r11161);
        mpfr_init(r11162);
        mpfr_init(r11163);
        mpfr_init(r11164);
        mpfr_init(r11165);
        mpfr_init(r11166);
        mpfr_init(r11167);
        mpfr_init_set_str(r11168, "0.9670372196853471", 10, MPFR_RNDN);
        mpfr_init(r11169);
        mpfr_init_set_str(r11170, "3/40", 10, MPFR_RNDN);
        mpfr_init(r11171);
        mpfr_init(r11172);
        mpfr_init_set_str(r11173, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r11174, "3", 10, MPFR_RNDN);
        mpfr_init(r11175);
        mpfr_init(r11176);
        mpfr_init(r11177);
        mpfr_init(r11178);
        mpfr_init(r11179);
        mpfr_init(r11180);
        mpfr_init(r11181);
        mpfr_init(r11182);
        mpfr_init(r11183);
}

double f_fm(double x) {
        mpfr_set_d(r11149, x, MPFR_RNDN);
        ;
        mpfr_set_si(r11151, mpfr_cmp(r11149, r11150) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11153, r11152, r11149, MPFR_RNDN);
        mpfr_mul(r11154, r11149, r11149, MPFR_RNDN);
        mpfr_div(r11155, r11153, r11154, MPFR_RNDN);
        ;
        mpfr_div(r11157, r11156, r11149, MPFR_RNDN);
        mpfr_sub(r11158, r11155, r11157, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11161, r11149, r11160, MPFR_RNDN);
        mpfr_div(r11162, r11159, r11161, MPFR_RNDN);
        mpfr_sub(r11163, r11158, r11162, MPFR_RNDN);
        mpfr_cbrt(r11164, r11163, MPFR_RNDN);
        mpfr_mul(r11165, r11164, r11164, MPFR_RNDN);
        mpfr_mul(r11166, r11164, r11165, MPFR_RNDN);
        mpfr_log(r11167, r11166, MPFR_RNDN);
        ;
        mpfr_set_si(r11169, mpfr_cmp(r11149, r11168) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r11171, r11161, r11170, MPFR_RNDN);
        mpfr_add(r11172, r11171, r11149, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11175, r11149, r11174, MPFR_RNDN);
        mpfr_mul(r11176, r11173, r11175, MPFR_RNDN);
        mpfr_sub(r11177, r11172, r11176, MPFR_RNDN);
        mpfr_add(r11178, r11149, r11157, MPFR_RNDN);
        mpfr_sub(r11179, r11178, r11155, MPFR_RNDN);
        mpfr_add(r11180, r11149, r11179, MPFR_RNDN);
        mpfr_log(r11181, r11180, MPFR_RNDN);
        if (mpfr_get_si(r11169, MPFR_RNDN)) { mpfr_set(r11182, r11177, MPFR_RNDN); } else { mpfr_set(r11182, r11181, MPFR_RNDN); };
        if (mpfr_get_si(r11151, MPFR_RNDN)) { mpfr_set(r11183, r11167, MPFR_RNDN); } else { mpfr_set(r11183, r11182, MPFR_RNDN); };
        return mpfr_get_d(r11183, MPFR_RNDN);
}

static mpfr_t r11184, r11185, r11186, r11187, r11188, r11189, r11190, r11191, r11192, r11193, r11194, r11195, r11196, r11197, r11198, r11199, r11200, r11201, r11202, r11203, r11204, r11205, r11206, r11207, r11208, r11209, r11210, r11211, r11212, r11213, r11214, r11215, r11216, r11217, r11218;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11184);
        mpfr_init_set_str(r11185, "-1.0508372426442374", 10, MPFR_RNDN);
        mpfr_init(r11186);
        mpfr_init_set_str(r11187, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11188);
        mpfr_init(r11189);
        mpfr_init(r11190);
        mpfr_init_set_str(r11191, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11192);
        mpfr_init(r11193);
        mpfr_init_set_str(r11194, "1/16", 10, MPFR_RNDN);
        mpfr_init_set_str(r11195, "5", 10, MPFR_RNDN);
        mpfr_init(r11196);
        mpfr_init(r11197);
        mpfr_init(r11198);
        mpfr_init(r11199);
        mpfr_init(r11200);
        mpfr_init(r11201);
        mpfr_init(r11202);
        mpfr_init_set_str(r11203, "0.9670372196853471", 10, MPFR_RNDN);
        mpfr_init(r11204);
        mpfr_init_set_str(r11205, "3/40", 10, MPFR_RNDN);
        mpfr_init(r11206);
        mpfr_init(r11207);
        mpfr_init_set_str(r11208, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r11209, "3", 10, MPFR_RNDN);
        mpfr_init(r11210);
        mpfr_init(r11211);
        mpfr_init(r11212);
        mpfr_init(r11213);
        mpfr_init(r11214);
        mpfr_init(r11215);
        mpfr_init(r11216);
        mpfr_init(r11217);
        mpfr_init(r11218);
}

double f_dm(double x) {
        mpfr_set_d(r11184, x, MPFR_RNDN);
        ;
        mpfr_set_si(r11186, mpfr_cmp(r11184, r11185) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11188, r11187, r11184, MPFR_RNDN);
        mpfr_mul(r11189, r11184, r11184, MPFR_RNDN);
        mpfr_div(r11190, r11188, r11189, MPFR_RNDN);
        ;
        mpfr_div(r11192, r11191, r11184, MPFR_RNDN);
        mpfr_sub(r11193, r11190, r11192, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11196, r11184, r11195, MPFR_RNDN);
        mpfr_div(r11197, r11194, r11196, MPFR_RNDN);
        mpfr_sub(r11198, r11193, r11197, MPFR_RNDN);
        mpfr_cbrt(r11199, r11198, MPFR_RNDN);
        mpfr_mul(r11200, r11199, r11199, MPFR_RNDN);
        mpfr_mul(r11201, r11199, r11200, MPFR_RNDN);
        mpfr_log(r11202, r11201, MPFR_RNDN);
        ;
        mpfr_set_si(r11204, mpfr_cmp(r11184, r11203) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r11206, r11196, r11205, MPFR_RNDN);
        mpfr_add(r11207, r11206, r11184, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11210, r11184, r11209, MPFR_RNDN);
        mpfr_mul(r11211, r11208, r11210, MPFR_RNDN);
        mpfr_sub(r11212, r11207, r11211, MPFR_RNDN);
        mpfr_add(r11213, r11184, r11192, MPFR_RNDN);
        mpfr_sub(r11214, r11213, r11190, MPFR_RNDN);
        mpfr_add(r11215, r11184, r11214, MPFR_RNDN);
        mpfr_log(r11216, r11215, MPFR_RNDN);
        if (mpfr_get_si(r11204, MPFR_RNDN)) { mpfr_set(r11217, r11212, MPFR_RNDN); } else { mpfr_set(r11217, r11216, MPFR_RNDN); };
        if (mpfr_get_si(r11186, MPFR_RNDN)) { mpfr_set(r11218, r11202, MPFR_RNDN); } else { mpfr_set(r11218, r11217, MPFR_RNDN); };
        return mpfr_get_d(r11218, MPFR_RNDN);
}

