#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 r11089 = x;
        float r11090 = r11089 * r11089;
        float r11091 = 1.0f;
        float r11092 = r11090 + r11091;
        float r11093 = sqrt(r11092);
        float r11094 = r11089 + r11093;
        float r11095 = log(r11094);
        return r11095;
}

double f_id(double x) {
        double r11096 = x;
        double r11097 = r11096 * r11096;
        double r11098 = 1.0;
        double r11099 = r11097 + r11098;
        double r11100 = sqrt(r11099);
        double r11101 = r11096 + r11100;
        double r11102 = log(r11101);
        return r11102;
}


double f_of(float x) {
        float r11103 = x;
        float r11104 = -1.0508372426442374f;
        bool r11105 = r11103 <= r11104;
        float r11106 = 0.125f;
        float r11107 = r11106 / r11103;
        float r11108 = 1.0f;
        float r11109 = r11108 / r11103;
        float r11110 = 0.5f;
        float r11111 = -r11110;
        float r11112 = fma(r11107, r11109, r11111);
        float r11113 = 0.0625f;
        float r11114 = -r11113;
        float r11115 = 5.0f;
        float r11116 = pow(r11103, r11115);
        float r11117 = r11114 / r11116;
        float r11118 = fma(r11112, r11109, r11117);
        float r11119 = log(r11118);
        float r11120 = 0.008701166011638582f;
        bool r11121 = r11103 <= r11120;
        float r11122 = 0.075f;
        float r11123 = r11116 * r11122;
        float r11124 = r11123 + r11103;
        float r11125 = 3.0f;
        float r11126 = pow(r11103, r11125);
        float r11127 = 0.16666666666666666f;
        float r11128 = r11126 * r11127;
        float r11129 = r11124 - r11128;
        float r11130 = hypot(r11108, r11103);
        float r11131 = r11130 + r11103;
        float r11132 = sqrt(r11131);
        float r11133 = log(r11132);
        float r11134 = r11133 + r11133;
        float r11135 = r11121 ? r11129 : r11134;
        float r11136 = r11105 ? r11119 : r11135;
        return r11136;
}

double f_od(double x) {
        double r11137 = x;
        double r11138 = -1.0508372426442374;
        bool r11139 = r11137 <= r11138;
        double r11140 = 0.125;
        double r11141 = r11140 / r11137;
        double r11142 = 1.0;
        double r11143 = r11142 / r11137;
        double r11144 = 0.5;
        double r11145 = -r11144;
        double r11146 = fma(r11141, r11143, r11145);
        double r11147 = 0.0625;
        double r11148 = -r11147;
        double r11149 = 5.0;
        double r11150 = pow(r11137, r11149);
        double r11151 = r11148 / r11150;
        double r11152 = fma(r11146, r11143, r11151);
        double r11153 = log(r11152);
        double r11154 = 0.008701166011638582;
        bool r11155 = r11137 <= r11154;
        double r11156 = 0.075;
        double r11157 = r11150 * r11156;
        double r11158 = r11157 + r11137;
        double r11159 = 3.0;
        double r11160 = pow(r11137, r11159);
        double r11161 = 0.16666666666666666;
        double r11162 = r11160 * r11161;
        double r11163 = r11158 - r11162;
        double r11164 = hypot(r11142, r11137);
        double r11165 = r11164 + r11137;
        double r11166 = sqrt(r11165);
        double r11167 = log(r11166);
        double r11168 = r11167 + r11167;
        double r11169 = r11155 ? r11163 : r11168;
        double r11170 = r11139 ? r11153 : r11169;
        return r11170;
}

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 r11171, r11172, r11173, r11174, r11175, r11176, r11177;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11171);
        mpfr_init(r11172);
        mpfr_init_set_str(r11173, "1", 10, MPFR_RNDN);
        mpfr_init(r11174);
        mpfr_init(r11175);
        mpfr_init(r11176);
        mpfr_init(r11177);
}

double f_im(double x) {
        mpfr_set_d(r11171, x, MPFR_RNDN);
        mpfr_mul(r11172, r11171, r11171, MPFR_RNDN);
        ;
        mpfr_add(r11174, r11172, r11173, MPFR_RNDN);
        mpfr_sqrt(r11175, r11174, MPFR_RNDN);
        mpfr_add(r11176, r11171, r11175, MPFR_RNDN);
        mpfr_log(r11177, r11176, MPFR_RNDN);
        return mpfr_get_d(r11177, MPFR_RNDN);
}

static mpfr_t r11178, r11179, r11180, r11181, r11182, r11183, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11178);
        mpfr_init_set_str(r11179, "-1.0508372426442374", 10, MPFR_RNDN);
        mpfr_init(r11180);
        mpfr_init_set_str(r11181, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11182);
        mpfr_init_set_str(r11183, "1", 10, MPFR_RNDN);
        mpfr_init(r11184);
        mpfr_init_set_str(r11185, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11186);
        mpfr_init(r11187);
        mpfr_init_set_str(r11188, "1/16", 10, MPFR_RNDN);
        mpfr_init(r11189);
        mpfr_init_set_str(r11190, "5", 10, MPFR_RNDN);
        mpfr_init(r11191);
        mpfr_init(r11192);
        mpfr_init(r11193);
        mpfr_init(r11194);
        mpfr_init_set_str(r11195, "0.008701166011638582", 10, MPFR_RNDN);
        mpfr_init(r11196);
        mpfr_init_set_str(r11197, "3/40", 10, MPFR_RNDN);
        mpfr_init(r11198);
        mpfr_init(r11199);
        mpfr_init_set_str(r11200, "3", 10, MPFR_RNDN);
        mpfr_init(r11201);
        mpfr_init_set_str(r11202, "1/6", 10, MPFR_RNDN);
        mpfr_init(r11203);
        mpfr_init(r11204);
        mpfr_init(r11205);
        mpfr_init(r11206);
        mpfr_init(r11207);
        mpfr_init(r11208);
        mpfr_init(r11209);
        mpfr_init(r11210);
        mpfr_init(r11211);
}

double f_fm(double x) {
        mpfr_set_d(r11178, x, MPFR_RNDN);
        ;
        mpfr_set_si(r11180, mpfr_cmp(r11178, r11179) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11182, r11181, r11178, MPFR_RNDN);
        ;
        mpfr_div(r11184, r11183, r11178, MPFR_RNDN);
        ;
        mpfr_neg(r11186, r11185, MPFR_RNDN);
        mpfr_fma(r11187, r11182, r11184, r11186, MPFR_RNDN);
        ;
        mpfr_neg(r11189, r11188, MPFR_RNDN);
        ;
        mpfr_pow(r11191, r11178, r11190, MPFR_RNDN);
        mpfr_div(r11192, r11189, r11191, MPFR_RNDN);
        mpfr_fma(r11193, r11187, r11184, r11192, MPFR_RNDN);
        mpfr_log(r11194, r11193, MPFR_RNDN);
        ;
        mpfr_set_si(r11196, mpfr_cmp(r11178, r11195) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r11198, r11191, r11197, MPFR_RNDN);
        mpfr_add(r11199, r11198, r11178, MPFR_RNDN);
        ;
        mpfr_pow(r11201, r11178, r11200, MPFR_RNDN);
        ;
        mpfr_mul(r11203, r11201, r11202, MPFR_RNDN);
        mpfr_sub(r11204, r11199, r11203, MPFR_RNDN);
        mpfr_hypot(r11205, r11183, r11178, MPFR_RNDN);
        mpfr_add(r11206, r11205, r11178, MPFR_RNDN);
        mpfr_sqrt(r11207, r11206, MPFR_RNDN);
        mpfr_log(r11208, r11207, MPFR_RNDN);
        mpfr_add(r11209, r11208, r11208, MPFR_RNDN);
        if (mpfr_get_si(r11196, MPFR_RNDN)) { mpfr_set(r11210, r11204, MPFR_RNDN); } else { mpfr_set(r11210, r11209, MPFR_RNDN); };
        if (mpfr_get_si(r11180, MPFR_RNDN)) { mpfr_set(r11211, r11194, MPFR_RNDN); } else { mpfr_set(r11211, r11210, MPFR_RNDN); };
        return mpfr_get_d(r11211, MPFR_RNDN);
}

static mpfr_t r11212, r11213, r11214, r11215, r11216, r11217, r11218, r11219, r11220, r11221, r11222, r11223, r11224, r11225, r11226, r11227, r11228, r11229, r11230, r11231, r11232, r11233, r11234, r11235, r11236, r11237, r11238, r11239, r11240, r11241, r11242, r11243, r11244, r11245;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11212);
        mpfr_init_set_str(r11213, "-1.0508372426442374", 10, MPFR_RNDN);
        mpfr_init(r11214);
        mpfr_init_set_str(r11215, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11216);
        mpfr_init_set_str(r11217, "1", 10, MPFR_RNDN);
        mpfr_init(r11218);
        mpfr_init_set_str(r11219, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11220);
        mpfr_init(r11221);
        mpfr_init_set_str(r11222, "1/16", 10, MPFR_RNDN);
        mpfr_init(r11223);
        mpfr_init_set_str(r11224, "5", 10, MPFR_RNDN);
        mpfr_init(r11225);
        mpfr_init(r11226);
        mpfr_init(r11227);
        mpfr_init(r11228);
        mpfr_init_set_str(r11229, "0.008701166011638582", 10, MPFR_RNDN);
        mpfr_init(r11230);
        mpfr_init_set_str(r11231, "3/40", 10, MPFR_RNDN);
        mpfr_init(r11232);
        mpfr_init(r11233);
        mpfr_init_set_str(r11234, "3", 10, MPFR_RNDN);
        mpfr_init(r11235);
        mpfr_init_set_str(r11236, "1/6", 10, MPFR_RNDN);
        mpfr_init(r11237);
        mpfr_init(r11238);
        mpfr_init(r11239);
        mpfr_init(r11240);
        mpfr_init(r11241);
        mpfr_init(r11242);
        mpfr_init(r11243);
        mpfr_init(r11244);
        mpfr_init(r11245);
}

double f_dm(double x) {
        mpfr_set_d(r11212, x, MPFR_RNDN);
        ;
        mpfr_set_si(r11214, mpfr_cmp(r11212, r11213) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11216, r11215, r11212, MPFR_RNDN);
        ;
        mpfr_div(r11218, r11217, r11212, MPFR_RNDN);
        ;
        mpfr_neg(r11220, r11219, MPFR_RNDN);
        mpfr_fma(r11221, r11216, r11218, r11220, MPFR_RNDN);
        ;
        mpfr_neg(r11223, r11222, MPFR_RNDN);
        ;
        mpfr_pow(r11225, r11212, r11224, MPFR_RNDN);
        mpfr_div(r11226, r11223, r11225, MPFR_RNDN);
        mpfr_fma(r11227, r11221, r11218, r11226, MPFR_RNDN);
        mpfr_log(r11228, r11227, MPFR_RNDN);
        ;
        mpfr_set_si(r11230, mpfr_cmp(r11212, r11229) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r11232, r11225, r11231, MPFR_RNDN);
        mpfr_add(r11233, r11232, r11212, MPFR_RNDN);
        ;
        mpfr_pow(r11235, r11212, r11234, MPFR_RNDN);
        ;
        mpfr_mul(r11237, r11235, r11236, MPFR_RNDN);
        mpfr_sub(r11238, r11233, r11237, MPFR_RNDN);
        mpfr_hypot(r11239, r11217, r11212, MPFR_RNDN);
        mpfr_add(r11240, r11239, r11212, MPFR_RNDN);
        mpfr_sqrt(r11241, r11240, MPFR_RNDN);
        mpfr_log(r11242, r11241, MPFR_RNDN);
        mpfr_add(r11243, r11242, r11242, MPFR_RNDN);
        if (mpfr_get_si(r11230, MPFR_RNDN)) { mpfr_set(r11244, r11238, MPFR_RNDN); } else { mpfr_set(r11244, r11243, MPFR_RNDN); };
        if (mpfr_get_si(r11214, MPFR_RNDN)) { mpfr_set(r11245, r11228, MPFR_RNDN); } else { mpfr_set(r11245, r11244, MPFR_RNDN); };
        return mpfr_get_d(r11245, MPFR_RNDN);
}

