#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 r27560 = x;
        float r27561 = r27560 * r27560;
        float r27562 = 1;
        float r27563 = r27561 + r27562;
        float r27564 = sqrt(r27563);
        float r27565 = r27560 + r27564;
        float r27566 = log(r27565);
        return r27566;
}

double f_id(double x) {
        double r27567 = x;
        double r27568 = r27567 * r27567;
        double r27569 = 1;
        double r27570 = r27568 + r27569;
        double r27571 = sqrt(r27570);
        double r27572 = r27567 + r27571;
        double r27573 = log(r27572);
        return r27573;
}


double f_of(float x) {
        float r27574 = x;
        float r27575 = -1.0724943741484714;
        bool r27576 = r27574 <= r27575;
        float r27577 = 1;
        float r27578 = r27577 / r27574;
        float r27579 = 1/8;
        float r27580 = r27579 / r27574;
        float r27581 = 1/2;
        float r27582 = -r27581;
        float r27583 = fma(r27578, r27580, r27582);
        float r27584 = 1/16;
        float r27585 = -r27584;
        float r27586 = 5;
        float r27587 = pow(r27574, r27586);
        float r27588 = r27585 / r27587;
        float r27589 = fma(r27578, r27583, r27588);
        float r27590 = log(r27589);
        float r27591 = 0.008732393424328473;
        bool r27592 = r27574 <= r27591;
        float r27593 = 3/40;
        float r27594 = r27593 * r27587;
        float r27595 = r27594 + r27574;
        float r27596 = 1/6;
        float r27597 = 3;
        float r27598 = pow(r27574, r27597);
        float r27599 = r27596 * r27598;
        float r27600 = r27595 - r27599;
        float r27601 = hypot(r27577, r27574);
        float r27602 = r27601 + r27574;
        float r27603 = log1p(r27602);
        float r27604 = expm1(r27603);
        float r27605 = log(r27604);
        float r27606 = r27592 ? r27600 : r27605;
        float r27607 = r27576 ? r27590 : r27606;
        return r27607;
}

double f_od(double x) {
        double r27608 = x;
        double r27609 = -1.0724943741484714;
        bool r27610 = r27608 <= r27609;
        double r27611 = 1;
        double r27612 = r27611 / r27608;
        double r27613 = 1/8;
        double r27614 = r27613 / r27608;
        double r27615 = 1/2;
        double r27616 = -r27615;
        double r27617 = fma(r27612, r27614, r27616);
        double r27618 = 1/16;
        double r27619 = -r27618;
        double r27620 = 5;
        double r27621 = pow(r27608, r27620);
        double r27622 = r27619 / r27621;
        double r27623 = fma(r27612, r27617, r27622);
        double r27624 = log(r27623);
        double r27625 = 0.008732393424328473;
        bool r27626 = r27608 <= r27625;
        double r27627 = 3/40;
        double r27628 = r27627 * r27621;
        double r27629 = r27628 + r27608;
        double r27630 = 1/6;
        double r27631 = 3;
        double r27632 = pow(r27608, r27631);
        double r27633 = r27630 * r27632;
        double r27634 = r27629 - r27633;
        double r27635 = hypot(r27611, r27608);
        double r27636 = r27635 + r27608;
        double r27637 = log1p(r27636);
        double r27638 = expm1(r27637);
        double r27639 = log(r27638);
        double r27640 = r27626 ? r27634 : r27639;
        double r27641 = r27610 ? r27624 : r27640;
        return r27641;
}

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 r27642, r27643, r27644, r27645, r27646, r27647, r27648;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27642);
        mpfr_init(r27643);
        mpfr_init_set_str(r27644, "1", 10, MPFR_RNDN);
        mpfr_init(r27645);
        mpfr_init(r27646);
        mpfr_init(r27647);
        mpfr_init(r27648);
}

double f_im(double x) {
        mpfr_set_d(r27642, x, MPFR_RNDN);
        mpfr_mul(r27643, r27642, r27642, MPFR_RNDN);
        ;
        mpfr_add(r27645, r27643, r27644, MPFR_RNDN);
        mpfr_sqrt(r27646, r27645, MPFR_RNDN);
        mpfr_add(r27647, r27642, r27646, MPFR_RNDN);
        mpfr_log(r27648, r27647, MPFR_RNDN);
        return mpfr_get_d(r27648, MPFR_RNDN);
}

static mpfr_t r27649, r27650, r27651, r27652, r27653, r27654, r27655, r27656, r27657, r27658, r27659, r27660, r27661, r27662, r27663, r27664, r27665, r27666, r27667, r27668, r27669, r27670, r27671, r27672, r27673, r27674, r27675, r27676, r27677, r27678, r27679, r27680, r27681, r27682;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27649);
        mpfr_init_set_str(r27650, "-1.0724943741484714", 10, MPFR_RNDN);
        mpfr_init(r27651);
        mpfr_init_set_str(r27652, "1", 10, MPFR_RNDN);
        mpfr_init(r27653);
        mpfr_init_set_str(r27654, "1/8", 10, MPFR_RNDN);
        mpfr_init(r27655);
        mpfr_init_set_str(r27656, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27657);
        mpfr_init(r27658);
        mpfr_init_set_str(r27659, "1/16", 10, MPFR_RNDN);
        mpfr_init(r27660);
        mpfr_init_set_str(r27661, "5", 10, MPFR_RNDN);
        mpfr_init(r27662);
        mpfr_init(r27663);
        mpfr_init(r27664);
        mpfr_init(r27665);
        mpfr_init_set_str(r27666, "0.008732393424328473", 10, MPFR_RNDN);
        mpfr_init(r27667);
        mpfr_init_set_str(r27668, "3/40", 10, MPFR_RNDN);
        mpfr_init(r27669);
        mpfr_init(r27670);
        mpfr_init_set_str(r27671, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r27672, "3", 10, MPFR_RNDN);
        mpfr_init(r27673);
        mpfr_init(r27674);
        mpfr_init(r27675);
        mpfr_init(r27676);
        mpfr_init(r27677);
        mpfr_init(r27678);
        mpfr_init(r27679);
        mpfr_init(r27680);
        mpfr_init(r27681);
        mpfr_init(r27682);
}

double f_fm(double x) {
        mpfr_set_d(r27649, x, MPFR_RNDN);
        ;
        mpfr_set_si(r27651, mpfr_cmp(r27649, r27650) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27653, r27652, r27649, MPFR_RNDN);
        ;
        mpfr_div(r27655, r27654, r27649, MPFR_RNDN);
        ;
        mpfr_neg(r27657, r27656, MPFR_RNDN);
        mpfr_fma(r27658, r27653, r27655, r27657, MPFR_RNDN);
        ;
        mpfr_neg(r27660, r27659, MPFR_RNDN);
        ;
        mpfr_pow(r27662, r27649, r27661, MPFR_RNDN);
        mpfr_div(r27663, r27660, r27662, MPFR_RNDN);
        mpfr_fma(r27664, r27653, r27658, r27663, MPFR_RNDN);
        mpfr_log(r27665, r27664, MPFR_RNDN);
        ;
        mpfr_set_si(r27667, mpfr_cmp(r27649, r27666) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27669, r27668, r27662, MPFR_RNDN);
        mpfr_add(r27670, r27669, r27649, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r27673, r27649, r27672, MPFR_RNDN);
        mpfr_mul(r27674, r27671, r27673, MPFR_RNDN);
        mpfr_sub(r27675, r27670, r27674, MPFR_RNDN);
        mpfr_hypot(r27676, r27652, r27649, MPFR_RNDN);
        mpfr_add(r27677, r27676, r27649, MPFR_RNDN);
        mpfr_log1p(r27678, r27677, MPFR_RNDN);
        mpfr_expm1(r27679, r27678, MPFR_RNDN);
        mpfr_log(r27680, r27679, MPFR_RNDN);
        if (mpfr_get_si(r27667, MPFR_RNDN)) { mpfr_set(r27681, r27675, MPFR_RNDN); } else { mpfr_set(r27681, r27680, MPFR_RNDN); };
        if (mpfr_get_si(r27651, MPFR_RNDN)) { mpfr_set(r27682, r27665, MPFR_RNDN); } else { mpfr_set(r27682, r27681, MPFR_RNDN); };
        return mpfr_get_d(r27682, MPFR_RNDN);
}

static mpfr_t r27683, r27684, r27685, r27686, r27687, r27688, r27689, r27690, r27691, r27692, r27693, r27694, r27695, r27696, r27697, r27698, r27699, r27700, r27701, r27702, r27703, r27704, r27705, r27706, r27707, r27708, r27709, r27710, r27711, r27712, r27713, r27714, r27715, r27716;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27683);
        mpfr_init_set_str(r27684, "-1.0724943741484714", 10, MPFR_RNDN);
        mpfr_init(r27685);
        mpfr_init_set_str(r27686, "1", 10, MPFR_RNDN);
        mpfr_init(r27687);
        mpfr_init_set_str(r27688, "1/8", 10, MPFR_RNDN);
        mpfr_init(r27689);
        mpfr_init_set_str(r27690, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27691);
        mpfr_init(r27692);
        mpfr_init_set_str(r27693, "1/16", 10, MPFR_RNDN);
        mpfr_init(r27694);
        mpfr_init_set_str(r27695, "5", 10, MPFR_RNDN);
        mpfr_init(r27696);
        mpfr_init(r27697);
        mpfr_init(r27698);
        mpfr_init(r27699);
        mpfr_init_set_str(r27700, "0.008732393424328473", 10, MPFR_RNDN);
        mpfr_init(r27701);
        mpfr_init_set_str(r27702, "3/40", 10, MPFR_RNDN);
        mpfr_init(r27703);
        mpfr_init(r27704);
        mpfr_init_set_str(r27705, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r27706, "3", 10, MPFR_RNDN);
        mpfr_init(r27707);
        mpfr_init(r27708);
        mpfr_init(r27709);
        mpfr_init(r27710);
        mpfr_init(r27711);
        mpfr_init(r27712);
        mpfr_init(r27713);
        mpfr_init(r27714);
        mpfr_init(r27715);
        mpfr_init(r27716);
}

double f_dm(double x) {
        mpfr_set_d(r27683, x, MPFR_RNDN);
        ;
        mpfr_set_si(r27685, mpfr_cmp(r27683, r27684) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27687, r27686, r27683, MPFR_RNDN);
        ;
        mpfr_div(r27689, r27688, r27683, MPFR_RNDN);
        ;
        mpfr_neg(r27691, r27690, MPFR_RNDN);
        mpfr_fma(r27692, r27687, r27689, r27691, MPFR_RNDN);
        ;
        mpfr_neg(r27694, r27693, MPFR_RNDN);
        ;
        mpfr_pow(r27696, r27683, r27695, MPFR_RNDN);
        mpfr_div(r27697, r27694, r27696, MPFR_RNDN);
        mpfr_fma(r27698, r27687, r27692, r27697, MPFR_RNDN);
        mpfr_log(r27699, r27698, MPFR_RNDN);
        ;
        mpfr_set_si(r27701, mpfr_cmp(r27683, r27700) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27703, r27702, r27696, MPFR_RNDN);
        mpfr_add(r27704, r27703, r27683, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r27707, r27683, r27706, MPFR_RNDN);
        mpfr_mul(r27708, r27705, r27707, MPFR_RNDN);
        mpfr_sub(r27709, r27704, r27708, MPFR_RNDN);
        mpfr_hypot(r27710, r27686, r27683, MPFR_RNDN);
        mpfr_add(r27711, r27710, r27683, MPFR_RNDN);
        mpfr_log1p(r27712, r27711, MPFR_RNDN);
        mpfr_expm1(r27713, r27712, MPFR_RNDN);
        mpfr_log(r27714, r27713, MPFR_RNDN);
        if (mpfr_get_si(r27701, MPFR_RNDN)) { mpfr_set(r27715, r27709, MPFR_RNDN); } else { mpfr_set(r27715, r27714, MPFR_RNDN); };
        if (mpfr_get_si(r27685, MPFR_RNDN)) { mpfr_set(r27716, r27699, MPFR_RNDN); } else { mpfr_set(r27716, r27715, MPFR_RNDN); };
        return mpfr_get_d(r27716, MPFR_RNDN);
}

