#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 r11309 = x;
        float r11310 = r11309 * r11309;
        float r11311 = 1;
        float r11312 = r11310 + r11311;
        float r11313 = sqrt(r11312);
        float r11314 = r11309 + r11313;
        float r11315 = log(r11314);
        return r11315;
}

double f_id(double x) {
        double r11316 = x;
        double r11317 = r11316 * r11316;
        double r11318 = 1;
        double r11319 = r11317 + r11318;
        double r11320 = sqrt(r11319);
        double r11321 = r11316 + r11320;
        double r11322 = log(r11321);
        return r11322;
}


double f_of(float x) {
        float r11323 = x;
        float r11324 = -1.045195896304336;
        bool r11325 = r11323 <= r11324;
        float r11326 = 1;
        float r11327 = r11326 / r11323;
        float r11328 = 1/8;
        float r11329 = r11328 / r11323;
        float r11330 = 1/2;
        float r11331 = -r11330;
        float r11332 = fma(r11327, r11329, r11331);
        float r11333 = 1/16;
        float r11334 = -r11333;
        float r11335 = 5;
        float r11336 = pow(r11323, r11335);
        float r11337 = r11334 / r11336;
        float r11338 = fma(r11327, r11332, r11337);
        float r11339 = log(r11338);
        float r11340 = 1.009821353901925;
        bool r11341 = r11323 <= r11340;
        float r11342 = 3/40;
        float r11343 = r11342 * r11336;
        float r11344 = r11323 + r11343;
        float r11345 = 1/6;
        float r11346 = 3;
        float r11347 = pow(r11323, r11346);
        float r11348 = r11345 * r11347;
        float r11349 = r11344 - r11348;
        float r11350 = 1/4;
        float r11351 = r11323 * r11323;
        float r11352 = r11350 / r11351;
        float r11353 = 2;
        float r11354 = log(r11353);
        float r11355 = r11352 + r11354;
        float r11356 = 3/32;
        float r11357 = 4;
        float r11358 = pow(r11323, r11357);
        float r11359 = r11356 / r11358;
        float r11360 = log(r11323);
        float r11361 = r11359 - r11360;
        float r11362 = r11355 - r11361;
        float r11363 = r11341 ? r11349 : r11362;
        float r11364 = r11325 ? r11339 : r11363;
        return r11364;
}

double f_od(double x) {
        double r11365 = x;
        double r11366 = -1.045195896304336;
        bool r11367 = r11365 <= r11366;
        double r11368 = 1;
        double r11369 = r11368 / r11365;
        double r11370 = 1/8;
        double r11371 = r11370 / r11365;
        double r11372 = 1/2;
        double r11373 = -r11372;
        double r11374 = fma(r11369, r11371, r11373);
        double r11375 = 1/16;
        double r11376 = -r11375;
        double r11377 = 5;
        double r11378 = pow(r11365, r11377);
        double r11379 = r11376 / r11378;
        double r11380 = fma(r11369, r11374, r11379);
        double r11381 = log(r11380);
        double r11382 = 1.009821353901925;
        bool r11383 = r11365 <= r11382;
        double r11384 = 3/40;
        double r11385 = r11384 * r11378;
        double r11386 = r11365 + r11385;
        double r11387 = 1/6;
        double r11388 = 3;
        double r11389 = pow(r11365, r11388);
        double r11390 = r11387 * r11389;
        double r11391 = r11386 - r11390;
        double r11392 = 1/4;
        double r11393 = r11365 * r11365;
        double r11394 = r11392 / r11393;
        double r11395 = 2;
        double r11396 = log(r11395);
        double r11397 = r11394 + r11396;
        double r11398 = 3/32;
        double r11399 = 4;
        double r11400 = pow(r11365, r11399);
        double r11401 = r11398 / r11400;
        double r11402 = log(r11365);
        double r11403 = r11401 - r11402;
        double r11404 = r11397 - r11403;
        double r11405 = r11383 ? r11391 : r11404;
        double r11406 = r11367 ? r11381 : r11405;
        return r11406;
}

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 r11407, r11408, r11409, r11410, r11411, r11412, r11413;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11407);
        mpfr_init(r11408);
        mpfr_init_set_str(r11409, "1", 10, MPFR_RNDN);
        mpfr_init(r11410);
        mpfr_init(r11411);
        mpfr_init(r11412);
        mpfr_init(r11413);
}

double f_im(double x) {
        mpfr_set_d(r11407, x, MPFR_RNDN);
        mpfr_mul(r11408, r11407, r11407, MPFR_RNDN);
        ;
        mpfr_add(r11410, r11408, r11409, MPFR_RNDN);
        mpfr_sqrt(r11411, r11410, MPFR_RNDN);
        mpfr_add(r11412, r11407, r11411, MPFR_RNDN);
        mpfr_log(r11413, r11412, MPFR_RNDN);
        return mpfr_get_d(r11413, MPFR_RNDN);
}

static mpfr_t r11414, r11415, r11416, r11417, r11418, r11419, r11420, r11421, r11422, r11423, r11424, r11425, r11426, r11427, r11428, r11429, r11430, r11431, r11432, r11433, r11434, r11435, r11436, r11437, r11438, r11439, r11440, r11441, r11442, r11443, r11444, r11445, r11446, r11447, r11448, r11449, r11450, r11451, r11452, r11453, r11454, r11455;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11414);
        mpfr_init_set_str(r11415, "-1.045195896304336", 10, MPFR_RNDN);
        mpfr_init(r11416);
        mpfr_init_set_str(r11417, "1", 10, MPFR_RNDN);
        mpfr_init(r11418);
        mpfr_init_set_str(r11419, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11420);
        mpfr_init_set_str(r11421, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11422);
        mpfr_init(r11423);
        mpfr_init_set_str(r11424, "1/16", 10, MPFR_RNDN);
        mpfr_init(r11425);
        mpfr_init_set_str(r11426, "5", 10, MPFR_RNDN);
        mpfr_init(r11427);
        mpfr_init(r11428);
        mpfr_init(r11429);
        mpfr_init(r11430);
        mpfr_init_set_str(r11431, "1.009821353901925", 10, MPFR_RNDN);
        mpfr_init(r11432);
        mpfr_init_set_str(r11433, "3/40", 10, MPFR_RNDN);
        mpfr_init(r11434);
        mpfr_init(r11435);
        mpfr_init_set_str(r11436, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r11437, "3", 10, MPFR_RNDN);
        mpfr_init(r11438);
        mpfr_init(r11439);
        mpfr_init(r11440);
        mpfr_init_set_str(r11441, "1/4", 10, MPFR_RNDN);
        mpfr_init(r11442);
        mpfr_init(r11443);
        mpfr_init_set_str(r11444, "2", 10, MPFR_RNDN);
        mpfr_init(r11445);
        mpfr_init(r11446);
        mpfr_init_set_str(r11447, "3/32", 10, MPFR_RNDN);
        mpfr_init_set_str(r11448, "4", 10, MPFR_RNDN);
        mpfr_init(r11449);
        mpfr_init(r11450);
        mpfr_init(r11451);
        mpfr_init(r11452);
        mpfr_init(r11453);
        mpfr_init(r11454);
        mpfr_init(r11455);
}

double f_fm(double x) {
        mpfr_set_d(r11414, x, MPFR_RNDN);
        ;
        mpfr_set_si(r11416, mpfr_cmp(r11414, r11415) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11418, r11417, r11414, MPFR_RNDN);
        ;
        mpfr_div(r11420, r11419, r11414, MPFR_RNDN);
        ;
        mpfr_neg(r11422, r11421, MPFR_RNDN);
        mpfr_fma(r11423, r11418, r11420, r11422, MPFR_RNDN);
        ;
        mpfr_neg(r11425, r11424, MPFR_RNDN);
        ;
        mpfr_pow(r11427, r11414, r11426, MPFR_RNDN);
        mpfr_div(r11428, r11425, r11427, MPFR_RNDN);
        mpfr_fma(r11429, r11418, r11423, r11428, MPFR_RNDN);
        mpfr_log(r11430, r11429, MPFR_RNDN);
        ;
        mpfr_set_si(r11432, mpfr_cmp(r11414, r11431) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r11434, r11433, r11427, MPFR_RNDN);
        mpfr_add(r11435, r11414, r11434, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11438, r11414, r11437, MPFR_RNDN);
        mpfr_mul(r11439, r11436, r11438, MPFR_RNDN);
        mpfr_sub(r11440, r11435, r11439, MPFR_RNDN);
        ;
        mpfr_mul(r11442, r11414, r11414, MPFR_RNDN);
        mpfr_div(r11443, r11441, r11442, MPFR_RNDN);
        ;
        mpfr_log(r11445, r11444, MPFR_RNDN);
        mpfr_add(r11446, r11443, r11445, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11449, r11414, r11448, MPFR_RNDN);
        mpfr_div(r11450, r11447, r11449, MPFR_RNDN);
        mpfr_log(r11451, r11414, MPFR_RNDN);
        mpfr_sub(r11452, r11450, r11451, MPFR_RNDN);
        mpfr_sub(r11453, r11446, r11452, MPFR_RNDN);
        if (mpfr_get_si(r11432, MPFR_RNDN)) { mpfr_set(r11454, r11440, MPFR_RNDN); } else { mpfr_set(r11454, r11453, MPFR_RNDN); };
        if (mpfr_get_si(r11416, MPFR_RNDN)) { mpfr_set(r11455, r11430, MPFR_RNDN); } else { mpfr_set(r11455, r11454, MPFR_RNDN); };
        return mpfr_get_d(r11455, MPFR_RNDN);
}

static mpfr_t r11456, r11457, r11458, r11459, r11460, r11461, r11462, r11463, r11464, r11465, r11466, r11467, r11468, r11469, r11470, r11471, r11472, r11473, r11474, r11475, r11476, r11477, r11478, r11479, r11480, r11481, r11482, r11483, r11484, r11485, r11486, r11487, r11488, r11489, r11490, r11491, r11492, r11493, r11494, r11495, r11496, r11497;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11456);
        mpfr_init_set_str(r11457, "-1.045195896304336", 10, MPFR_RNDN);
        mpfr_init(r11458);
        mpfr_init_set_str(r11459, "1", 10, MPFR_RNDN);
        mpfr_init(r11460);
        mpfr_init_set_str(r11461, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11462);
        mpfr_init_set_str(r11463, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11464);
        mpfr_init(r11465);
        mpfr_init_set_str(r11466, "1/16", 10, MPFR_RNDN);
        mpfr_init(r11467);
        mpfr_init_set_str(r11468, "5", 10, MPFR_RNDN);
        mpfr_init(r11469);
        mpfr_init(r11470);
        mpfr_init(r11471);
        mpfr_init(r11472);
        mpfr_init_set_str(r11473, "1.009821353901925", 10, MPFR_RNDN);
        mpfr_init(r11474);
        mpfr_init_set_str(r11475, "3/40", 10, MPFR_RNDN);
        mpfr_init(r11476);
        mpfr_init(r11477);
        mpfr_init_set_str(r11478, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r11479, "3", 10, MPFR_RNDN);
        mpfr_init(r11480);
        mpfr_init(r11481);
        mpfr_init(r11482);
        mpfr_init_set_str(r11483, "1/4", 10, MPFR_RNDN);
        mpfr_init(r11484);
        mpfr_init(r11485);
        mpfr_init_set_str(r11486, "2", 10, MPFR_RNDN);
        mpfr_init(r11487);
        mpfr_init(r11488);
        mpfr_init_set_str(r11489, "3/32", 10, MPFR_RNDN);
        mpfr_init_set_str(r11490, "4", 10, MPFR_RNDN);
        mpfr_init(r11491);
        mpfr_init(r11492);
        mpfr_init(r11493);
        mpfr_init(r11494);
        mpfr_init(r11495);
        mpfr_init(r11496);
        mpfr_init(r11497);
}

double f_dm(double x) {
        mpfr_set_d(r11456, x, MPFR_RNDN);
        ;
        mpfr_set_si(r11458, mpfr_cmp(r11456, r11457) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11460, r11459, r11456, MPFR_RNDN);
        ;
        mpfr_div(r11462, r11461, r11456, MPFR_RNDN);
        ;
        mpfr_neg(r11464, r11463, MPFR_RNDN);
        mpfr_fma(r11465, r11460, r11462, r11464, MPFR_RNDN);
        ;
        mpfr_neg(r11467, r11466, MPFR_RNDN);
        ;
        mpfr_pow(r11469, r11456, r11468, MPFR_RNDN);
        mpfr_div(r11470, r11467, r11469, MPFR_RNDN);
        mpfr_fma(r11471, r11460, r11465, r11470, MPFR_RNDN);
        mpfr_log(r11472, r11471, MPFR_RNDN);
        ;
        mpfr_set_si(r11474, mpfr_cmp(r11456, r11473) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r11476, r11475, r11469, MPFR_RNDN);
        mpfr_add(r11477, r11456, r11476, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11480, r11456, r11479, MPFR_RNDN);
        mpfr_mul(r11481, r11478, r11480, MPFR_RNDN);
        mpfr_sub(r11482, r11477, r11481, MPFR_RNDN);
        ;
        mpfr_mul(r11484, r11456, r11456, MPFR_RNDN);
        mpfr_div(r11485, r11483, r11484, MPFR_RNDN);
        ;
        mpfr_log(r11487, r11486, MPFR_RNDN);
        mpfr_add(r11488, r11485, r11487, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11491, r11456, r11490, MPFR_RNDN);
        mpfr_div(r11492, r11489, r11491, MPFR_RNDN);
        mpfr_log(r11493, r11456, MPFR_RNDN);
        mpfr_sub(r11494, r11492, r11493, MPFR_RNDN);
        mpfr_sub(r11495, r11488, r11494, MPFR_RNDN);
        if (mpfr_get_si(r11474, MPFR_RNDN)) { mpfr_set(r11496, r11482, MPFR_RNDN); } else { mpfr_set(r11496, r11495, MPFR_RNDN); };
        if (mpfr_get_si(r11458, MPFR_RNDN)) { mpfr_set(r11497, r11472, MPFR_RNDN); } else { mpfr_set(r11497, r11496, MPFR_RNDN); };
        return mpfr_get_d(r11497, MPFR_RNDN);
}

