#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 r27573 = x;
        float r27574 = r27573 * r27573;
        float r27575 = 1;
        float r27576 = r27574 + r27575;
        float r27577 = sqrt(r27576);
        float r27578 = r27573 + r27577;
        float r27579 = log(r27578);
        return r27579;
}

double f_id(double x) {
        double r27580 = x;
        double r27581 = r27580 * r27580;
        double r27582 = 1;
        double r27583 = r27581 + r27582;
        double r27584 = sqrt(r27583);
        double r27585 = r27580 + r27584;
        double r27586 = log(r27585);
        return r27586;
}


double f_of(float x) {
        float r27587 = x;
        float r27588 = -1.3445258765965727e+154;
        bool r27589 = r27587 <= r27588;
        float r27590 = 1/8;
        float r27591 = r27590 / r27587;
        float r27592 = r27587 * r27587;
        float r27593 = r27591 / r27592;
        float r27594 = 1/3;
        float r27595 = r27594 + r27594;
        float r27596 = pow(r27593, r27595);
        float r27597 = cbrt(r27593);
        float r27598 = r27596 * r27597;
        float r27599 = 1/2;
        float r27600 = r27599 / r27587;
        float r27601 = r27598 - r27600;
        float r27602 = log(r27601);
        float r27603 = 63.30440714117896;
        bool r27604 = r27587 <= r27603;
        float r27605 = 1;
        float r27606 = -r27605;
        float r27607 = r27592 + r27605;
        float r27608 = sqrt(r27607);
        float r27609 = r27587 - r27608;
        float r27610 = r27606 / r27609;
        float r27611 = log(r27610);
        float r27612 = r27587 + r27587;
        float r27613 = r27612 + r27600;
        float r27614 = r27613 - r27593;
        float r27615 = log(r27614);
        float r27616 = r27604 ? r27611 : r27615;
        float r27617 = r27589 ? r27602 : r27616;
        return r27617;
}

double f_od(double x) {
        double r27618 = x;
        double r27619 = -1.3445258765965727e+154;
        bool r27620 = r27618 <= r27619;
        double r27621 = 1/8;
        double r27622 = r27621 / r27618;
        double r27623 = r27618 * r27618;
        double r27624 = r27622 / r27623;
        double r27625 = 1/3;
        double r27626 = r27625 + r27625;
        double r27627 = pow(r27624, r27626);
        double r27628 = cbrt(r27624);
        double r27629 = r27627 * r27628;
        double r27630 = 1/2;
        double r27631 = r27630 / r27618;
        double r27632 = r27629 - r27631;
        double r27633 = log(r27632);
        double r27634 = 63.30440714117896;
        bool r27635 = r27618 <= r27634;
        double r27636 = 1;
        double r27637 = -r27636;
        double r27638 = r27623 + r27636;
        double r27639 = sqrt(r27638);
        double r27640 = r27618 - r27639;
        double r27641 = r27637 / r27640;
        double r27642 = log(r27641);
        double r27643 = r27618 + r27618;
        double r27644 = r27643 + r27631;
        double r27645 = r27644 - r27624;
        double r27646 = log(r27645);
        double r27647 = r27635 ? r27642 : r27646;
        double r27648 = r27620 ? r27633 : r27647;
        return r27648;
}

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 r27649, r27650, r27651, r27652, r27653, r27654, r27655;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27649);
        mpfr_init(r27650);
        mpfr_init_set_str(r27651, "1", 10, MPFR_RNDN);
        mpfr_init(r27652);
        mpfr_init(r27653);
        mpfr_init(r27654);
        mpfr_init(r27655);
}

double f_im(double x) {
        mpfr_set_d(r27649, x, MPFR_RNDN);
        mpfr_mul(r27650, r27649, r27649, MPFR_RNDN);
        ;
        mpfr_add(r27652, r27650, r27651, MPFR_RNDN);
        mpfr_sqrt(r27653, r27652, MPFR_RNDN);
        mpfr_add(r27654, r27649, r27653, MPFR_RNDN);
        mpfr_log(r27655, r27654, MPFR_RNDN);
        return mpfr_get_d(r27655, MPFR_RNDN);
}

static mpfr_t 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, r27683, r27684, r27685, r27686;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27656);
        mpfr_init_set_str(r27657, "-1.3445258765965727e+154", 10, MPFR_RNDN);
        mpfr_init(r27658);
        mpfr_init_set_str(r27659, "1/8", 10, MPFR_RNDN);
        mpfr_init(r27660);
        mpfr_init(r27661);
        mpfr_init(r27662);
        mpfr_init_set_str(r27663, "1/3", 10, MPFR_RNDN);
        mpfr_init(r27664);
        mpfr_init(r27665);
        mpfr_init(r27666);
        mpfr_init(r27667);
        mpfr_init_set_str(r27668, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27669);
        mpfr_init(r27670);
        mpfr_init(r27671);
        mpfr_init_set_str(r27672, "63.30440714117896", 10, MPFR_RNDN);
        mpfr_init(r27673);
        mpfr_init_set_str(r27674, "1", 10, MPFR_RNDN);
        mpfr_init(r27675);
        mpfr_init(r27676);
        mpfr_init(r27677);
        mpfr_init(r27678);
        mpfr_init(r27679);
        mpfr_init(r27680);
        mpfr_init(r27681);
        mpfr_init(r27682);
        mpfr_init(r27683);
        mpfr_init(r27684);
        mpfr_init(r27685);
        mpfr_init(r27686);
}

double f_fm(double x) {
        mpfr_set_d(r27656, x, MPFR_RNDN);
        ;
        mpfr_set_si(r27658, mpfr_cmp(r27656, r27657) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27660, r27659, r27656, MPFR_RNDN);
        mpfr_mul(r27661, r27656, r27656, MPFR_RNDN);
        mpfr_div(r27662, r27660, r27661, MPFR_RNDN);
        ;
        mpfr_add(r27664, r27663, r27663, MPFR_RNDN);
        mpfr_pow(r27665, r27662, r27664, MPFR_RNDN);
        mpfr_cbrt(r27666, r27662, MPFR_RNDN);
        mpfr_mul(r27667, r27665, r27666, MPFR_RNDN);
        ;
        mpfr_div(r27669, r27668, r27656, MPFR_RNDN);
        mpfr_sub(r27670, r27667, r27669, MPFR_RNDN);
        mpfr_log(r27671, r27670, MPFR_RNDN);
        ;
        mpfr_set_si(r27673, mpfr_cmp(r27656, r27672) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r27675, r27674, MPFR_RNDN);
        mpfr_add(r27676, r27661, r27674, MPFR_RNDN);
        mpfr_sqrt(r27677, r27676, MPFR_RNDN);
        mpfr_sub(r27678, r27656, r27677, MPFR_RNDN);
        mpfr_div(r27679, r27675, r27678, MPFR_RNDN);
        mpfr_log(r27680, r27679, MPFR_RNDN);
        mpfr_add(r27681, r27656, r27656, MPFR_RNDN);
        mpfr_add(r27682, r27681, r27669, MPFR_RNDN);
        mpfr_sub(r27683, r27682, r27662, MPFR_RNDN);
        mpfr_log(r27684, r27683, MPFR_RNDN);
        if (mpfr_get_si(r27673, MPFR_RNDN)) { mpfr_set(r27685, r27680, MPFR_RNDN); } else { mpfr_set(r27685, r27684, MPFR_RNDN); };
        if (mpfr_get_si(r27658, MPFR_RNDN)) { mpfr_set(r27686, r27671, MPFR_RNDN); } else { mpfr_set(r27686, r27685, MPFR_RNDN); };
        return mpfr_get_d(r27686, MPFR_RNDN);
}

static mpfr_t 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, r27717;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27687);
        mpfr_init_set_str(r27688, "-1.3445258765965727e+154", 10, MPFR_RNDN);
        mpfr_init(r27689);
        mpfr_init_set_str(r27690, "1/8", 10, MPFR_RNDN);
        mpfr_init(r27691);
        mpfr_init(r27692);
        mpfr_init(r27693);
        mpfr_init_set_str(r27694, "1/3", 10, MPFR_RNDN);
        mpfr_init(r27695);
        mpfr_init(r27696);
        mpfr_init(r27697);
        mpfr_init(r27698);
        mpfr_init_set_str(r27699, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27700);
        mpfr_init(r27701);
        mpfr_init(r27702);
        mpfr_init_set_str(r27703, "63.30440714117896", 10, MPFR_RNDN);
        mpfr_init(r27704);
        mpfr_init_set_str(r27705, "1", 10, MPFR_RNDN);
        mpfr_init(r27706);
        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);
        mpfr_init(r27717);
}

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

