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

char *name = "NMSE problem 3.3.1";

double f_if(float x) {
        float r5353153 = 1.0f;
        float r5353154 = x;
        float r5353155 = r5353154 + r5353153;
        float r5353156 = r5353153 / r5353155;
        float r5353157 = r5353153 / r5353154;
        float r5353158 = r5353156 - r5353157;
        return r5353158;
}

double f_id(double x) {
        double r5353159 = 1.0;
        double r5353160 = x;
        double r5353161 = r5353160 + r5353159;
        double r5353162 = r5353159 / r5353161;
        double r5353163 = r5353159 / r5353160;
        double r5353164 = r5353162 - r5353163;
        return r5353164;
}


double f_of(float x) {
        float r5353165 = -1.0f;
        float r5353166 = x;
        float r5353167 = r5353165 / r5353166;
        float r5353168 = 1.0f;
        float r5353169 = r5353166 + r5353168;
        float r5353170 = r5353167 / r5353169;
        return r5353170;
}

double f_od(double x) {
        double r5353171 = -1.0;
        double r5353172 = x;
        double r5353173 = r5353171 / r5353172;
        double r5353174 = 1.0;
        double r5353175 = r5353172 + r5353174;
        double r5353176 = r5353173 / r5353175;
        return r5353176;
}

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 r5353177, r5353178, r5353179, r5353180, r5353181, r5353182;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r5353177, "1", 10, MPFR_RNDN);
        mpfr_init(r5353178);
        mpfr_init(r5353179);
        mpfr_init(r5353180);
        mpfr_init(r5353181);
        mpfr_init(r5353182);
}

double f_im(double x) {
        ;
        mpfr_set_d(r5353178, x, MPFR_RNDN);
        mpfr_add(r5353179, r5353178, r5353177, MPFR_RNDN);
        mpfr_div(r5353180, r5353177, r5353179, MPFR_RNDN);
        mpfr_div(r5353181, r5353177, r5353178, MPFR_RNDN);
        mpfr_sub(r5353182, r5353180, r5353181, MPFR_RNDN);
        return mpfr_get_d(r5353182, MPFR_RNDN);
}

static mpfr_t r5353183, r5353184, r5353185, r5353186, r5353187, r5353188;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r5353183, "-1", 10, MPFR_RNDN);
        mpfr_init(r5353184);
        mpfr_init(r5353185);
        mpfr_init_set_str(r5353186, "1", 10, MPFR_RNDN);
        mpfr_init(r5353187);
        mpfr_init(r5353188);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r5353184, x, MPFR_RNDN);
        mpfr_div(r5353185, r5353183, r5353184, MPFR_RNDN);
        ;
        mpfr_add(r5353187, r5353184, r5353186, MPFR_RNDN);
        mpfr_div(r5353188, r5353185, r5353187, MPFR_RNDN);
        return mpfr_get_d(r5353188, MPFR_RNDN);
}

static mpfr_t r5353189, r5353190, r5353191, r5353192, r5353193, r5353194;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r5353189, "-1", 10, MPFR_RNDN);
        mpfr_init(r5353190);
        mpfr_init(r5353191);
        mpfr_init_set_str(r5353192, "1", 10, MPFR_RNDN);
        mpfr_init(r5353193);
        mpfr_init(r5353194);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r5353190, x, MPFR_RNDN);
        mpfr_div(r5353191, r5353189, r5353190, MPFR_RNDN);
        ;
        mpfr_add(r5353193, r5353190, r5353192, MPFR_RNDN);
        mpfr_div(r5353194, r5353191, r5353193, MPFR_RNDN);
        return mpfr_get_d(r5353194, MPFR_RNDN);
}

