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

char *name = "NMSE example 3.1";

double f_if(float x) {
        float r28402 = x;
        float r28403 = 1.0f;
        float r28404 = r28402 + r28403;
        float r28405 = sqrt(r28404);
        float r28406 = sqrt(r28402);
        float r28407 = r28405 - r28406;
        return r28407;
}

double f_id(double x) {
        double r28408 = x;
        double r28409 = 1.0;
        double r28410 = r28408 + r28409;
        double r28411 = sqrt(r28410);
        double r28412 = sqrt(r28408);
        double r28413 = r28411 - r28412;
        return r28413;
}


double f_of(float x) {
        float r28414 = 1.0f;
        float r28415 = x;
        float r28416 = r28415 + r28414;
        float r28417 = sqrt(r28416);
        float r28418 = sqrt(r28415);
        float r28419 = r28417 + r28418;
        float r28420 = r28414 / r28419;
        return r28420;
}

double f_od(double x) {
        double r28421 = 1.0;
        double r28422 = x;
        double r28423 = r28422 + r28421;
        double r28424 = sqrt(r28423);
        double r28425 = sqrt(r28422);
        double r28426 = r28424 + r28425;
        double r28427 = r28421 / r28426;
        return r28427;
}

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 r28428, r28429, r28430, r28431, r28432, r28433;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28428);
        mpfr_init_set_str(r28429, "1", 10, MPFR_RNDN);
        mpfr_init(r28430);
        mpfr_init(r28431);
        mpfr_init(r28432);
        mpfr_init(r28433);
}

double f_im(double x) {
        mpfr_set_d(r28428, x, MPFR_RNDN);
        ;
        mpfr_add(r28430, r28428, r28429, MPFR_RNDN);
        mpfr_sqrt(r28431, r28430, MPFR_RNDN);
        mpfr_sqrt(r28432, r28428, MPFR_RNDN);
        mpfr_sub(r28433, r28431, r28432, MPFR_RNDN);
        return mpfr_get_d(r28433, MPFR_RNDN);
}

static mpfr_t r28434, r28435, r28436, r28437, r28438, r28439, r28440;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r28434, "1", 10, MPFR_RNDN);
        mpfr_init(r28435);
        mpfr_init(r28436);
        mpfr_init(r28437);
        mpfr_init(r28438);
        mpfr_init(r28439);
        mpfr_init(r28440);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r28435, x, MPFR_RNDN);
        mpfr_add(r28436, r28435, r28434, MPFR_RNDN);
        mpfr_sqrt(r28437, r28436, MPFR_RNDN);
        mpfr_sqrt(r28438, r28435, MPFR_RNDN);
        mpfr_add(r28439, r28437, r28438, MPFR_RNDN);
        mpfr_div(r28440, r28434, r28439, MPFR_RNDN);
        return mpfr_get_d(r28440, MPFR_RNDN);
}

static mpfr_t r28441, r28442, r28443, r28444, r28445, r28446, r28447;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r28441, "1", 10, MPFR_RNDN);
        mpfr_init(r28442);
        mpfr_init(r28443);
        mpfr_init(r28444);
        mpfr_init(r28445);
        mpfr_init(r28446);
        mpfr_init(r28447);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r28442, x, MPFR_RNDN);
        mpfr_add(r28443, r28442, r28441, MPFR_RNDN);
        mpfr_sqrt(r28444, r28443, MPFR_RNDN);
        mpfr_sqrt(r28445, r28442, MPFR_RNDN);
        mpfr_add(r28446, r28444, r28445, MPFR_RNDN);
        mpfr_div(r28447, r28441, r28446, MPFR_RNDN);
        return mpfr_get_d(r28447, MPFR_RNDN);
}

