#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 r48538 = x;
        float r48539 = r48538 * r48538;
        float r48540 = 1;
        float r48541 = r48539 + r48540;
        float r48542 = sqrt(r48541);
        float r48543 = r48538 + r48542;
        float r48544 = log(r48543);
        return r48544;
}

double f_id(double x) {
        double r48545 = x;
        double r48546 = r48545 * r48545;
        double r48547 = 1;
        double r48548 = r48546 + r48547;
        double r48549 = sqrt(r48548);
        double r48550 = r48545 + r48549;
        double r48551 = log(r48550);
        return r48551;
}


double f_of(float x) {
        float r48552 = x;
        float r48553 = -1.1547015897728574;
        bool r48554 = r48552 <= r48553;
        float r48555 = 1/8;
        float r48556 = r48555 / r48552;
        float r48557 = r48552 * r48552;
        float r48558 = r48556 / r48557;
        float r48559 = 1/2;
        float r48560 = r48559 / r48552;
        float r48561 = r48558 - r48560;
        float r48562 = log(r48561);
        float r48563 = 0.95385117411035;
        bool r48564 = r48552 <= r48563;
        float r48565 = 3/40;
        float r48566 = 5;
        float r48567 = pow(r48552, r48566);
        float r48568 = r48565 * r48567;
        float r48569 = r48568 + r48552;
        float r48570 = 1/6;
        float r48571 = 3;
        float r48572 = pow(r48552, r48571);
        float r48573 = r48570 * r48572;
        float r48574 = r48569 - r48573;
        float r48575 = r48552 + r48552;
        float r48576 = r48560 + r48575;
        float r48577 = r48576 - r48558;
        float r48578 = log(r48577);
        float r48579 = r48564 ? r48574 : r48578;
        float r48580 = r48554 ? r48562 : r48579;
        return r48580;
}

double f_od(double x) {
        double r48581 = x;
        double r48582 = -1.1547015897728574;
        bool r48583 = r48581 <= r48582;
        double r48584 = 1/8;
        double r48585 = r48584 / r48581;
        double r48586 = r48581 * r48581;
        double r48587 = r48585 / r48586;
        double r48588 = 1/2;
        double r48589 = r48588 / r48581;
        double r48590 = r48587 - r48589;
        double r48591 = log(r48590);
        double r48592 = 0.95385117411035;
        bool r48593 = r48581 <= r48592;
        double r48594 = 3/40;
        double r48595 = 5;
        double r48596 = pow(r48581, r48595);
        double r48597 = r48594 * r48596;
        double r48598 = r48597 + r48581;
        double r48599 = 1/6;
        double r48600 = 3;
        double r48601 = pow(r48581, r48600);
        double r48602 = r48599 * r48601;
        double r48603 = r48598 - r48602;
        double r48604 = r48581 + r48581;
        double r48605 = r48589 + r48604;
        double r48606 = r48605 - r48587;
        double r48607 = log(r48606);
        double r48608 = r48593 ? r48603 : r48607;
        double r48609 = r48583 ? r48591 : r48608;
        return r48609;
}

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 r48610, r48611, r48612, r48613, r48614, r48615, r48616;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r48610);
        mpfr_init(r48611);
        mpfr_init_set_str(r48612, "1", 10, MPFR_RNDN);
        mpfr_init(r48613);
        mpfr_init(r48614);
        mpfr_init(r48615);
        mpfr_init(r48616);
}

double f_im(double x) {
        mpfr_set_d(r48610, x, MPFR_RNDN);
        mpfr_mul(r48611, r48610, r48610, MPFR_RNDN);
        ;
        mpfr_add(r48613, r48611, r48612, MPFR_RNDN);
        mpfr_sqrt(r48614, r48613, MPFR_RNDN);
        mpfr_add(r48615, r48610, r48614, MPFR_RNDN);
        mpfr_log(r48616, r48615, MPFR_RNDN);
        return mpfr_get_d(r48616, MPFR_RNDN);
}

static mpfr_t r48617, r48618, r48619, r48620, r48621, r48622, r48623, r48624, r48625, r48626, r48627, r48628, r48629, r48630, r48631, r48632, r48633, r48634, r48635, r48636, r48637, r48638, r48639, r48640, r48641, r48642, r48643, r48644, r48645;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r48617);
        mpfr_init_set_str(r48618, "-1.1547015897728574", 10, MPFR_RNDN);
        mpfr_init(r48619);
        mpfr_init_set_str(r48620, "1/8", 10, MPFR_RNDN);
        mpfr_init(r48621);
        mpfr_init(r48622);
        mpfr_init(r48623);
        mpfr_init_set_str(r48624, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48625);
        mpfr_init(r48626);
        mpfr_init(r48627);
        mpfr_init_set_str(r48628, "0.95385117411035", 10, MPFR_RNDN);
        mpfr_init(r48629);
        mpfr_init_set_str(r48630, "3/40", 10, MPFR_RNDN);
        mpfr_init_set_str(r48631, "5", 10, MPFR_RNDN);
        mpfr_init(r48632);
        mpfr_init(r48633);
        mpfr_init(r48634);
        mpfr_init_set_str(r48635, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r48636, "3", 10, MPFR_RNDN);
        mpfr_init(r48637);
        mpfr_init(r48638);
        mpfr_init(r48639);
        mpfr_init(r48640);
        mpfr_init(r48641);
        mpfr_init(r48642);
        mpfr_init(r48643);
        mpfr_init(r48644);
        mpfr_init(r48645);
}

double f_fm(double x) {
        mpfr_set_d(r48617, x, MPFR_RNDN);
        ;
        mpfr_set_si(r48619, mpfr_cmp(r48617, r48618) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r48621, r48620, r48617, MPFR_RNDN);
        mpfr_mul(r48622, r48617, r48617, MPFR_RNDN);
        mpfr_div(r48623, r48621, r48622, MPFR_RNDN);
        ;
        mpfr_div(r48625, r48624, r48617, MPFR_RNDN);
        mpfr_sub(r48626, r48623, r48625, MPFR_RNDN);
        mpfr_log(r48627, r48626, MPFR_RNDN);
        ;
        mpfr_set_si(r48629, mpfr_cmp(r48617, r48628) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r48632, r48617, r48631, MPFR_RNDN);
        mpfr_mul(r48633, r48630, r48632, MPFR_RNDN);
        mpfr_add(r48634, r48633, r48617, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r48637, r48617, r48636, MPFR_RNDN);
        mpfr_mul(r48638, r48635, r48637, MPFR_RNDN);
        mpfr_sub(r48639, r48634, r48638, MPFR_RNDN);
        mpfr_add(r48640, r48617, r48617, MPFR_RNDN);
        mpfr_add(r48641, r48625, r48640, MPFR_RNDN);
        mpfr_sub(r48642, r48641, r48623, MPFR_RNDN);
        mpfr_log(r48643, r48642, MPFR_RNDN);
        if (mpfr_get_si(r48629, MPFR_RNDN)) { mpfr_set(r48644, r48639, MPFR_RNDN); } else { mpfr_set(r48644, r48643, MPFR_RNDN); };
        if (mpfr_get_si(r48619, MPFR_RNDN)) { mpfr_set(r48645, r48627, MPFR_RNDN); } else { mpfr_set(r48645, r48644, MPFR_RNDN); };
        return mpfr_get_d(r48645, MPFR_RNDN);
}

static mpfr_t r48646, r48647, r48648, r48649, r48650, r48651, r48652, r48653, r48654, r48655, r48656, r48657, r48658, r48659, r48660, r48661, r48662, r48663, r48664, r48665, r48666, r48667, r48668, r48669, r48670, r48671, r48672, r48673, r48674;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r48646);
        mpfr_init_set_str(r48647, "-1.1547015897728574", 10, MPFR_RNDN);
        mpfr_init(r48648);
        mpfr_init_set_str(r48649, "1/8", 10, MPFR_RNDN);
        mpfr_init(r48650);
        mpfr_init(r48651);
        mpfr_init(r48652);
        mpfr_init_set_str(r48653, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48654);
        mpfr_init(r48655);
        mpfr_init(r48656);
        mpfr_init_set_str(r48657, "0.95385117411035", 10, MPFR_RNDN);
        mpfr_init(r48658);
        mpfr_init_set_str(r48659, "3/40", 10, MPFR_RNDN);
        mpfr_init_set_str(r48660, "5", 10, MPFR_RNDN);
        mpfr_init(r48661);
        mpfr_init(r48662);
        mpfr_init(r48663);
        mpfr_init_set_str(r48664, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r48665, "3", 10, MPFR_RNDN);
        mpfr_init(r48666);
        mpfr_init(r48667);
        mpfr_init(r48668);
        mpfr_init(r48669);
        mpfr_init(r48670);
        mpfr_init(r48671);
        mpfr_init(r48672);
        mpfr_init(r48673);
        mpfr_init(r48674);
}

double f_dm(double x) {
        mpfr_set_d(r48646, x, MPFR_RNDN);
        ;
        mpfr_set_si(r48648, mpfr_cmp(r48646, r48647) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r48650, r48649, r48646, MPFR_RNDN);
        mpfr_mul(r48651, r48646, r48646, MPFR_RNDN);
        mpfr_div(r48652, r48650, r48651, MPFR_RNDN);
        ;
        mpfr_div(r48654, r48653, r48646, MPFR_RNDN);
        mpfr_sub(r48655, r48652, r48654, MPFR_RNDN);
        mpfr_log(r48656, r48655, MPFR_RNDN);
        ;
        mpfr_set_si(r48658, mpfr_cmp(r48646, r48657) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r48661, r48646, r48660, MPFR_RNDN);
        mpfr_mul(r48662, r48659, r48661, MPFR_RNDN);
        mpfr_add(r48663, r48662, r48646, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r48666, r48646, r48665, MPFR_RNDN);
        mpfr_mul(r48667, r48664, r48666, MPFR_RNDN);
        mpfr_sub(r48668, r48663, r48667, MPFR_RNDN);
        mpfr_add(r48669, r48646, r48646, MPFR_RNDN);
        mpfr_add(r48670, r48654, r48669, MPFR_RNDN);
        mpfr_sub(r48671, r48670, r48652, MPFR_RNDN);
        mpfr_log(r48672, r48671, MPFR_RNDN);
        if (mpfr_get_si(r48658, MPFR_RNDN)) { mpfr_set(r48673, r48668, MPFR_RNDN); } else { mpfr_set(r48673, r48672, MPFR_RNDN); };
        if (mpfr_get_si(r48648, MPFR_RNDN)) { mpfr_set(r48674, r48656, MPFR_RNDN); } else { mpfr_set(r48674, r48673, MPFR_RNDN); };
        return mpfr_get_d(r48674, MPFR_RNDN);
}

