#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "expq2 (section 3.11)";

double f_if(float x) {
        float r10709 = x;
        float r10710 = exp(r10709);
        float r10711 = 1;
        float r10712 = r10710 - r10711;
        float r10713 = r10710 / r10712;
        return r10713;
}

double f_id(double x) {
        double r10714 = x;
        double r10715 = exp(r10714);
        double r10716 = 1;
        double r10717 = r10715 - r10716;
        double r10718 = r10715 / r10717;
        return r10718;
}


double f_of(float x) {
        float r10719 = x;
        float r10720 = exp(r10719);
        float r10721 = expm1(r10719);
        float r10722 = r10720 / r10721;
        float r10723 = log1p(r10722);
        float r10724 = expm1(r10723);
        float r10725 = 34.22285332125396;
        bool r10726 = r10724 <= r10725;
        float r10727 = 1/12;
        float r10728 = 1/2;
        float r10729 = fma(r10727, r10719, r10728);
        float r10730 = cbrt(r10729);
        float r10731 = sqrt(r10729);
        float r10732 = cbrt(r10731);
        float r10733 = r10730 * r10732;
        float r10734 = r10733 * r10732;
        float r10735 = r10734 * r10730;
        float r10736 = 1;
        float r10737 = r10736 / r10719;
        float r10738 = r10735 + r10737;
        float r10739 = r10726 ? r10724 : r10738;
        return r10739;
}

double f_od(double x) {
        double r10740 = x;
        double r10741 = exp(r10740);
        double r10742 = expm1(r10740);
        double r10743 = r10741 / r10742;
        double r10744 = log1p(r10743);
        double r10745 = expm1(r10744);
        double r10746 = 34.22285332125396;
        bool r10747 = r10745 <= r10746;
        double r10748 = 1/12;
        double r10749 = 1/2;
        double r10750 = fma(r10748, r10740, r10749);
        double r10751 = cbrt(r10750);
        double r10752 = sqrt(r10750);
        double r10753 = cbrt(r10752);
        double r10754 = r10751 * r10753;
        double r10755 = r10754 * r10753;
        double r10756 = r10755 * r10751;
        double r10757 = 1;
        double r10758 = r10757 / r10740;
        double r10759 = r10756 + r10758;
        double r10760 = r10747 ? r10745 : r10759;
        return r10760;
}

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 r10761, r10762, r10763, r10764, r10765;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10761);
        mpfr_init(r10762);
        mpfr_init_set_str(r10763, "1", 10, MPFR_RNDN);
        mpfr_init(r10764);
        mpfr_init(r10765);
}

double f_im(double x) {
        mpfr_set_d(r10761, x, MPFR_RNDN);
        mpfr_exp(r10762, r10761, MPFR_RNDN);
        ;
        mpfr_sub(r10764, r10762, r10763, MPFR_RNDN);
        mpfr_div(r10765, r10762, r10764, MPFR_RNDN);
        return mpfr_get_d(r10765, MPFR_RNDN);
}

static mpfr_t r10766, r10767, r10768, r10769, r10770, r10771, r10772, r10773, r10774, r10775, r10776, r10777, r10778, r10779, r10780, r10781, r10782, r10783, r10784, r10785, r10786;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10766);
        mpfr_init(r10767);
        mpfr_init(r10768);
        mpfr_init(r10769);
        mpfr_init(r10770);
        mpfr_init(r10771);
        mpfr_init_set_str(r10772, "34.22285332125396", 10, MPFR_RNDN);
        mpfr_init(r10773);
        mpfr_init_set_str(r10774, "1/12", 10, MPFR_RNDN);
        mpfr_init_set_str(r10775, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10776);
        mpfr_init(r10777);
        mpfr_init(r10778);
        mpfr_init(r10779);
        mpfr_init(r10780);
        mpfr_init(r10781);
        mpfr_init(r10782);
        mpfr_init_set_str(r10783, "1", 10, MPFR_RNDN);
        mpfr_init(r10784);
        mpfr_init(r10785);
        mpfr_init(r10786);
}

double f_fm(double x) {
        mpfr_set_d(r10766, x, MPFR_RNDN);
        mpfr_exp(r10767, r10766, MPFR_RNDN);
        mpfr_expm1(r10768, r10766, MPFR_RNDN);
        mpfr_div(r10769, r10767, r10768, MPFR_RNDN);
        mpfr_log1p(r10770, r10769, MPFR_RNDN);
        mpfr_expm1(r10771, r10770, MPFR_RNDN);
        ;
        mpfr_set_si(r10773, mpfr_cmp(r10771, r10772) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_fma(r10776, r10774, r10766, r10775, MPFR_RNDN);
        mpfr_cbrt(r10777, r10776, MPFR_RNDN);
        mpfr_sqrt(r10778, r10776, MPFR_RNDN);
        mpfr_cbrt(r10779, r10778, MPFR_RNDN);
        mpfr_mul(r10780, r10777, r10779, MPFR_RNDN);
        mpfr_mul(r10781, r10780, r10779, MPFR_RNDN);
        mpfr_mul(r10782, r10781, r10777, MPFR_RNDN);
        ;
        mpfr_div(r10784, r10783, r10766, MPFR_RNDN);
        mpfr_add(r10785, r10782, r10784, MPFR_RNDN);
        if (mpfr_get_si(r10773, MPFR_RNDN)) { mpfr_set(r10786, r10771, MPFR_RNDN); } else { mpfr_set(r10786, r10785, MPFR_RNDN); };
        return mpfr_get_d(r10786, MPFR_RNDN);
}

static mpfr_t r10787, r10788, r10789, r10790, r10791, r10792, r10793, r10794, r10795, r10796, r10797, r10798, r10799, r10800, r10801, r10802, r10803, r10804, r10805, r10806, r10807;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10787);
        mpfr_init(r10788);
        mpfr_init(r10789);
        mpfr_init(r10790);
        mpfr_init(r10791);
        mpfr_init(r10792);
        mpfr_init_set_str(r10793, "34.22285332125396", 10, MPFR_RNDN);
        mpfr_init(r10794);
        mpfr_init_set_str(r10795, "1/12", 10, MPFR_RNDN);
        mpfr_init_set_str(r10796, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10797);
        mpfr_init(r10798);
        mpfr_init(r10799);
        mpfr_init(r10800);
        mpfr_init(r10801);
        mpfr_init(r10802);
        mpfr_init(r10803);
        mpfr_init_set_str(r10804, "1", 10, MPFR_RNDN);
        mpfr_init(r10805);
        mpfr_init(r10806);
        mpfr_init(r10807);
}

double f_dm(double x) {
        mpfr_set_d(r10787, x, MPFR_RNDN);
        mpfr_exp(r10788, r10787, MPFR_RNDN);
        mpfr_expm1(r10789, r10787, MPFR_RNDN);
        mpfr_div(r10790, r10788, r10789, MPFR_RNDN);
        mpfr_log1p(r10791, r10790, MPFR_RNDN);
        mpfr_expm1(r10792, r10791, MPFR_RNDN);
        ;
        mpfr_set_si(r10794, mpfr_cmp(r10792, r10793) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_fma(r10797, r10795, r10787, r10796, MPFR_RNDN);
        mpfr_cbrt(r10798, r10797, MPFR_RNDN);
        mpfr_sqrt(r10799, r10797, MPFR_RNDN);
        mpfr_cbrt(r10800, r10799, MPFR_RNDN);
        mpfr_mul(r10801, r10798, r10800, MPFR_RNDN);
        mpfr_mul(r10802, r10801, r10800, MPFR_RNDN);
        mpfr_mul(r10803, r10802, r10798, MPFR_RNDN);
        ;
        mpfr_div(r10805, r10804, r10787, MPFR_RNDN);
        mpfr_add(r10806, r10803, r10805, MPFR_RNDN);
        if (mpfr_get_si(r10794, MPFR_RNDN)) { mpfr_set(r10807, r10792, MPFR_RNDN); } else { mpfr_set(r10807, r10806, MPFR_RNDN); };
        return mpfr_get_d(r10807, MPFR_RNDN);
}

