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

char *name = "NMSE example 3.10";

double f_if(float x) {
        float r29291 = 1;
        float r29292 = x;
        float r29293 = r29291 - r29292;
        float r29294 = log(r29293);
        float r29295 = r29291 + r29292;
        float r29296 = log(r29295);
        float r29297 = r29294 / r29296;
        return r29297;
}

double f_id(double x) {
        double r29298 = 1;
        double r29299 = x;
        double r29300 = r29298 - r29299;
        double r29301 = log(r29300);
        double r29302 = r29298 + r29299;
        double r29303 = log(r29302);
        double r29304 = r29301 / r29303;
        return r29304;
}


double f_of(float x) {
        float r29305 = 1/2;
        float r29306 = x;
        float r29307 = 2;
        float r29308 = pow(r29306, r29307);
        float r29309 = r29305 * r29308;
        float r29310 = 1;
        float r29311 = r29310 + r29306;
        float r29312 = r29309 + r29311;
        float r29313 = -r29312;
        return r29313;
}

double f_od(double x) {
        double r29314 = 1/2;
        double r29315 = x;
        double r29316 = 2;
        double r29317 = pow(r29315, r29316);
        double r29318 = r29314 * r29317;
        double r29319 = 1;
        double r29320 = r29319 + r29315;
        double r29321 = r29318 + r29320;
        double r29322 = -r29321;
        return r29322;
}

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 r29323, r29324, r29325, r29326, r29327, r29328, r29329;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r29323, "1", 10, MPFR_RNDN);
        mpfr_init(r29324);
        mpfr_init(r29325);
        mpfr_init(r29326);
        mpfr_init(r29327);
        mpfr_init(r29328);
        mpfr_init(r29329);
}

double f_im(double x) {
        ;
        mpfr_set_d(r29324, x, MPFR_RNDN);
        mpfr_sub(r29325, r29323, r29324, MPFR_RNDN);
        mpfr_log(r29326, r29325, MPFR_RNDN);
        mpfr_add(r29327, r29323, r29324, MPFR_RNDN);
        mpfr_log(r29328, r29327, MPFR_RNDN);
        mpfr_div(r29329, r29326, r29328, MPFR_RNDN);
        return mpfr_get_d(r29329, MPFR_RNDN);
}

static mpfr_t r29330, r29331, r29332, r29333, r29334, r29335, r29336, r29337, r29338;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r29330, "1/2", 10, MPFR_RNDN);
        mpfr_init(r29331);
        mpfr_init_set_str(r29332, "2", 10, MPFR_RNDN);
        mpfr_init(r29333);
        mpfr_init(r29334);
        mpfr_init_set_str(r29335, "1", 10, MPFR_RNDN);
        mpfr_init(r29336);
        mpfr_init(r29337);
        mpfr_init(r29338);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r29331, x, MPFR_RNDN);
        ;
        mpfr_pow(r29333, r29331, r29332, MPFR_RNDN);
        mpfr_mul(r29334, r29330, r29333, MPFR_RNDN);
        ;
        mpfr_add(r29336, r29335, r29331, MPFR_RNDN);
        mpfr_add(r29337, r29334, r29336, MPFR_RNDN);
        mpfr_neg(r29338, r29337, MPFR_RNDN);
        return mpfr_get_d(r29338, MPFR_RNDN);
}

static mpfr_t r29339, r29340, r29341, r29342, r29343, r29344, r29345, r29346, r29347;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r29339, "1/2", 10, MPFR_RNDN);
        mpfr_init(r29340);
        mpfr_init_set_str(r29341, "2", 10, MPFR_RNDN);
        mpfr_init(r29342);
        mpfr_init(r29343);
        mpfr_init_set_str(r29344, "1", 10, MPFR_RNDN);
        mpfr_init(r29345);
        mpfr_init(r29346);
        mpfr_init(r29347);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r29340, x, MPFR_RNDN);
        ;
        mpfr_pow(r29342, r29340, r29341, MPFR_RNDN);
        mpfr_mul(r29343, r29339, r29342, MPFR_RNDN);
        ;
        mpfr_add(r29345, r29344, r29340, MPFR_RNDN);
        mpfr_add(r29346, r29343, r29345, MPFR_RNDN);
        mpfr_neg(r29347, r29346, MPFR_RNDN);
        return mpfr_get_d(r29347, MPFR_RNDN);
}

