#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 r29348 = x;
        float r29349 = 1;
        float r29350 = r29348 + r29349;
        float r29351 = sqrt(r29350);
        float r29352 = sqrt(r29348);
        float r29353 = r29351 - r29352;
        return r29353;
}

double f_id(double x) {
        double r29354 = x;
        double r29355 = 1;
        double r29356 = r29354 + r29355;
        double r29357 = sqrt(r29356);
        double r29358 = sqrt(r29354);
        double r29359 = r29357 - r29358;
        return r29359;
}


double f_of(float x) {
        float r29360 = 1;
        float r29361 = x;
        float r29362 = r29361 + r29360;
        float r29363 = sqrt(r29362);
        float r29364 = sqrt(r29361);
        float r29365 = r29363 + r29364;
        float r29366 = r29360 / r29365;
        return r29366;
}

double f_od(double x) {
        double r29367 = 1;
        double r29368 = x;
        double r29369 = r29368 + r29367;
        double r29370 = sqrt(r29369);
        double r29371 = sqrt(r29368);
        double r29372 = r29370 + r29371;
        double r29373 = r29367 / r29372;
        return r29373;
}

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 r29374, r29375, r29376, r29377, r29378, r29379;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r29374);
        mpfr_init_set_str(r29375, "1", 10, MPFR_RNDN);
        mpfr_init(r29376);
        mpfr_init(r29377);
        mpfr_init(r29378);
        mpfr_init(r29379);
}

double f_im(double x) {
        mpfr_set_d(r29374, x, MPFR_RNDN);
        ;
        mpfr_add(r29376, r29374, r29375, MPFR_RNDN);
        mpfr_sqrt(r29377, r29376, MPFR_RNDN);
        mpfr_sqrt(r29378, r29374, MPFR_RNDN);
        mpfr_sub(r29379, r29377, r29378, MPFR_RNDN);
        return mpfr_get_d(r29379, MPFR_RNDN);
}

static mpfr_t r29380, r29381, r29382, r29383, r29384, r29385, r29386;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r29380, "1", 10, MPFR_RNDN);
        mpfr_init(r29381);
        mpfr_init(r29382);
        mpfr_init(r29383);
        mpfr_init(r29384);
        mpfr_init(r29385);
        mpfr_init(r29386);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r29381, x, MPFR_RNDN);
        mpfr_add(r29382, r29381, r29380, MPFR_RNDN);
        mpfr_sqrt(r29383, r29382, MPFR_RNDN);
        mpfr_sqrt(r29384, r29381, MPFR_RNDN);
        mpfr_add(r29385, r29383, r29384, MPFR_RNDN);
        mpfr_div(r29386, r29380, r29385, MPFR_RNDN);
        return mpfr_get_d(r29386, MPFR_RNDN);
}

static mpfr_t r29387, r29388, r29389, r29390, r29391, r29392, r29393;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r29387, "1", 10, MPFR_RNDN);
        mpfr_init(r29388);
        mpfr_init(r29389);
        mpfr_init(r29390);
        mpfr_init(r29391);
        mpfr_init(r29392);
        mpfr_init(r29393);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r29388, x, MPFR_RNDN);
        mpfr_add(r29389, r29388, r29387, MPFR_RNDN);
        mpfr_sqrt(r29390, r29389, MPFR_RNDN);
        mpfr_sqrt(r29391, r29388, MPFR_RNDN);
        mpfr_add(r29392, r29390, r29391, MPFR_RNDN);
        mpfr_div(r29393, r29387, r29392, MPFR_RNDN);
        return mpfr_get_d(r29393, MPFR_RNDN);
}

