#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 r27466 = x;
        float r27467 = r27466 * r27466;
        float r27468 = 1;
        float r27469 = r27467 + r27468;
        float r27470 = sqrt(r27469);
        float r27471 = r27466 + r27470;
        float r27472 = log(r27471);
        return r27472;
}

double f_id(double x) {
        double r27473 = x;
        double r27474 = r27473 * r27473;
        double r27475 = 1;
        double r27476 = r27474 + r27475;
        double r27477 = sqrt(r27476);
        double r27478 = r27473 + r27477;
        double r27479 = log(r27478);
        return r27479;
}


double f_of(float x) {
        float r27480 = x;
        float r27481 = -1.0850473299195051;
        bool r27482 = r27480 <= r27481;
        float r27483 = 1;
        float r27484 = r27483 / r27480;
        float r27485 = 1/8;
        float r27486 = r27485 / r27480;
        float r27487 = 1/2;
        float r27488 = -r27487;
        float r27489 = fma(r27484, r27486, r27488);
        float r27490 = 1/16;
        float r27491 = -r27490;
        float r27492 = 5;
        float r27493 = pow(r27480, r27492);
        float r27494 = r27491 / r27493;
        float r27495 = fma(r27484, r27489, r27494);
        float r27496 = log(r27495);
        float r27497 = 0.007962894708689092;
        bool r27498 = r27480 <= r27497;
        float r27499 = 3/40;
        float r27500 = r27499 * r27493;
        float r27501 = r27500 + r27480;
        float r27502 = 1/6;
        float r27503 = 3;
        float r27504 = pow(r27480, r27503);
        float r27505 = r27502 * r27504;
        float r27506 = r27501 - r27505;
        float r27507 = hypot(r27483, r27480);
        float r27508 = cbrt(r27507);
        float r27509 = r27508 * r27508;
        float r27510 = fma(r27509, r27508, r27480);
        float r27511 = log(r27510);
        float r27512 = r27498 ? r27506 : r27511;
        float r27513 = r27482 ? r27496 : r27512;
        return r27513;
}

double f_od(double x) {
        double r27514 = x;
        double r27515 = -1.0850473299195051;
        bool r27516 = r27514 <= r27515;
        double r27517 = 1;
        double r27518 = r27517 / r27514;
        double r27519 = 1/8;
        double r27520 = r27519 / r27514;
        double r27521 = 1/2;
        double r27522 = -r27521;
        double r27523 = fma(r27518, r27520, r27522);
        double r27524 = 1/16;
        double r27525 = -r27524;
        double r27526 = 5;
        double r27527 = pow(r27514, r27526);
        double r27528 = r27525 / r27527;
        double r27529 = fma(r27518, r27523, r27528);
        double r27530 = log(r27529);
        double r27531 = 0.007962894708689092;
        bool r27532 = r27514 <= r27531;
        double r27533 = 3/40;
        double r27534 = r27533 * r27527;
        double r27535 = r27534 + r27514;
        double r27536 = 1/6;
        double r27537 = 3;
        double r27538 = pow(r27514, r27537);
        double r27539 = r27536 * r27538;
        double r27540 = r27535 - r27539;
        double r27541 = hypot(r27517, r27514);
        double r27542 = cbrt(r27541);
        double r27543 = r27542 * r27542;
        double r27544 = fma(r27543, r27542, r27514);
        double r27545 = log(r27544);
        double r27546 = r27532 ? r27540 : r27545;
        double r27547 = r27516 ? r27530 : r27546;
        return r27547;
}

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 r27548, r27549, r27550, r27551, r27552, r27553, r27554;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27548);
        mpfr_init(r27549);
        mpfr_init_set_str(r27550, "1", 10, MPFR_RNDN);
        mpfr_init(r27551);
        mpfr_init(r27552);
        mpfr_init(r27553);
        mpfr_init(r27554);
}

double f_im(double x) {
        mpfr_set_d(r27548, x, MPFR_RNDN);
        mpfr_mul(r27549, r27548, r27548, MPFR_RNDN);
        ;
        mpfr_add(r27551, r27549, r27550, MPFR_RNDN);
        mpfr_sqrt(r27552, r27551, MPFR_RNDN);
        mpfr_add(r27553, r27548, r27552, MPFR_RNDN);
        mpfr_log(r27554, r27553, MPFR_RNDN);
        return mpfr_get_d(r27554, MPFR_RNDN);
}

static mpfr_t r27555, r27556, r27557, r27558, r27559, r27560, r27561, r27562, r27563, r27564, r27565, r27566, r27567, r27568, r27569, r27570, r27571, r27572, r27573, r27574, r27575, r27576, r27577, r27578, r27579, r27580, r27581, r27582, r27583, r27584, r27585, r27586, r27587, r27588;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27555);
        mpfr_init_set_str(r27556, "-1.0850473299195051", 10, MPFR_RNDN);
        mpfr_init(r27557);
        mpfr_init_set_str(r27558, "1", 10, MPFR_RNDN);
        mpfr_init(r27559);
        mpfr_init_set_str(r27560, "1/8", 10, MPFR_RNDN);
        mpfr_init(r27561);
        mpfr_init_set_str(r27562, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27563);
        mpfr_init(r27564);
        mpfr_init_set_str(r27565, "1/16", 10, MPFR_RNDN);
        mpfr_init(r27566);
        mpfr_init_set_str(r27567, "5", 10, MPFR_RNDN);
        mpfr_init(r27568);
        mpfr_init(r27569);
        mpfr_init(r27570);
        mpfr_init(r27571);
        mpfr_init_set_str(r27572, "0.007962894708689092", 10, MPFR_RNDN);
        mpfr_init(r27573);
        mpfr_init_set_str(r27574, "3/40", 10, MPFR_RNDN);
        mpfr_init(r27575);
        mpfr_init(r27576);
        mpfr_init_set_str(r27577, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r27578, "3", 10, MPFR_RNDN);
        mpfr_init(r27579);
        mpfr_init(r27580);
        mpfr_init(r27581);
        mpfr_init(r27582);
        mpfr_init(r27583);
        mpfr_init(r27584);
        mpfr_init(r27585);
        mpfr_init(r27586);
        mpfr_init(r27587);
        mpfr_init(r27588);
}

double f_fm(double x) {
        mpfr_set_d(r27555, x, MPFR_RNDN);
        ;
        mpfr_set_si(r27557, mpfr_cmp(r27555, r27556) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27559, r27558, r27555, MPFR_RNDN);
        ;
        mpfr_div(r27561, r27560, r27555, MPFR_RNDN);
        ;
        mpfr_neg(r27563, r27562, MPFR_RNDN);
        mpfr_fma(r27564, r27559, r27561, r27563, MPFR_RNDN);
        ;
        mpfr_neg(r27566, r27565, MPFR_RNDN);
        ;
        mpfr_pow(r27568, r27555, r27567, MPFR_RNDN);
        mpfr_div(r27569, r27566, r27568, MPFR_RNDN);
        mpfr_fma(r27570, r27559, r27564, r27569, MPFR_RNDN);
        mpfr_log(r27571, r27570, MPFR_RNDN);
        ;
        mpfr_set_si(r27573, mpfr_cmp(r27555, r27572) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27575, r27574, r27568, MPFR_RNDN);
        mpfr_add(r27576, r27575, r27555, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r27579, r27555, r27578, MPFR_RNDN);
        mpfr_mul(r27580, r27577, r27579, MPFR_RNDN);
        mpfr_sub(r27581, r27576, r27580, MPFR_RNDN);
        mpfr_hypot(r27582, r27558, r27555, MPFR_RNDN);
        mpfr_cbrt(r27583, r27582, MPFR_RNDN);
        mpfr_mul(r27584, r27583, r27583, MPFR_RNDN);
        mpfr_fma(r27585, r27584, r27583, r27555, MPFR_RNDN);
        mpfr_log(r27586, r27585, MPFR_RNDN);
        if (mpfr_get_si(r27573, MPFR_RNDN)) { mpfr_set(r27587, r27581, MPFR_RNDN); } else { mpfr_set(r27587, r27586, MPFR_RNDN); };
        if (mpfr_get_si(r27557, MPFR_RNDN)) { mpfr_set(r27588, r27571, MPFR_RNDN); } else { mpfr_set(r27588, r27587, MPFR_RNDN); };
        return mpfr_get_d(r27588, MPFR_RNDN);
}

static mpfr_t r27589, r27590, r27591, r27592, r27593, r27594, r27595, r27596, r27597, r27598, r27599, r27600, r27601, r27602, r27603, r27604, r27605, r27606, r27607, r27608, r27609, r27610, r27611, r27612, r27613, r27614, r27615, r27616, r27617, r27618, r27619, r27620, r27621, r27622;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27589);
        mpfr_init_set_str(r27590, "-1.0850473299195051", 10, MPFR_RNDN);
        mpfr_init(r27591);
        mpfr_init_set_str(r27592, "1", 10, MPFR_RNDN);
        mpfr_init(r27593);
        mpfr_init_set_str(r27594, "1/8", 10, MPFR_RNDN);
        mpfr_init(r27595);
        mpfr_init_set_str(r27596, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27597);
        mpfr_init(r27598);
        mpfr_init_set_str(r27599, "1/16", 10, MPFR_RNDN);
        mpfr_init(r27600);
        mpfr_init_set_str(r27601, "5", 10, MPFR_RNDN);
        mpfr_init(r27602);
        mpfr_init(r27603);
        mpfr_init(r27604);
        mpfr_init(r27605);
        mpfr_init_set_str(r27606, "0.007962894708689092", 10, MPFR_RNDN);
        mpfr_init(r27607);
        mpfr_init_set_str(r27608, "3/40", 10, MPFR_RNDN);
        mpfr_init(r27609);
        mpfr_init(r27610);
        mpfr_init_set_str(r27611, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r27612, "3", 10, MPFR_RNDN);
        mpfr_init(r27613);
        mpfr_init(r27614);
        mpfr_init(r27615);
        mpfr_init(r27616);
        mpfr_init(r27617);
        mpfr_init(r27618);
        mpfr_init(r27619);
        mpfr_init(r27620);
        mpfr_init(r27621);
        mpfr_init(r27622);
}

double f_dm(double x) {
        mpfr_set_d(r27589, x, MPFR_RNDN);
        ;
        mpfr_set_si(r27591, mpfr_cmp(r27589, r27590) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27593, r27592, r27589, MPFR_RNDN);
        ;
        mpfr_div(r27595, r27594, r27589, MPFR_RNDN);
        ;
        mpfr_neg(r27597, r27596, MPFR_RNDN);
        mpfr_fma(r27598, r27593, r27595, r27597, MPFR_RNDN);
        ;
        mpfr_neg(r27600, r27599, MPFR_RNDN);
        ;
        mpfr_pow(r27602, r27589, r27601, MPFR_RNDN);
        mpfr_div(r27603, r27600, r27602, MPFR_RNDN);
        mpfr_fma(r27604, r27593, r27598, r27603, MPFR_RNDN);
        mpfr_log(r27605, r27604, MPFR_RNDN);
        ;
        mpfr_set_si(r27607, mpfr_cmp(r27589, r27606) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27609, r27608, r27602, MPFR_RNDN);
        mpfr_add(r27610, r27609, r27589, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r27613, r27589, r27612, MPFR_RNDN);
        mpfr_mul(r27614, r27611, r27613, MPFR_RNDN);
        mpfr_sub(r27615, r27610, r27614, MPFR_RNDN);
        mpfr_hypot(r27616, r27592, r27589, MPFR_RNDN);
        mpfr_cbrt(r27617, r27616, MPFR_RNDN);
        mpfr_mul(r27618, r27617, r27617, MPFR_RNDN);
        mpfr_fma(r27619, r27618, r27617, r27589, MPFR_RNDN);
        mpfr_log(r27620, r27619, MPFR_RNDN);
        if (mpfr_get_si(r27607, MPFR_RNDN)) { mpfr_set(r27621, r27615, MPFR_RNDN); } else { mpfr_set(r27621, r27620, MPFR_RNDN); };
        if (mpfr_get_si(r27591, MPFR_RNDN)) { mpfr_set(r27622, r27605, MPFR_RNDN); } else { mpfr_set(r27622, r27621, MPFR_RNDN); };
        return mpfr_get_d(r27622, MPFR_RNDN);
}

