#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 r11215 = x;
        float r11216 = r11215 * r11215;
        float r11217 = 1;
        float r11218 = r11216 + r11217;
        float r11219 = sqrt(r11218);
        float r11220 = r11215 + r11219;
        float r11221 = log(r11220);
        return r11221;
}

double f_id(double x) {
        double r11222 = x;
        double r11223 = r11222 * r11222;
        double r11224 = 1;
        double r11225 = r11223 + r11224;
        double r11226 = sqrt(r11225);
        double r11227 = r11222 + r11226;
        double r11228 = log(r11227);
        return r11228;
}


double f_of(float x) {
        float r11229 = x;
        float r11230 = -1.080417316984728;
        bool r11231 = r11229 <= r11230;
        float r11232 = 1;
        float r11233 = r11232 / r11229;
        float r11234 = 1/8;
        float r11235 = r11234 / r11229;
        float r11236 = 1/2;
        float r11237 = -r11236;
        float r11238 = fma(r11233, r11235, r11237);
        float r11239 = 1/16;
        float r11240 = -r11239;
        float r11241 = 5;
        float r11242 = pow(r11229, r11241);
        float r11243 = r11240 / r11242;
        float r11244 = fma(r11233, r11238, r11243);
        float r11245 = log(r11244);
        float r11246 = 0.008003572335826058;
        bool r11247 = r11229 <= r11246;
        float r11248 = 3/40;
        float r11249 = r11248 * r11242;
        float r11250 = r11229 + r11249;
        float r11251 = 1/6;
        float r11252 = 3;
        float r11253 = pow(r11229, r11252);
        float r11254 = r11251 * r11253;
        float r11255 = r11250 - r11254;
        float r11256 = hypot(r11232, r11229);
        float r11257 = r11229 + r11256;
        float r11258 = sqrt(r11257);
        float r11259 = log(r11258);
        float r11260 = r11259 + r11259;
        float r11261 = r11247 ? r11255 : r11260;
        float r11262 = r11231 ? r11245 : r11261;
        return r11262;
}

double f_od(double x) {
        double r11263 = x;
        double r11264 = -1.080417316984728;
        bool r11265 = r11263 <= r11264;
        double r11266 = 1;
        double r11267 = r11266 / r11263;
        double r11268 = 1/8;
        double r11269 = r11268 / r11263;
        double r11270 = 1/2;
        double r11271 = -r11270;
        double r11272 = fma(r11267, r11269, r11271);
        double r11273 = 1/16;
        double r11274 = -r11273;
        double r11275 = 5;
        double r11276 = pow(r11263, r11275);
        double r11277 = r11274 / r11276;
        double r11278 = fma(r11267, r11272, r11277);
        double r11279 = log(r11278);
        double r11280 = 0.008003572335826058;
        bool r11281 = r11263 <= r11280;
        double r11282 = 3/40;
        double r11283 = r11282 * r11276;
        double r11284 = r11263 + r11283;
        double r11285 = 1/6;
        double r11286 = 3;
        double r11287 = pow(r11263, r11286);
        double r11288 = r11285 * r11287;
        double r11289 = r11284 - r11288;
        double r11290 = hypot(r11266, r11263);
        double r11291 = r11263 + r11290;
        double r11292 = sqrt(r11291);
        double r11293 = log(r11292);
        double r11294 = r11293 + r11293;
        double r11295 = r11281 ? r11289 : r11294;
        double r11296 = r11265 ? r11279 : r11295;
        return r11296;
}

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 r11297, r11298, r11299, r11300, r11301, r11302, r11303;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11297);
        mpfr_init(r11298);
        mpfr_init_set_str(r11299, "1", 10, MPFR_RNDN);
        mpfr_init(r11300);
        mpfr_init(r11301);
        mpfr_init(r11302);
        mpfr_init(r11303);
}

double f_im(double x) {
        mpfr_set_d(r11297, x, MPFR_RNDN);
        mpfr_mul(r11298, r11297, r11297, MPFR_RNDN);
        ;
        mpfr_add(r11300, r11298, r11299, MPFR_RNDN);
        mpfr_sqrt(r11301, r11300, MPFR_RNDN);
        mpfr_add(r11302, r11297, r11301, MPFR_RNDN);
        mpfr_log(r11303, r11302, MPFR_RNDN);
        return mpfr_get_d(r11303, MPFR_RNDN);
}

static mpfr_t r11304, r11305, r11306, r11307, r11308, r11309, r11310, r11311, r11312, r11313, r11314, r11315, r11316, r11317, r11318, r11319, r11320, r11321, r11322, r11323, r11324, r11325, r11326, r11327, r11328, r11329, r11330, r11331, r11332, r11333, r11334, r11335, r11336, r11337;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11304);
        mpfr_init_set_str(r11305, "-1.080417316984728", 10, MPFR_RNDN);
        mpfr_init(r11306);
        mpfr_init_set_str(r11307, "1", 10, MPFR_RNDN);
        mpfr_init(r11308);
        mpfr_init_set_str(r11309, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11310);
        mpfr_init_set_str(r11311, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11312);
        mpfr_init(r11313);
        mpfr_init_set_str(r11314, "1/16", 10, MPFR_RNDN);
        mpfr_init(r11315);
        mpfr_init_set_str(r11316, "5", 10, MPFR_RNDN);
        mpfr_init(r11317);
        mpfr_init(r11318);
        mpfr_init(r11319);
        mpfr_init(r11320);
        mpfr_init_set_str(r11321, "0.008003572335826058", 10, MPFR_RNDN);
        mpfr_init(r11322);
        mpfr_init_set_str(r11323, "3/40", 10, MPFR_RNDN);
        mpfr_init(r11324);
        mpfr_init(r11325);
        mpfr_init_set_str(r11326, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r11327, "3", 10, MPFR_RNDN);
        mpfr_init(r11328);
        mpfr_init(r11329);
        mpfr_init(r11330);
        mpfr_init(r11331);
        mpfr_init(r11332);
        mpfr_init(r11333);
        mpfr_init(r11334);
        mpfr_init(r11335);
        mpfr_init(r11336);
        mpfr_init(r11337);
}

double f_fm(double x) {
        mpfr_set_d(r11304, x, MPFR_RNDN);
        ;
        mpfr_set_si(r11306, mpfr_cmp(r11304, r11305) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11308, r11307, r11304, MPFR_RNDN);
        ;
        mpfr_div(r11310, r11309, r11304, MPFR_RNDN);
        ;
        mpfr_neg(r11312, r11311, MPFR_RNDN);
        mpfr_fma(r11313, r11308, r11310, r11312, MPFR_RNDN);
        ;
        mpfr_neg(r11315, r11314, MPFR_RNDN);
        ;
        mpfr_pow(r11317, r11304, r11316, MPFR_RNDN);
        mpfr_div(r11318, r11315, r11317, MPFR_RNDN);
        mpfr_fma(r11319, r11308, r11313, r11318, MPFR_RNDN);
        mpfr_log(r11320, r11319, MPFR_RNDN);
        ;
        mpfr_set_si(r11322, mpfr_cmp(r11304, r11321) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r11324, r11323, r11317, MPFR_RNDN);
        mpfr_add(r11325, r11304, r11324, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11328, r11304, r11327, MPFR_RNDN);
        mpfr_mul(r11329, r11326, r11328, MPFR_RNDN);
        mpfr_sub(r11330, r11325, r11329, MPFR_RNDN);
        mpfr_hypot(r11331, r11307, r11304, MPFR_RNDN);
        mpfr_add(r11332, r11304, r11331, MPFR_RNDN);
        mpfr_sqrt(r11333, r11332, MPFR_RNDN);
        mpfr_log(r11334, r11333, MPFR_RNDN);
        mpfr_add(r11335, r11334, r11334, MPFR_RNDN);
        if (mpfr_get_si(r11322, MPFR_RNDN)) { mpfr_set(r11336, r11330, MPFR_RNDN); } else { mpfr_set(r11336, r11335, MPFR_RNDN); };
        if (mpfr_get_si(r11306, MPFR_RNDN)) { mpfr_set(r11337, r11320, MPFR_RNDN); } else { mpfr_set(r11337, r11336, MPFR_RNDN); };
        return mpfr_get_d(r11337, MPFR_RNDN);
}

static mpfr_t r11338, r11339, r11340, r11341, r11342, r11343, r11344, r11345, r11346, r11347, r11348, r11349, r11350, r11351, r11352, r11353, r11354, r11355, r11356, r11357, r11358, r11359, r11360, r11361, r11362, r11363, r11364, r11365, r11366, r11367, r11368, r11369, r11370, r11371;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11338);
        mpfr_init_set_str(r11339, "-1.080417316984728", 10, MPFR_RNDN);
        mpfr_init(r11340);
        mpfr_init_set_str(r11341, "1", 10, MPFR_RNDN);
        mpfr_init(r11342);
        mpfr_init_set_str(r11343, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11344);
        mpfr_init_set_str(r11345, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11346);
        mpfr_init(r11347);
        mpfr_init_set_str(r11348, "1/16", 10, MPFR_RNDN);
        mpfr_init(r11349);
        mpfr_init_set_str(r11350, "5", 10, MPFR_RNDN);
        mpfr_init(r11351);
        mpfr_init(r11352);
        mpfr_init(r11353);
        mpfr_init(r11354);
        mpfr_init_set_str(r11355, "0.008003572335826058", 10, MPFR_RNDN);
        mpfr_init(r11356);
        mpfr_init_set_str(r11357, "3/40", 10, MPFR_RNDN);
        mpfr_init(r11358);
        mpfr_init(r11359);
        mpfr_init_set_str(r11360, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r11361, "3", 10, MPFR_RNDN);
        mpfr_init(r11362);
        mpfr_init(r11363);
        mpfr_init(r11364);
        mpfr_init(r11365);
        mpfr_init(r11366);
        mpfr_init(r11367);
        mpfr_init(r11368);
        mpfr_init(r11369);
        mpfr_init(r11370);
        mpfr_init(r11371);
}

double f_dm(double x) {
        mpfr_set_d(r11338, x, MPFR_RNDN);
        ;
        mpfr_set_si(r11340, mpfr_cmp(r11338, r11339) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11342, r11341, r11338, MPFR_RNDN);
        ;
        mpfr_div(r11344, r11343, r11338, MPFR_RNDN);
        ;
        mpfr_neg(r11346, r11345, MPFR_RNDN);
        mpfr_fma(r11347, r11342, r11344, r11346, MPFR_RNDN);
        ;
        mpfr_neg(r11349, r11348, MPFR_RNDN);
        ;
        mpfr_pow(r11351, r11338, r11350, MPFR_RNDN);
        mpfr_div(r11352, r11349, r11351, MPFR_RNDN);
        mpfr_fma(r11353, r11342, r11347, r11352, MPFR_RNDN);
        mpfr_log(r11354, r11353, MPFR_RNDN);
        ;
        mpfr_set_si(r11356, mpfr_cmp(r11338, r11355) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r11358, r11357, r11351, MPFR_RNDN);
        mpfr_add(r11359, r11338, r11358, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11362, r11338, r11361, MPFR_RNDN);
        mpfr_mul(r11363, r11360, r11362, MPFR_RNDN);
        mpfr_sub(r11364, r11359, r11363, MPFR_RNDN);
        mpfr_hypot(r11365, r11341, r11338, MPFR_RNDN);
        mpfr_add(r11366, r11338, r11365, MPFR_RNDN);
        mpfr_sqrt(r11367, r11366, MPFR_RNDN);
        mpfr_log(r11368, r11367, MPFR_RNDN);
        mpfr_add(r11369, r11368, r11368, MPFR_RNDN);
        if (mpfr_get_si(r11356, MPFR_RNDN)) { mpfr_set(r11370, r11364, MPFR_RNDN); } else { mpfr_set(r11370, r11369, MPFR_RNDN); };
        if (mpfr_get_si(r11340, MPFR_RNDN)) { mpfr_set(r11371, r11354, MPFR_RNDN); } else { mpfr_set(r11371, r11370, MPFR_RNDN); };
        return mpfr_get_d(r11371, MPFR_RNDN);
}

