#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 r18363396 = x;
        float r18363397 = r18363396 * r18363396;
        float r18363398 = 1;
        float r18363399 = r18363397 + r18363398;
        float r18363400 = sqrt(r18363399);
        float r18363401 = r18363396 + r18363400;
        float r18363402 = log(r18363401);
        return r18363402;
}

double f_id(double x) {
        double r18363403 = x;
        double r18363404 = r18363403 * r18363403;
        double r18363405 = 1;
        double r18363406 = r18363404 + r18363405;
        double r18363407 = sqrt(r18363406);
        double r18363408 = r18363403 + r18363407;
        double r18363409 = log(r18363408);
        return r18363409;
}


double f_of(float x) {
        float r18363410 = x;
        float r18363411 = -1.1311944462895098;
        bool r18363412 = r18363410 <= r18363411;
        float r18363413 = 1/8;
        float r18363414 = r18363413 / r18363410;
        float r18363415 = r18363410 * r18363410;
        float r18363416 = r18363414 / r18363415;
        float r18363417 = 1/16;
        float r18363418 = 5;
        float r18363419 = pow(r18363410, r18363418);
        float r18363420 = r18363417 / r18363419;
        float r18363421 = 1/2;
        float r18363422 = r18363421 / r18363410;
        float r18363423 = r18363420 + r18363422;
        float r18363424 = r18363416 - r18363423;
        float r18363425 = log(r18363424);
        float r18363426 = 0.9366575458307038;
        bool r18363427 = r18363410 <= r18363426;
        float r18363428 = 3/40;
        float r18363429 = r18363428 * r18363419;
        float r18363430 = r18363429 + r18363410;
        float r18363431 = 1/6;
        float r18363432 = 3;
        float r18363433 = pow(r18363410, r18363432);
        float r18363434 = r18363431 * r18363433;
        float r18363435 = r18363430 - r18363434;
        float r18363436 = r18363410 + r18363410;
        float r18363437 = r18363422 + r18363436;
        float r18363438 = r18363437 - r18363416;
        float r18363439 = log(r18363438);
        float r18363440 = r18363427 ? r18363435 : r18363439;
        float r18363441 = r18363412 ? r18363425 : r18363440;
        return r18363441;
}

double f_od(double x) {
        double r18363442 = x;
        double r18363443 = -1.1311944462895098;
        bool r18363444 = r18363442 <= r18363443;
        double r18363445 = 1/8;
        double r18363446 = r18363445 / r18363442;
        double r18363447 = r18363442 * r18363442;
        double r18363448 = r18363446 / r18363447;
        double r18363449 = 1/16;
        double r18363450 = 5;
        double r18363451 = pow(r18363442, r18363450);
        double r18363452 = r18363449 / r18363451;
        double r18363453 = 1/2;
        double r18363454 = r18363453 / r18363442;
        double r18363455 = r18363452 + r18363454;
        double r18363456 = r18363448 - r18363455;
        double r18363457 = log(r18363456);
        double r18363458 = 0.9366575458307038;
        bool r18363459 = r18363442 <= r18363458;
        double r18363460 = 3/40;
        double r18363461 = r18363460 * r18363451;
        double r18363462 = r18363461 + r18363442;
        double r18363463 = 1/6;
        double r18363464 = 3;
        double r18363465 = pow(r18363442, r18363464);
        double r18363466 = r18363463 * r18363465;
        double r18363467 = r18363462 - r18363466;
        double r18363468 = r18363442 + r18363442;
        double r18363469 = r18363454 + r18363468;
        double r18363470 = r18363469 - r18363448;
        double r18363471 = log(r18363470);
        double r18363472 = r18363459 ? r18363467 : r18363471;
        double r18363473 = r18363444 ? r18363457 : r18363472;
        return r18363473;
}

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 r18363474, r18363475, r18363476, r18363477, r18363478, r18363479, r18363480;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r18363474);
        mpfr_init(r18363475);
        mpfr_init_set_str(r18363476, "1", 10, MPFR_RNDN);
        mpfr_init(r18363477);
        mpfr_init(r18363478);
        mpfr_init(r18363479);
        mpfr_init(r18363480);
}

double f_im(double x) {
        mpfr_set_d(r18363474, x, MPFR_RNDN);
        mpfr_mul(r18363475, r18363474, r18363474, MPFR_RNDN);
        ;
        mpfr_add(r18363477, r18363475, r18363476, MPFR_RNDN);
        mpfr_sqrt(r18363478, r18363477, MPFR_RNDN);
        mpfr_add(r18363479, r18363474, r18363478, MPFR_RNDN);
        mpfr_log(r18363480, r18363479, MPFR_RNDN);
        return mpfr_get_d(r18363480, MPFR_RNDN);
}

static mpfr_t r18363481, r18363482, r18363483, r18363484, r18363485, r18363486, r18363487, r18363488, r18363489, r18363490, r18363491, r18363492, r18363493, r18363494, r18363495, r18363496, r18363497, r18363498, r18363499, r18363500, r18363501, r18363502, r18363503, r18363504, r18363505, r18363506, r18363507, r18363508, r18363509, r18363510, r18363511, r18363512;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r18363481);
        mpfr_init_set_str(r18363482, "-1.1311944462895098", 10, MPFR_RNDN);
        mpfr_init(r18363483);
        mpfr_init_set_str(r18363484, "1/8", 10, MPFR_RNDN);
        mpfr_init(r18363485);
        mpfr_init(r18363486);
        mpfr_init(r18363487);
        mpfr_init_set_str(r18363488, "1/16", 10, MPFR_RNDN);
        mpfr_init_set_str(r18363489, "5", 10, MPFR_RNDN);
        mpfr_init(r18363490);
        mpfr_init(r18363491);
        mpfr_init_set_str(r18363492, "1/2", 10, MPFR_RNDN);
        mpfr_init(r18363493);
        mpfr_init(r18363494);
        mpfr_init(r18363495);
        mpfr_init(r18363496);
        mpfr_init_set_str(r18363497, "0.9366575458307038", 10, MPFR_RNDN);
        mpfr_init(r18363498);
        mpfr_init_set_str(r18363499, "3/40", 10, MPFR_RNDN);
        mpfr_init(r18363500);
        mpfr_init(r18363501);
        mpfr_init_set_str(r18363502, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r18363503, "3", 10, MPFR_RNDN);
        mpfr_init(r18363504);
        mpfr_init(r18363505);
        mpfr_init(r18363506);
        mpfr_init(r18363507);
        mpfr_init(r18363508);
        mpfr_init(r18363509);
        mpfr_init(r18363510);
        mpfr_init(r18363511);
        mpfr_init(r18363512);
}

double f_fm(double x) {
        mpfr_set_d(r18363481, x, MPFR_RNDN);
        ;
        mpfr_set_si(r18363483, mpfr_cmp(r18363481, r18363482) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r18363485, r18363484, r18363481, MPFR_RNDN);
        mpfr_mul(r18363486, r18363481, r18363481, MPFR_RNDN);
        mpfr_div(r18363487, r18363485, r18363486, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r18363490, r18363481, r18363489, MPFR_RNDN);
        mpfr_div(r18363491, r18363488, r18363490, MPFR_RNDN);
        ;
        mpfr_div(r18363493, r18363492, r18363481, MPFR_RNDN);
        mpfr_add(r18363494, r18363491, r18363493, MPFR_RNDN);
        mpfr_sub(r18363495, r18363487, r18363494, MPFR_RNDN);
        mpfr_log(r18363496, r18363495, MPFR_RNDN);
        ;
        mpfr_set_si(r18363498, mpfr_cmp(r18363481, r18363497) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r18363500, r18363499, r18363490, MPFR_RNDN);
        mpfr_add(r18363501, r18363500, r18363481, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r18363504, r18363481, r18363503, MPFR_RNDN);
        mpfr_mul(r18363505, r18363502, r18363504, MPFR_RNDN);
        mpfr_sub(r18363506, r18363501, r18363505, MPFR_RNDN);
        mpfr_add(r18363507, r18363481, r18363481, MPFR_RNDN);
        mpfr_add(r18363508, r18363493, r18363507, MPFR_RNDN);
        mpfr_sub(r18363509, r18363508, r18363487, MPFR_RNDN);
        mpfr_log(r18363510, r18363509, MPFR_RNDN);
        if (mpfr_get_si(r18363498, MPFR_RNDN)) { mpfr_set(r18363511, r18363506, MPFR_RNDN); } else { mpfr_set(r18363511, r18363510, MPFR_RNDN); };
        if (mpfr_get_si(r18363483, MPFR_RNDN)) { mpfr_set(r18363512, r18363496, MPFR_RNDN); } else { mpfr_set(r18363512, r18363511, MPFR_RNDN); };
        return mpfr_get_d(r18363512, MPFR_RNDN);
}

static mpfr_t r18363513, r18363514, r18363515, r18363516, r18363517, r18363518, r18363519, r18363520, r18363521, r18363522, r18363523, r18363524, r18363525, r18363526, r18363527, r18363528, r18363529, r18363530, r18363531, r18363532, r18363533, r18363534, r18363535, r18363536, r18363537, r18363538, r18363539, r18363540, r18363541, r18363542, r18363543, r18363544;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r18363513);
        mpfr_init_set_str(r18363514, "-1.1311944462895098", 10, MPFR_RNDN);
        mpfr_init(r18363515);
        mpfr_init_set_str(r18363516, "1/8", 10, MPFR_RNDN);
        mpfr_init(r18363517);
        mpfr_init(r18363518);
        mpfr_init(r18363519);
        mpfr_init_set_str(r18363520, "1/16", 10, MPFR_RNDN);
        mpfr_init_set_str(r18363521, "5", 10, MPFR_RNDN);
        mpfr_init(r18363522);
        mpfr_init(r18363523);
        mpfr_init_set_str(r18363524, "1/2", 10, MPFR_RNDN);
        mpfr_init(r18363525);
        mpfr_init(r18363526);
        mpfr_init(r18363527);
        mpfr_init(r18363528);
        mpfr_init_set_str(r18363529, "0.9366575458307038", 10, MPFR_RNDN);
        mpfr_init(r18363530);
        mpfr_init_set_str(r18363531, "3/40", 10, MPFR_RNDN);
        mpfr_init(r18363532);
        mpfr_init(r18363533);
        mpfr_init_set_str(r18363534, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r18363535, "3", 10, MPFR_RNDN);
        mpfr_init(r18363536);
        mpfr_init(r18363537);
        mpfr_init(r18363538);
        mpfr_init(r18363539);
        mpfr_init(r18363540);
        mpfr_init(r18363541);
        mpfr_init(r18363542);
        mpfr_init(r18363543);
        mpfr_init(r18363544);
}

double f_dm(double x) {
        mpfr_set_d(r18363513, x, MPFR_RNDN);
        ;
        mpfr_set_si(r18363515, mpfr_cmp(r18363513, r18363514) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r18363517, r18363516, r18363513, MPFR_RNDN);
        mpfr_mul(r18363518, r18363513, r18363513, MPFR_RNDN);
        mpfr_div(r18363519, r18363517, r18363518, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r18363522, r18363513, r18363521, MPFR_RNDN);
        mpfr_div(r18363523, r18363520, r18363522, MPFR_RNDN);
        ;
        mpfr_div(r18363525, r18363524, r18363513, MPFR_RNDN);
        mpfr_add(r18363526, r18363523, r18363525, MPFR_RNDN);
        mpfr_sub(r18363527, r18363519, r18363526, MPFR_RNDN);
        mpfr_log(r18363528, r18363527, MPFR_RNDN);
        ;
        mpfr_set_si(r18363530, mpfr_cmp(r18363513, r18363529) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r18363532, r18363531, r18363522, MPFR_RNDN);
        mpfr_add(r18363533, r18363532, r18363513, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r18363536, r18363513, r18363535, MPFR_RNDN);
        mpfr_mul(r18363537, r18363534, r18363536, MPFR_RNDN);
        mpfr_sub(r18363538, r18363533, r18363537, MPFR_RNDN);
        mpfr_add(r18363539, r18363513, r18363513, MPFR_RNDN);
        mpfr_add(r18363540, r18363525, r18363539, MPFR_RNDN);
        mpfr_sub(r18363541, r18363540, r18363519, MPFR_RNDN);
        mpfr_log(r18363542, r18363541, MPFR_RNDN);
        if (mpfr_get_si(r18363530, MPFR_RNDN)) { mpfr_set(r18363543, r18363538, MPFR_RNDN); } else { mpfr_set(r18363543, r18363542, MPFR_RNDN); };
        if (mpfr_get_si(r18363515, MPFR_RNDN)) { mpfr_set(r18363544, r18363528, MPFR_RNDN); } else { mpfr_set(r18363544, r18363543, MPFR_RNDN); };
        return mpfr_get_d(r18363544, MPFR_RNDN);
}

