#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 r4618133 = 1.0f;
        float r4618134 = x;
        float r4618135 = r4618134 + r4618133;
        float r4618136 = r4618133 / r4618135;
        float r4618137 = r4618133 / r4618134;
        float r4618138 = r4618136 - r4618137;
        return r4618138;
}

double f_id(double x) {
        double r4618139 = 1.0;
        double r4618140 = x;
        double r4618141 = r4618140 + r4618139;
        double r4618142 = r4618139 / r4618141;
        double r4618143 = r4618139 / r4618140;
        double r4618144 = r4618142 - r4618143;
        return r4618144;
}


double f_of(float x) {
        float r4618145 = x;
        float r4618146 = -1374145471961931.2f;
        bool r4618147 = r4618145 <= r4618146;
        float r4618148 = 1.0f;
        float r4618149 = 3.0f;
        float r4618150 = pow(r4618145, r4618149);
        float r4618151 = r4618148 / r4618150;
        float r4618152 = r4618148 / r4618145;
        float r4618153 = r4618152 / r4618145;
        float r4618154 = 4.0f;
        float r4618155 = pow(r4618145, r4618154);
        float r4618156 = r4618148 / r4618155;
        float r4618157 = r4618153 + r4618156;
        float r4618158 = r4618151 - r4618157;
        float r4618159 = 15701021957088522.0f;
        bool r4618160 = r4618145 <= r4618159;
        float r4618161 = r4618148 + r4618145;
        float r4618162 = r4618145 - r4618161;
        float r4618163 = r4618145 + r4618148;
        float r4618164 = r4618163 * r4618145;
        float r4618165 = r4618162 / r4618164;
        float r4618166 = r4618160 ? r4618165 : r4618158;
        float r4618167 = r4618147 ? r4618158 : r4618166;
        return r4618167;
}

double f_od(double x) {
        double r4618168 = x;
        double r4618169 = -1374145471961931.2;
        bool r4618170 = r4618168 <= r4618169;
        double r4618171 = 1.0;
        double r4618172 = 3.0;
        double r4618173 = pow(r4618168, r4618172);
        double r4618174 = r4618171 / r4618173;
        double r4618175 = r4618171 / r4618168;
        double r4618176 = r4618175 / r4618168;
        double r4618177 = 4.0;
        double r4618178 = pow(r4618168, r4618177);
        double r4618179 = r4618171 / r4618178;
        double r4618180 = r4618176 + r4618179;
        double r4618181 = r4618174 - r4618180;
        double r4618182 = 15701021957088522.0;
        bool r4618183 = r4618168 <= r4618182;
        double r4618184 = r4618171 + r4618168;
        double r4618185 = r4618168 - r4618184;
        double r4618186 = r4618168 + r4618171;
        double r4618187 = r4618186 * r4618168;
        double r4618188 = r4618185 / r4618187;
        double r4618189 = r4618183 ? r4618188 : r4618181;
        double r4618190 = r4618170 ? r4618181 : r4618189;
        return r4618190;
}

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 r4618191, r4618192, r4618193, r4618194, r4618195, r4618196;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r4618191, "1", 10, MPFR_RNDN);
        mpfr_init(r4618192);
        mpfr_init(r4618193);
        mpfr_init(r4618194);
        mpfr_init(r4618195);
        mpfr_init(r4618196);
}

double f_im(double x) {
        ;
        mpfr_set_d(r4618192, x, MPFR_RNDN);
        mpfr_add(r4618193, r4618192, r4618191, MPFR_RNDN);
        mpfr_div(r4618194, r4618191, r4618193, MPFR_RNDN);
        mpfr_div(r4618195, r4618191, r4618192, MPFR_RNDN);
        mpfr_sub(r4618196, r4618194, r4618195, MPFR_RNDN);
        return mpfr_get_d(r4618196, MPFR_RNDN);
}

static mpfr_t r4618197, r4618198, r4618199, r4618200, r4618201, r4618202, r4618203, r4618204, r4618205, r4618206, r4618207, r4618208, r4618209, r4618210, r4618211, r4618212, r4618213, r4618214, r4618215, r4618216, r4618217, r4618218, r4618219;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4618197);
        mpfr_init_set_str(r4618198, "-1374145471961931.2", 10, MPFR_RNDN);
        mpfr_init(r4618199);
        mpfr_init_set_str(r4618200, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r4618201, "3", 10, MPFR_RNDN);
        mpfr_init(r4618202);
        mpfr_init(r4618203);
        mpfr_init(r4618204);
        mpfr_init(r4618205);
        mpfr_init_set_str(r4618206, "4", 10, MPFR_RNDN);
        mpfr_init(r4618207);
        mpfr_init(r4618208);
        mpfr_init(r4618209);
        mpfr_init(r4618210);
        mpfr_init_set_str(r4618211, "15701021957088522.0", 10, MPFR_RNDN);
        mpfr_init(r4618212);
        mpfr_init(r4618213);
        mpfr_init(r4618214);
        mpfr_init(r4618215);
        mpfr_init(r4618216);
        mpfr_init(r4618217);
        mpfr_init(r4618218);
        mpfr_init(r4618219);
}

double f_fm(double x) {
        mpfr_set_d(r4618197, x, MPFR_RNDN);
        ;
        mpfr_set_si(r4618199, mpfr_cmp(r4618197, r4618198) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4618202, r4618197, r4618201, MPFR_RNDN);
        mpfr_div(r4618203, r4618200, r4618202, MPFR_RNDN);
        mpfr_div(r4618204, r4618200, r4618197, MPFR_RNDN);
        mpfr_div(r4618205, r4618204, r4618197, MPFR_RNDN);
        ;
        mpfr_pow(r4618207, r4618197, r4618206, MPFR_RNDN);
        mpfr_div(r4618208, r4618200, r4618207, MPFR_RNDN);
        mpfr_add(r4618209, r4618205, r4618208, MPFR_RNDN);
        mpfr_sub(r4618210, r4618203, r4618209, MPFR_RNDN);
        ;
        mpfr_set_si(r4618212, mpfr_cmp(r4618197, r4618211) <= 0, MPFR_RNDN);
        mpfr_add(r4618213, r4618200, r4618197, MPFR_RNDN);
        mpfr_sub(r4618214, r4618197, r4618213, MPFR_RNDN);
        mpfr_add(r4618215, r4618197, r4618200, MPFR_RNDN);
        mpfr_mul(r4618216, r4618215, r4618197, MPFR_RNDN);
        mpfr_div(r4618217, r4618214, r4618216, MPFR_RNDN);
        if (mpfr_get_si(r4618212, MPFR_RNDN)) { mpfr_set(r4618218, r4618217, MPFR_RNDN); } else { mpfr_set(r4618218, r4618210, MPFR_RNDN); };
        if (mpfr_get_si(r4618199, MPFR_RNDN)) { mpfr_set(r4618219, r4618210, MPFR_RNDN); } else { mpfr_set(r4618219, r4618218, MPFR_RNDN); };
        return mpfr_get_d(r4618219, MPFR_RNDN);
}

static mpfr_t r4618220, r4618221, r4618222, r4618223, r4618224, r4618225, r4618226, r4618227, r4618228, r4618229, r4618230, r4618231, r4618232, r4618233, r4618234, r4618235, r4618236, r4618237, r4618238, r4618239, r4618240, r4618241, r4618242;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4618220);
        mpfr_init_set_str(r4618221, "-1374145471961931.2", 10, MPFR_RNDN);
        mpfr_init(r4618222);
        mpfr_init_set_str(r4618223, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r4618224, "3", 10, MPFR_RNDN);
        mpfr_init(r4618225);
        mpfr_init(r4618226);
        mpfr_init(r4618227);
        mpfr_init(r4618228);
        mpfr_init_set_str(r4618229, "4", 10, MPFR_RNDN);
        mpfr_init(r4618230);
        mpfr_init(r4618231);
        mpfr_init(r4618232);
        mpfr_init(r4618233);
        mpfr_init_set_str(r4618234, "15701021957088522.0", 10, MPFR_RNDN);
        mpfr_init(r4618235);
        mpfr_init(r4618236);
        mpfr_init(r4618237);
        mpfr_init(r4618238);
        mpfr_init(r4618239);
        mpfr_init(r4618240);
        mpfr_init(r4618241);
        mpfr_init(r4618242);
}

double f_dm(double x) {
        mpfr_set_d(r4618220, x, MPFR_RNDN);
        ;
        mpfr_set_si(r4618222, mpfr_cmp(r4618220, r4618221) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4618225, r4618220, r4618224, MPFR_RNDN);
        mpfr_div(r4618226, r4618223, r4618225, MPFR_RNDN);
        mpfr_div(r4618227, r4618223, r4618220, MPFR_RNDN);
        mpfr_div(r4618228, r4618227, r4618220, MPFR_RNDN);
        ;
        mpfr_pow(r4618230, r4618220, r4618229, MPFR_RNDN);
        mpfr_div(r4618231, r4618223, r4618230, MPFR_RNDN);
        mpfr_add(r4618232, r4618228, r4618231, MPFR_RNDN);
        mpfr_sub(r4618233, r4618226, r4618232, MPFR_RNDN);
        ;
        mpfr_set_si(r4618235, mpfr_cmp(r4618220, r4618234) <= 0, MPFR_RNDN);
        mpfr_add(r4618236, r4618223, r4618220, MPFR_RNDN);
        mpfr_sub(r4618237, r4618220, r4618236, MPFR_RNDN);
        mpfr_add(r4618238, r4618220, r4618223, MPFR_RNDN);
        mpfr_mul(r4618239, r4618238, r4618220, MPFR_RNDN);
        mpfr_div(r4618240, r4618237, r4618239, MPFR_RNDN);
        if (mpfr_get_si(r4618235, MPFR_RNDN)) { mpfr_set(r4618241, r4618240, MPFR_RNDN); } else { mpfr_set(r4618241, r4618233, MPFR_RNDN); };
        if (mpfr_get_si(r4618222, MPFR_RNDN)) { mpfr_set(r4618242, r4618233, MPFR_RNDN); } else { mpfr_set(r4618242, r4618241, MPFR_RNDN); };
        return mpfr_get_d(r4618242, MPFR_RNDN);
}

