#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 r4774037 = 1.0f;
        float r4774038 = x;
        float r4774039 = r4774038 + r4774037;
        float r4774040 = r4774037 / r4774039;
        float r4774041 = r4774037 / r4774038;
        float r4774042 = r4774040 - r4774041;
        return r4774042;
}

double f_id(double x) {
        double r4774043 = 1.0;
        double r4774044 = x;
        double r4774045 = r4774044 + r4774043;
        double r4774046 = r4774043 / r4774045;
        double r4774047 = r4774043 / r4774044;
        double r4774048 = r4774046 - r4774047;
        return r4774048;
}


double f_of(float x) {
        float r4774049 = x;
        float r4774050 = -8.658073314327725e-05f;
        bool r4774051 = r4774049 <= r4774050;
        float r4774052 = 1.0f;
        float r4774053 = 3.0f;
        float r4774054 = pow(r4774049, r4774053);
        float r4774055 = r4774052 / r4774054;
        float r4774056 = 4.0f;
        float r4774057 = pow(r4774049, r4774056);
        float r4774058 = r4774052 / r4774057;
        float r4774059 = 2.0f;
        float r4774060 = -r4774059;
        float r4774061 = pow(r4774049, r4774060);
        float r4774062 = r4774058 + r4774061;
        float r4774063 = r4774055 - r4774062;
        float r4774064 = 2486138704986031.0f;
        bool r4774065 = r4774049 <= r4774064;
        float r4774066 = r4774052 + r4774049;
        float r4774067 = r4774049 - r4774066;
        float r4774068 = r4774049 + r4774052;
        float r4774069 = r4774068 * r4774049;
        float r4774070 = r4774067 / r4774069;
        float r4774071 = r4774065 ? r4774070 : r4774063;
        float r4774072 = r4774051 ? r4774063 : r4774071;
        return r4774072;
}

double f_od(double x) {
        double r4774073 = x;
        double r4774074 = -8.658073314327725e-05;
        bool r4774075 = r4774073 <= r4774074;
        double r4774076 = 1.0;
        double r4774077 = 3.0;
        double r4774078 = pow(r4774073, r4774077);
        double r4774079 = r4774076 / r4774078;
        double r4774080 = 4.0;
        double r4774081 = pow(r4774073, r4774080);
        double r4774082 = r4774076 / r4774081;
        double r4774083 = 2.0;
        double r4774084 = -r4774083;
        double r4774085 = pow(r4774073, r4774084);
        double r4774086 = r4774082 + r4774085;
        double r4774087 = r4774079 - r4774086;
        double r4774088 = 2486138704986031.0;
        bool r4774089 = r4774073 <= r4774088;
        double r4774090 = r4774076 + r4774073;
        double r4774091 = r4774073 - r4774090;
        double r4774092 = r4774073 + r4774076;
        double r4774093 = r4774092 * r4774073;
        double r4774094 = r4774091 / r4774093;
        double r4774095 = r4774089 ? r4774094 : r4774087;
        double r4774096 = r4774075 ? r4774087 : r4774095;
        return r4774096;
}

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 r4774097, r4774098, r4774099, r4774100, r4774101, r4774102;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r4774097, "1", 10, MPFR_RNDN);
        mpfr_init(r4774098);
        mpfr_init(r4774099);
        mpfr_init(r4774100);
        mpfr_init(r4774101);
        mpfr_init(r4774102);
}

double f_im(double x) {
        ;
        mpfr_set_d(r4774098, x, MPFR_RNDN);
        mpfr_add(r4774099, r4774098, r4774097, MPFR_RNDN);
        mpfr_div(r4774100, r4774097, r4774099, MPFR_RNDN);
        mpfr_div(r4774101, r4774097, r4774098, MPFR_RNDN);
        mpfr_sub(r4774102, r4774100, r4774101, MPFR_RNDN);
        return mpfr_get_d(r4774102, MPFR_RNDN);
}

static mpfr_t r4774103, r4774104, r4774105, r4774106, r4774107, r4774108, r4774109, r4774110, r4774111, r4774112, r4774113, r4774114, r4774115, r4774116, r4774117, r4774118, r4774119, r4774120, r4774121, r4774122, r4774123, r4774124, r4774125, r4774126;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4774103);
        mpfr_init_set_str(r4774104, "-8.658073314327725e-05", 10, MPFR_RNDN);
        mpfr_init(r4774105);
        mpfr_init_set_str(r4774106, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r4774107, "3", 10, MPFR_RNDN);
        mpfr_init(r4774108);
        mpfr_init(r4774109);
        mpfr_init_set_str(r4774110, "4", 10, MPFR_RNDN);
        mpfr_init(r4774111);
        mpfr_init(r4774112);
        mpfr_init_set_str(r4774113, "2", 10, MPFR_RNDN);
        mpfr_init(r4774114);
        mpfr_init(r4774115);
        mpfr_init(r4774116);
        mpfr_init(r4774117);
        mpfr_init_set_str(r4774118, "2486138704986031.0", 10, MPFR_RNDN);
        mpfr_init(r4774119);
        mpfr_init(r4774120);
        mpfr_init(r4774121);
        mpfr_init(r4774122);
        mpfr_init(r4774123);
        mpfr_init(r4774124);
        mpfr_init(r4774125);
        mpfr_init(r4774126);
}

double f_fm(double x) {
        mpfr_set_d(r4774103, x, MPFR_RNDN);
        ;
        mpfr_set_si(r4774105, mpfr_cmp(r4774103, r4774104) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4774108, r4774103, r4774107, MPFR_RNDN);
        mpfr_div(r4774109, r4774106, r4774108, MPFR_RNDN);
        ;
        mpfr_pow(r4774111, r4774103, r4774110, MPFR_RNDN);
        mpfr_div(r4774112, r4774106, r4774111, MPFR_RNDN);
        ;
        mpfr_neg(r4774114, r4774113, MPFR_RNDN);
        mpfr_pow(r4774115, r4774103, r4774114, MPFR_RNDN);
        mpfr_add(r4774116, r4774112, r4774115, MPFR_RNDN);
        mpfr_sub(r4774117, r4774109, r4774116, MPFR_RNDN);
        ;
        mpfr_set_si(r4774119, mpfr_cmp(r4774103, r4774118) <= 0, MPFR_RNDN);
        mpfr_add(r4774120, r4774106, r4774103, MPFR_RNDN);
        mpfr_sub(r4774121, r4774103, r4774120, MPFR_RNDN);
        mpfr_add(r4774122, r4774103, r4774106, MPFR_RNDN);
        mpfr_mul(r4774123, r4774122, r4774103, MPFR_RNDN);
        mpfr_div(r4774124, r4774121, r4774123, MPFR_RNDN);
        if (mpfr_get_si(r4774119, MPFR_RNDN)) { mpfr_set(r4774125, r4774124, MPFR_RNDN); } else { mpfr_set(r4774125, r4774117, MPFR_RNDN); };
        if (mpfr_get_si(r4774105, MPFR_RNDN)) { mpfr_set(r4774126, r4774117, MPFR_RNDN); } else { mpfr_set(r4774126, r4774125, MPFR_RNDN); };
        return mpfr_get_d(r4774126, MPFR_RNDN);
}

static mpfr_t r4774127, r4774128, r4774129, r4774130, r4774131, r4774132, r4774133, r4774134, r4774135, r4774136, r4774137, r4774138, r4774139, r4774140, r4774141, r4774142, r4774143, r4774144, r4774145, r4774146, r4774147, r4774148, r4774149, r4774150;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4774127);
        mpfr_init_set_str(r4774128, "-8.658073314327725e-05", 10, MPFR_RNDN);
        mpfr_init(r4774129);
        mpfr_init_set_str(r4774130, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r4774131, "3", 10, MPFR_RNDN);
        mpfr_init(r4774132);
        mpfr_init(r4774133);
        mpfr_init_set_str(r4774134, "4", 10, MPFR_RNDN);
        mpfr_init(r4774135);
        mpfr_init(r4774136);
        mpfr_init_set_str(r4774137, "2", 10, MPFR_RNDN);
        mpfr_init(r4774138);
        mpfr_init(r4774139);
        mpfr_init(r4774140);
        mpfr_init(r4774141);
        mpfr_init_set_str(r4774142, "2486138704986031.0", 10, MPFR_RNDN);
        mpfr_init(r4774143);
        mpfr_init(r4774144);
        mpfr_init(r4774145);
        mpfr_init(r4774146);
        mpfr_init(r4774147);
        mpfr_init(r4774148);
        mpfr_init(r4774149);
        mpfr_init(r4774150);
}

double f_dm(double x) {
        mpfr_set_d(r4774127, x, MPFR_RNDN);
        ;
        mpfr_set_si(r4774129, mpfr_cmp(r4774127, r4774128) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4774132, r4774127, r4774131, MPFR_RNDN);
        mpfr_div(r4774133, r4774130, r4774132, MPFR_RNDN);
        ;
        mpfr_pow(r4774135, r4774127, r4774134, MPFR_RNDN);
        mpfr_div(r4774136, r4774130, r4774135, MPFR_RNDN);
        ;
        mpfr_neg(r4774138, r4774137, MPFR_RNDN);
        mpfr_pow(r4774139, r4774127, r4774138, MPFR_RNDN);
        mpfr_add(r4774140, r4774136, r4774139, MPFR_RNDN);
        mpfr_sub(r4774141, r4774133, r4774140, MPFR_RNDN);
        ;
        mpfr_set_si(r4774143, mpfr_cmp(r4774127, r4774142) <= 0, MPFR_RNDN);
        mpfr_add(r4774144, r4774130, r4774127, MPFR_RNDN);
        mpfr_sub(r4774145, r4774127, r4774144, MPFR_RNDN);
        mpfr_add(r4774146, r4774127, r4774130, MPFR_RNDN);
        mpfr_mul(r4774147, r4774146, r4774127, MPFR_RNDN);
        mpfr_div(r4774148, r4774145, r4774147, MPFR_RNDN);
        if (mpfr_get_si(r4774143, MPFR_RNDN)) { mpfr_set(r4774149, r4774148, MPFR_RNDN); } else { mpfr_set(r4774149, r4774141, MPFR_RNDN); };
        if (mpfr_get_si(r4774129, MPFR_RNDN)) { mpfr_set(r4774150, r4774141, MPFR_RNDN); } else { mpfr_set(r4774150, r4774149, MPFR_RNDN); };
        return mpfr_get_d(r4774150, MPFR_RNDN);
}

