#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 r11382 = x;
        float r11383 = r11382 * r11382;
        float r11384 = 1;
        float r11385 = r11383 + r11384;
        float r11386 = sqrt(r11385);
        float r11387 = r11382 + r11386;
        float r11388 = log(r11387);
        return r11388;
}

double f_id(double x) {
        double r11389 = x;
        double r11390 = r11389 * r11389;
        double r11391 = 1;
        double r11392 = r11390 + r11391;
        double r11393 = sqrt(r11392);
        double r11394 = r11389 + r11393;
        double r11395 = log(r11394);
        return r11395;
}


double f_of(float x) {
        float r11396 = x;
        float r11397 = -1.045195896304336;
        bool r11398 = r11396 <= r11397;
        float r11399 = 1/8;
        float r11400 = r11399 / r11396;
        float r11401 = r11396 * r11396;
        float r11402 = r11400 / r11401;
        float r11403 = 1/2;
        float r11404 = r11403 / r11396;
        float r11405 = r11402 - r11404;
        float r11406 = 1/16;
        float r11407 = 5;
        float r11408 = pow(r11396, r11407);
        float r11409 = r11406 / r11408;
        float r11410 = r11405 - r11409;
        float r11411 = log(r11410);
        float r11412 = 1.009821353901925;
        bool r11413 = r11396 <= r11412;
        float r11414 = 3/40;
        float r11415 = r11414 * r11408;
        float r11416 = r11396 + r11415;
        float r11417 = 1/6;
        float r11418 = 3;
        float r11419 = pow(r11396, r11418);
        float r11420 = r11417 * r11419;
        float r11421 = r11416 - r11420;
        float r11422 = 2;
        float r11423 = log(r11422);
        float r11424 = log(r11396);
        float r11425 = r11423 + r11424;
        float r11426 = 1/4;
        float r11427 = r11426 / r11401;
        float r11428 = 3/32;
        float r11429 = 4;
        float r11430 = pow(r11396, r11429);
        float r11431 = r11428 / r11430;
        float r11432 = r11427 - r11431;
        float r11433 = r11425 + r11432;
        float r11434 = r11413 ? r11421 : r11433;
        float r11435 = r11398 ? r11411 : r11434;
        return r11435;
}

double f_od(double x) {
        double r11436 = x;
        double r11437 = -1.045195896304336;
        bool r11438 = r11436 <= r11437;
        double r11439 = 1/8;
        double r11440 = r11439 / r11436;
        double r11441 = r11436 * r11436;
        double r11442 = r11440 / r11441;
        double r11443 = 1/2;
        double r11444 = r11443 / r11436;
        double r11445 = r11442 - r11444;
        double r11446 = 1/16;
        double r11447 = 5;
        double r11448 = pow(r11436, r11447);
        double r11449 = r11446 / r11448;
        double r11450 = r11445 - r11449;
        double r11451 = log(r11450);
        double r11452 = 1.009821353901925;
        bool r11453 = r11436 <= r11452;
        double r11454 = 3/40;
        double r11455 = r11454 * r11448;
        double r11456 = r11436 + r11455;
        double r11457 = 1/6;
        double r11458 = 3;
        double r11459 = pow(r11436, r11458);
        double r11460 = r11457 * r11459;
        double r11461 = r11456 - r11460;
        double r11462 = 2;
        double r11463 = log(r11462);
        double r11464 = log(r11436);
        double r11465 = r11463 + r11464;
        double r11466 = 1/4;
        double r11467 = r11466 / r11441;
        double r11468 = 3/32;
        double r11469 = 4;
        double r11470 = pow(r11436, r11469);
        double r11471 = r11468 / r11470;
        double r11472 = r11467 - r11471;
        double r11473 = r11465 + r11472;
        double r11474 = r11453 ? r11461 : r11473;
        double r11475 = r11438 ? r11451 : r11474;
        return r11475;
}

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 r11476, r11477, r11478, r11479, r11480, r11481, r11482;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11476);
        mpfr_init(r11477);
        mpfr_init_set_str(r11478, "1", 10, MPFR_RNDN);
        mpfr_init(r11479);
        mpfr_init(r11480);
        mpfr_init(r11481);
        mpfr_init(r11482);
}

double f_im(double x) {
        mpfr_set_d(r11476, x, MPFR_RNDN);
        mpfr_mul(r11477, r11476, r11476, MPFR_RNDN);
        ;
        mpfr_add(r11479, r11477, r11478, MPFR_RNDN);
        mpfr_sqrt(r11480, r11479, MPFR_RNDN);
        mpfr_add(r11481, r11476, r11480, MPFR_RNDN);
        mpfr_log(r11482, r11481, MPFR_RNDN);
        return mpfr_get_d(r11482, MPFR_RNDN);
}

static mpfr_t r11483, r11484, r11485, r11486, r11487, r11488, r11489, r11490, r11491, r11492, r11493, r11494, r11495, r11496, r11497, r11498, r11499, r11500, r11501, r11502, r11503, r11504, r11505, r11506, r11507, r11508, r11509, r11510, r11511, r11512, r11513, r11514, r11515, r11516, r11517, r11518, r11519, r11520, r11521, r11522;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11483);
        mpfr_init_set_str(r11484, "-1.045195896304336", 10, MPFR_RNDN);
        mpfr_init(r11485);
        mpfr_init_set_str(r11486, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11487);
        mpfr_init(r11488);
        mpfr_init(r11489);
        mpfr_init_set_str(r11490, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11491);
        mpfr_init(r11492);
        mpfr_init_set_str(r11493, "1/16", 10, MPFR_RNDN);
        mpfr_init_set_str(r11494, "5", 10, MPFR_RNDN);
        mpfr_init(r11495);
        mpfr_init(r11496);
        mpfr_init(r11497);
        mpfr_init(r11498);
        mpfr_init_set_str(r11499, "1.009821353901925", 10, MPFR_RNDN);
        mpfr_init(r11500);
        mpfr_init_set_str(r11501, "3/40", 10, MPFR_RNDN);
        mpfr_init(r11502);
        mpfr_init(r11503);
        mpfr_init_set_str(r11504, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r11505, "3", 10, MPFR_RNDN);
        mpfr_init(r11506);
        mpfr_init(r11507);
        mpfr_init(r11508);
        mpfr_init_set_str(r11509, "2", 10, MPFR_RNDN);
        mpfr_init(r11510);
        mpfr_init(r11511);
        mpfr_init(r11512);
        mpfr_init_set_str(r11513, "1/4", 10, MPFR_RNDN);
        mpfr_init(r11514);
        mpfr_init_set_str(r11515, "3/32", 10, MPFR_RNDN);
        mpfr_init_set_str(r11516, "4", 10, MPFR_RNDN);
        mpfr_init(r11517);
        mpfr_init(r11518);
        mpfr_init(r11519);
        mpfr_init(r11520);
        mpfr_init(r11521);
        mpfr_init(r11522);
}

double f_fm(double x) {
        mpfr_set_d(r11483, x, MPFR_RNDN);
        ;
        mpfr_set_si(r11485, mpfr_cmp(r11483, r11484) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11487, r11486, r11483, MPFR_RNDN);
        mpfr_mul(r11488, r11483, r11483, MPFR_RNDN);
        mpfr_div(r11489, r11487, r11488, MPFR_RNDN);
        ;
        mpfr_div(r11491, r11490, r11483, MPFR_RNDN);
        mpfr_sub(r11492, r11489, r11491, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11495, r11483, r11494, MPFR_RNDN);
        mpfr_div(r11496, r11493, r11495, MPFR_RNDN);
        mpfr_sub(r11497, r11492, r11496, MPFR_RNDN);
        mpfr_log(r11498, r11497, MPFR_RNDN);
        ;
        mpfr_set_si(r11500, mpfr_cmp(r11483, r11499) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r11502, r11501, r11495, MPFR_RNDN);
        mpfr_add(r11503, r11483, r11502, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11506, r11483, r11505, MPFR_RNDN);
        mpfr_mul(r11507, r11504, r11506, MPFR_RNDN);
        mpfr_sub(r11508, r11503, r11507, MPFR_RNDN);
        ;
        mpfr_log(r11510, r11509, MPFR_RNDN);
        mpfr_log(r11511, r11483, MPFR_RNDN);
        mpfr_add(r11512, r11510, r11511, MPFR_RNDN);
        ;
        mpfr_div(r11514, r11513, r11488, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11517, r11483, r11516, MPFR_RNDN);
        mpfr_div(r11518, r11515, r11517, MPFR_RNDN);
        mpfr_sub(r11519, r11514, r11518, MPFR_RNDN);
        mpfr_add(r11520, r11512, r11519, MPFR_RNDN);
        if (mpfr_get_si(r11500, MPFR_RNDN)) { mpfr_set(r11521, r11508, MPFR_RNDN); } else { mpfr_set(r11521, r11520, MPFR_RNDN); };
        if (mpfr_get_si(r11485, MPFR_RNDN)) { mpfr_set(r11522, r11498, MPFR_RNDN); } else { mpfr_set(r11522, r11521, MPFR_RNDN); };
        return mpfr_get_d(r11522, MPFR_RNDN);
}

static mpfr_t r11523, r11524, r11525, r11526, r11527, r11528, r11529, r11530, r11531, r11532, r11533, r11534, r11535, r11536, r11537, r11538, r11539, r11540, r11541, r11542, r11543, r11544, r11545, r11546, r11547, r11548, r11549, r11550, r11551, r11552, r11553, r11554, r11555, r11556, r11557, r11558, r11559, r11560, r11561, r11562;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11523);
        mpfr_init_set_str(r11524, "-1.045195896304336", 10, MPFR_RNDN);
        mpfr_init(r11525);
        mpfr_init_set_str(r11526, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11527);
        mpfr_init(r11528);
        mpfr_init(r11529);
        mpfr_init_set_str(r11530, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11531);
        mpfr_init(r11532);
        mpfr_init_set_str(r11533, "1/16", 10, MPFR_RNDN);
        mpfr_init_set_str(r11534, "5", 10, MPFR_RNDN);
        mpfr_init(r11535);
        mpfr_init(r11536);
        mpfr_init(r11537);
        mpfr_init(r11538);
        mpfr_init_set_str(r11539, "1.009821353901925", 10, MPFR_RNDN);
        mpfr_init(r11540);
        mpfr_init_set_str(r11541, "3/40", 10, MPFR_RNDN);
        mpfr_init(r11542);
        mpfr_init(r11543);
        mpfr_init_set_str(r11544, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r11545, "3", 10, MPFR_RNDN);
        mpfr_init(r11546);
        mpfr_init(r11547);
        mpfr_init(r11548);
        mpfr_init_set_str(r11549, "2", 10, MPFR_RNDN);
        mpfr_init(r11550);
        mpfr_init(r11551);
        mpfr_init(r11552);
        mpfr_init_set_str(r11553, "1/4", 10, MPFR_RNDN);
        mpfr_init(r11554);
        mpfr_init_set_str(r11555, "3/32", 10, MPFR_RNDN);
        mpfr_init_set_str(r11556, "4", 10, MPFR_RNDN);
        mpfr_init(r11557);
        mpfr_init(r11558);
        mpfr_init(r11559);
        mpfr_init(r11560);
        mpfr_init(r11561);
        mpfr_init(r11562);
}

double f_dm(double x) {
        mpfr_set_d(r11523, x, MPFR_RNDN);
        ;
        mpfr_set_si(r11525, mpfr_cmp(r11523, r11524) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11527, r11526, r11523, MPFR_RNDN);
        mpfr_mul(r11528, r11523, r11523, MPFR_RNDN);
        mpfr_div(r11529, r11527, r11528, MPFR_RNDN);
        ;
        mpfr_div(r11531, r11530, r11523, MPFR_RNDN);
        mpfr_sub(r11532, r11529, r11531, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11535, r11523, r11534, MPFR_RNDN);
        mpfr_div(r11536, r11533, r11535, MPFR_RNDN);
        mpfr_sub(r11537, r11532, r11536, MPFR_RNDN);
        mpfr_log(r11538, r11537, MPFR_RNDN);
        ;
        mpfr_set_si(r11540, mpfr_cmp(r11523, r11539) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r11542, r11541, r11535, MPFR_RNDN);
        mpfr_add(r11543, r11523, r11542, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11546, r11523, r11545, MPFR_RNDN);
        mpfr_mul(r11547, r11544, r11546, MPFR_RNDN);
        mpfr_sub(r11548, r11543, r11547, MPFR_RNDN);
        ;
        mpfr_log(r11550, r11549, MPFR_RNDN);
        mpfr_log(r11551, r11523, MPFR_RNDN);
        mpfr_add(r11552, r11550, r11551, MPFR_RNDN);
        ;
        mpfr_div(r11554, r11553, r11528, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11557, r11523, r11556, MPFR_RNDN);
        mpfr_div(r11558, r11555, r11557, MPFR_RNDN);
        mpfr_sub(r11559, r11554, r11558, MPFR_RNDN);
        mpfr_add(r11560, r11552, r11559, MPFR_RNDN);
        if (mpfr_get_si(r11540, MPFR_RNDN)) { mpfr_set(r11561, r11548, MPFR_RNDN); } else { mpfr_set(r11561, r11560, MPFR_RNDN); };
        if (mpfr_get_si(r11525, MPFR_RNDN)) { mpfr_set(r11562, r11538, MPFR_RNDN); } else { mpfr_set(r11562, r11561, MPFR_RNDN); };
        return mpfr_get_d(r11562, MPFR_RNDN);
}

