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

char *name = "NMSE problem 3.3.7";

double f_if(float x) {
        float r26175 = x;
        float r26176 = exp(r26175);
        float r26177 = 2.0f;
        float r26178 = r26176 - r26177;
        float r26179 = -r26175;
        float r26180 = exp(r26179);
        float r26181 = r26178 + r26180;
        return r26181;
}

double f_id(double x) {
        double r26182 = x;
        double r26183 = exp(r26182);
        double r26184 = 2.0;
        double r26185 = r26183 - r26184;
        double r26186 = -r26182;
        double r26187 = exp(r26186);
        double r26188 = r26185 + r26187;
        return r26188;
}


double f_of(float x) {
        float r26189 = x;
        float r26190 = r26189 * r26189;
        float r26191 = 0.08333333333333333f;
        float r26192 = 4.0f;
        float r26193 = pow(r26189, r26192);
        float r26194 = r26191 * r26193;
        float r26195 = 0.002777777777777778f;
        float r26196 = 6.0f;
        float r26197 = pow(r26189, r26196);
        float r26198 = r26195 * r26197;
        float r26199 = r26194 + r26198;
        float r26200 = r26190 + r26199;
        return r26200;
}

double f_od(double x) {
        double r26201 = x;
        double r26202 = r26201 * r26201;
        double r26203 = 0.08333333333333333;
        double r26204 = 4.0;
        double r26205 = pow(r26201, r26204);
        double r26206 = r26203 * r26205;
        double r26207 = 0.002777777777777778;
        double r26208 = 6.0;
        double r26209 = pow(r26201, r26208);
        double r26210 = r26207 * r26209;
        double r26211 = r26206 + r26210;
        double r26212 = r26202 + r26211;
        return r26212;
}

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 r26213, r26214, r26215, r26216, r26217, r26218, r26219;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r26213);
        mpfr_init(r26214);
        mpfr_init_set_str(r26215, "2", 10, MPFR_RNDN);
        mpfr_init(r26216);
        mpfr_init(r26217);
        mpfr_init(r26218);
        mpfr_init(r26219);
}

double f_im(double x) {
        mpfr_set_d(r26213, x, MPFR_RNDN);
        mpfr_exp(r26214, r26213, MPFR_RNDN);
        ;
        mpfr_sub(r26216, r26214, r26215, MPFR_RNDN);
        mpfr_neg(r26217, r26213, MPFR_RNDN);
        mpfr_exp(r26218, r26217, MPFR_RNDN);
        mpfr_add(r26219, r26216, r26218, MPFR_RNDN);
        return mpfr_get_d(r26219, MPFR_RNDN);
}

static mpfr_t r26220, r26221, r26222, r26223, r26224, r26225, r26226, r26227, r26228, r26229, r26230, r26231;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r26220);
        mpfr_init(r26221);
        mpfr_init_set_str(r26222, "1/12", 10, MPFR_RNDN);
        mpfr_init_set_str(r26223, "4", 10, MPFR_RNDN);
        mpfr_init(r26224);
        mpfr_init(r26225);
        mpfr_init_set_str(r26226, "1/360", 10, MPFR_RNDN);
        mpfr_init_set_str(r26227, "6", 10, MPFR_RNDN);
        mpfr_init(r26228);
        mpfr_init(r26229);
        mpfr_init(r26230);
        mpfr_init(r26231);
}

double f_fm(double x) {
        mpfr_set_d(r26220, x, MPFR_RNDN);
        mpfr_sqr(r26221, r26220, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r26224, r26220, r26223, MPFR_RNDN);
        mpfr_mul(r26225, r26222, r26224, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r26228, r26220, r26227, MPFR_RNDN);
        mpfr_mul(r26229, r26226, r26228, MPFR_RNDN);
        mpfr_add(r26230, r26225, r26229, MPFR_RNDN);
        mpfr_add(r26231, r26221, r26230, MPFR_RNDN);
        return mpfr_get_d(r26231, MPFR_RNDN);
}

static mpfr_t r26232, r26233, r26234, r26235, r26236, r26237, r26238, r26239, r26240, r26241, r26242, r26243;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r26232);
        mpfr_init(r26233);
        mpfr_init_set_str(r26234, "1/12", 10, MPFR_RNDN);
        mpfr_init_set_str(r26235, "4", 10, MPFR_RNDN);
        mpfr_init(r26236);
        mpfr_init(r26237);
        mpfr_init_set_str(r26238, "1/360", 10, MPFR_RNDN);
        mpfr_init_set_str(r26239, "6", 10, MPFR_RNDN);
        mpfr_init(r26240);
        mpfr_init(r26241);
        mpfr_init(r26242);
        mpfr_init(r26243);
}

double f_dm(double x) {
        mpfr_set_d(r26232, x, MPFR_RNDN);
        mpfr_sqr(r26233, r26232, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r26236, r26232, r26235, MPFR_RNDN);
        mpfr_mul(r26237, r26234, r26236, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r26240, r26232, r26239, MPFR_RNDN);
        mpfr_mul(r26241, r26238, r26240, MPFR_RNDN);
        mpfr_add(r26242, r26237, r26241, MPFR_RNDN);
        mpfr_add(r26243, r26233, r26242, MPFR_RNDN);
        return mpfr_get_d(r26243, MPFR_RNDN);
}

