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

char *name = "expm1 (example 3.7)";

double f_if(float x) {
        float r10724 = x;
        float r10725 = exp(r10724);
        float r10726 = 1;
        float r10727 = r10725 - r10726;
        return r10727;
}

double f_id(double x) {
        double r10728 = x;
        double r10729 = exp(r10728);
        double r10730 = 1;
        double r10731 = r10729 - r10730;
        return r10731;
}


double f_of(float x) {
        float r10732 = 1/2;
        float r10733 = x;
        float r10734 = r10732 * r10733;
        float r10735 = exp(r10734);
        float r10736 = 1/24;
        float r10737 = exp(r10736);
        float r10738 = r10733 * r10733;
        float r10739 = pow(r10737, r10738);
        float r10740 = r10733 * r10739;
        float r10741 = r10735 * r10740;
        return r10741;
}

double f_od(double x) {
        double r10742 = 1/2;
        double r10743 = x;
        double r10744 = r10742 * r10743;
        double r10745 = exp(r10744);
        double r10746 = 1/24;
        double r10747 = exp(r10746);
        double r10748 = r10743 * r10743;
        double r10749 = pow(r10747, r10748);
        double r10750 = r10743 * r10749;
        double r10751 = r10745 * r10750;
        return r10751;
}

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 r10752, r10753, r10754, r10755;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10752);
        mpfr_init(r10753);
        mpfr_init_set_str(r10754, "1", 10, MPFR_RNDN);
        mpfr_init(r10755);
}

double f_im(double x) {
        mpfr_set_d(r10752, x, MPFR_RNDN);
        mpfr_exp(r10753, r10752, MPFR_RNDN);
        ;
        mpfr_sub(r10755, r10753, r10754, MPFR_RNDN);
        return mpfr_get_d(r10755, MPFR_RNDN);
}

static mpfr_t r10756, r10757, r10758, r10759, r10760, r10761, r10762, r10763, r10764, r10765;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10756, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10757);
        mpfr_init(r10758);
        mpfr_init(r10759);
        mpfr_init_set_str(r10760, "1/24", 10, MPFR_RNDN);
        mpfr_init(r10761);
        mpfr_init(r10762);
        mpfr_init(r10763);
        mpfr_init(r10764);
        mpfr_init(r10765);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r10757, x, MPFR_RNDN);
        mpfr_mul(r10758, r10756, r10757, MPFR_RNDN);
        mpfr_exp(r10759, r10758, MPFR_RNDN);
        ;
        mpfr_exp(r10761, r10760, MPFR_RNDN);
        mpfr_mul(r10762, r10757, r10757, MPFR_RNDN);
        mpfr_pow(r10763, r10761, r10762, MPFR_RNDN);
        mpfr_mul(r10764, r10757, r10763, MPFR_RNDN);
        mpfr_mul(r10765, r10759, r10764, MPFR_RNDN);
        return mpfr_get_d(r10765, MPFR_RNDN);
}

static mpfr_t r10766, r10767, r10768, r10769, r10770, r10771, r10772, r10773, r10774, r10775;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10766, "1/2", 10, MPFR_RNDN);
        mpfr_init(r10767);
        mpfr_init(r10768);
        mpfr_init(r10769);
        mpfr_init_set_str(r10770, "1/24", 10, MPFR_RNDN);
        mpfr_init(r10771);
        mpfr_init(r10772);
        mpfr_init(r10773);
        mpfr_init(r10774);
        mpfr_init(r10775);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r10767, x, MPFR_RNDN);
        mpfr_mul(r10768, r10766, r10767, MPFR_RNDN);
        mpfr_exp(r10769, r10768, MPFR_RNDN);
        ;
        mpfr_exp(r10771, r10770, MPFR_RNDN);
        mpfr_mul(r10772, r10767, r10767, MPFR_RNDN);
        mpfr_pow(r10773, r10771, r10772, MPFR_RNDN);
        mpfr_mul(r10774, r10767, r10773, MPFR_RNDN);
        mpfr_mul(r10775, r10769, r10774, MPFR_RNDN);
        return mpfr_get_d(r10775, MPFR_RNDN);
}

