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

char *name = "NMSE example 3.6";

double f_if(float x) {
        float r5320685 = 1.0f;
        float r5320686 = x;
        float r5320687 = sqrt(r5320686);
        float r5320688 = r5320685 / r5320687;
        float r5320689 = r5320686 + r5320685;
        float r5320690 = sqrt(r5320689);
        float r5320691 = r5320685 / r5320690;
        float r5320692 = r5320688 - r5320691;
        return r5320692;
}

double f_id(double x) {
        double r5320693 = 1.0;
        double r5320694 = x;
        double r5320695 = sqrt(r5320694);
        double r5320696 = r5320693 / r5320695;
        double r5320697 = r5320694 + r5320693;
        double r5320698 = sqrt(r5320697);
        double r5320699 = r5320693 / r5320698;
        double r5320700 = r5320696 - r5320699;
        return r5320700;
}


double f_of(float x) {
        float r5320701 = 1.0f;
        float r5320702 = x;
        float r5320703 = r5320701 + r5320702;
        float r5320704 = sqrt(r5320703);
        float r5320705 = r5320702 / r5320704;
        float r5320706 = sqrt(r5320702);
        float r5320707 = r5320702 / r5320706;
        float r5320708 = r5320705 + r5320707;
        float r5320709 = r5320703 * r5320708;
        float r5320710 = r5320701 / r5320709;
        return r5320710;
}

double f_od(double x) {
        double r5320711 = 1.0;
        double r5320712 = x;
        double r5320713 = r5320711 + r5320712;
        double r5320714 = sqrt(r5320713);
        double r5320715 = r5320712 / r5320714;
        double r5320716 = sqrt(r5320712);
        double r5320717 = r5320712 / r5320716;
        double r5320718 = r5320715 + r5320717;
        double r5320719 = r5320713 * r5320718;
        double r5320720 = r5320711 / r5320719;
        return r5320720;
}

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 r5320721, r5320722, r5320723, r5320724, r5320725, r5320726, r5320727, r5320728;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r5320721, "1", 10, MPFR_RNDN);
        mpfr_init(r5320722);
        mpfr_init(r5320723);
        mpfr_init(r5320724);
        mpfr_init(r5320725);
        mpfr_init(r5320726);
        mpfr_init(r5320727);
        mpfr_init(r5320728);
}

double f_im(double x) {
        ;
        mpfr_set_d(r5320722, x, MPFR_RNDN);
        mpfr_sqrt(r5320723, r5320722, MPFR_RNDN);
        mpfr_div(r5320724, r5320721, r5320723, MPFR_RNDN);
        mpfr_add(r5320725, r5320722, r5320721, MPFR_RNDN);
        mpfr_sqrt(r5320726, r5320725, MPFR_RNDN);
        mpfr_div(r5320727, r5320721, r5320726, MPFR_RNDN);
        mpfr_sub(r5320728, r5320724, r5320727, MPFR_RNDN);
        return mpfr_get_d(r5320728, MPFR_RNDN);
}

static mpfr_t r5320729, r5320730, r5320731, r5320732, r5320733, r5320734, r5320735, r5320736, r5320737, r5320738;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r5320729, "1", 10, MPFR_RNDN);
        mpfr_init(r5320730);
        mpfr_init(r5320731);
        mpfr_init(r5320732);
        mpfr_init(r5320733);
        mpfr_init(r5320734);
        mpfr_init(r5320735);
        mpfr_init(r5320736);
        mpfr_init(r5320737);
        mpfr_init(r5320738);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r5320730, x, MPFR_RNDN);
        mpfr_add(r5320731, r5320729, r5320730, MPFR_RNDN);
        mpfr_sqrt(r5320732, r5320731, MPFR_RNDN);
        mpfr_div(r5320733, r5320730, r5320732, MPFR_RNDN);
        mpfr_sqrt(r5320734, r5320730, MPFR_RNDN);
        mpfr_div(r5320735, r5320730, r5320734, MPFR_RNDN);
        mpfr_add(r5320736, r5320733, r5320735, MPFR_RNDN);
        mpfr_mul(r5320737, r5320731, r5320736, MPFR_RNDN);
        mpfr_div(r5320738, r5320729, r5320737, MPFR_RNDN);
        return mpfr_get_d(r5320738, MPFR_RNDN);
}

static mpfr_t r5320739, r5320740, r5320741, r5320742, r5320743, r5320744, r5320745, r5320746, r5320747, r5320748;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r5320739, "1", 10, MPFR_RNDN);
        mpfr_init(r5320740);
        mpfr_init(r5320741);
        mpfr_init(r5320742);
        mpfr_init(r5320743);
        mpfr_init(r5320744);
        mpfr_init(r5320745);
        mpfr_init(r5320746);
        mpfr_init(r5320747);
        mpfr_init(r5320748);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r5320740, x, MPFR_RNDN);
        mpfr_add(r5320741, r5320739, r5320740, MPFR_RNDN);
        mpfr_sqrt(r5320742, r5320741, MPFR_RNDN);
        mpfr_div(r5320743, r5320740, r5320742, MPFR_RNDN);
        mpfr_sqrt(r5320744, r5320740, MPFR_RNDN);
        mpfr_div(r5320745, r5320740, r5320744, MPFR_RNDN);
        mpfr_add(r5320746, r5320743, r5320745, MPFR_RNDN);
        mpfr_mul(r5320747, r5320741, r5320746, MPFR_RNDN);
        mpfr_div(r5320748, r5320739, r5320747, MPFR_RNDN);
        return mpfr_get_d(r5320748, MPFR_RNDN);
}

