#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 r10928 = a;
        float r10929 = x;
        float r10930 = r10928 * r10929;
        float r10931 = exp(r10930);
        float r10932 = 1;
        float r10933 = r10931 - r10932;
        return r10933;
}

double f_id(double a, double x) {
        double r10934 = a;
        double r10935 = x;
        double r10936 = r10934 * r10935;
        double r10937 = exp(r10936);
        double r10938 = 1;
        double r10939 = r10937 - r10938;
        return r10939;
}


double f_of(float a, float x) {
        float r10940 = x;
        float r10941 = a;
        float r10942 = r10940 * r10941;
        float r10943 = expm1(r10942);
        return r10943;
}

double f_od(double a, double x) {
        double r10944 = x;
        double r10945 = a;
        double r10946 = r10944 * r10945;
        double r10947 = expm1(r10946);
        return r10947;
}

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 r10948, r10949, r10950, r10951, r10952, r10953;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10948);
        mpfr_init(r10949);
        mpfr_init(r10950);
        mpfr_init(r10951);
        mpfr_init_set_str(r10952, "1", 10, MPFR_RNDN);
        mpfr_init(r10953);
}

double f_im(double a, double x) {
        mpfr_set_d(r10948, a, MPFR_RNDN);
        mpfr_set_d(r10949, x, MPFR_RNDN);
        mpfr_mul(r10950, r10948, r10949, MPFR_RNDN);
        mpfr_exp(r10951, r10950, MPFR_RNDN);
        ;
        mpfr_sub(r10953, r10951, r10952, MPFR_RNDN);
        return mpfr_get_d(r10953, MPFR_RNDN);
}

static mpfr_t r10954, r10955, r10956, r10957;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10954);
        mpfr_init(r10955);
        mpfr_init(r10956);
        mpfr_init(r10957);
}

double f_fm(double a, double x) {
        mpfr_set_d(r10954, x, MPFR_RNDN);
        mpfr_set_d(r10955, a, MPFR_RNDN);
        mpfr_mul(r10956, r10954, r10955, MPFR_RNDN);
        mpfr_expm1(r10957, r10956, MPFR_RNDN);
        return mpfr_get_d(r10957, MPFR_RNDN);
}

static mpfr_t r10958, r10959, r10960, r10961;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10958);
        mpfr_init(r10959);
        mpfr_init(r10960);
        mpfr_init(r10961);
}

double f_dm(double a, double x) {
        mpfr_set_d(r10958, x, MPFR_RNDN);
        mpfr_set_d(r10959, a, MPFR_RNDN);
        mpfr_mul(r10960, r10958, r10959, MPFR_RNDN);
        mpfr_expm1(r10961, r10960, MPFR_RNDN);
        return mpfr_get_d(r10961, MPFR_RNDN);
}

