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

char *name = "expax (section 3.5)";

double f_if(float a, float x) {
        float r26724 = a;
        float r26725 = x;
        float r26726 = r26724 * r26725;
        float r26727 = exp(r26726);
        float r26728 = 1;
        float r26729 = r26727 - r26728;
        return r26729;
}

double f_id(double a, double x) {
        double r26730 = a;
        double r26731 = x;
        double r26732 = r26730 * r26731;
        double r26733 = exp(r26732);
        double r26734 = 1;
        double r26735 = r26733 - r26734;
        return r26735;
}


double f_of(float a, float x) {
        float r26736 = x;
        float r26737 = a;
        float r26738 = r26736 * r26737;
        float r26739 = expm1(r26738);
        return r26739;
}

double f_od(double a, double x) {
        double r26740 = x;
        double r26741 = a;
        double r26742 = r26740 * r26741;
        double r26743 = expm1(r26742);
        return r26743;
}

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 r26744, r26745, r26746, r26747, r26748, r26749;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26744);
        mpfr_init(r26745);
        mpfr_init(r26746);
        mpfr_init(r26747);
        mpfr_init_set_str(r26748, "1", 10, MPFR_RNDN);
        mpfr_init(r26749);
}

double f_im(double a, double x) {
        mpfr_set_d(r26744, a, MPFR_RNDN);
        mpfr_set_d(r26745, x, MPFR_RNDN);
        mpfr_mul(r26746, r26744, r26745, MPFR_RNDN);
        mpfr_exp(r26747, r26746, MPFR_RNDN);
        ;
        mpfr_sub(r26749, r26747, r26748, MPFR_RNDN);
        return mpfr_get_d(r26749, MPFR_RNDN);
}

static mpfr_t r26750, r26751, r26752, r26753;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26750);
        mpfr_init(r26751);
        mpfr_init(r26752);
        mpfr_init(r26753);
}

double f_fm(double a, double x) {
        mpfr_set_d(r26750, x, MPFR_RNDN);
        mpfr_set_d(r26751, a, MPFR_RNDN);
        mpfr_mul(r26752, r26750, r26751, MPFR_RNDN);
        mpfr_expm1(r26753, r26752, MPFR_RNDN);
        return mpfr_get_d(r26753, MPFR_RNDN);
}

static mpfr_t r26754, r26755, r26756, r26757;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26754);
        mpfr_init(r26755);
        mpfr_init(r26756);
        mpfr_init(r26757);
}

double f_dm(double a, double x) {
        mpfr_set_d(r26754, x, MPFR_RNDN);
        mpfr_set_d(r26755, a, MPFR_RNDN);
        mpfr_mul(r26756, r26754, r26755, MPFR_RNDN);
        mpfr_expm1(r26757, r26756, MPFR_RNDN);
        return mpfr_get_d(r26757, MPFR_RNDN);
}

