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

char *name = "NMSE problem 3.3.4";

double f_if(float x) {
        float r15173 = x;
        float r15174 = 1.0f;
        float r15175 = r15173 + r15174;
        float r15176 = 3.0f;
        float r15177 = r15174 / r15176;
        float r15178 = pow(r15175, r15177);
        float r15179 = pow(r15173, r15177);
        float r15180 = r15178 - r15179;
        return r15180;
}

double f_id(double x) {
        double r15181 = x;
        double r15182 = 1.0;
        double r15183 = r15181 + r15182;
        double r15184 = 3.0;
        double r15185 = r15182 / r15184;
        double r15186 = pow(r15183, r15185);
        double r15187 = pow(r15181, r15185);
        double r15188 = r15186 - r15187;
        return r15188;
}


double f_of(float x) {
        float r15189 = x;
        float r15190 = 6.741693610388393e+16f;
        bool r15191 = r15189 <= r15190;
        float r15192 = 1.0f;
        float r15193 = r15189 + r15192;
        float r15194 = 3.0f;
        float r15195 = r15192 / r15194;
        float r15196 = pow(r15193, r15195);
        float r15197 = r15196 * (r15196 * r15196);
        float r15198 = pow(r15189, r15195);
        float r15199 = r15198 * (r15198 * r15198);
        float r15200 = r15199 * (r15199 * r15199);
        float r15201 = cbrt(r15200);
        float r15202 = r15197 - r15201;
        float r15203 = r15196 * r15196;
        float r15204 = r15198 * r15198;
        float r15205 = r15196 * r15198;
        float r15206 = r15204 + r15205;
        float r15207 = r15203 + r15206;
        float r15208 = r15202 / r15207;
        float r15209 = 4.0f;
        float r15210 = pow(r15189, r15209);
        float r15211 = r15192 / r15210;
        float r15212 = cbrt(r15211);
        float r15213 = 0.3333333333333333f;
        float r15214 = -0.3333333333333333f;
        float r15215 = pow(r15189, r15214);
        float r15216 = fma(r15212, r15213, r15215);
        float r15217 = 0.1111111111111111f;
        float r15218 = 7.0f;
        float r15219 = pow(r15189, r15218);
        float r15220 = r15192 / r15219;
        float r15221 = cbrt(r15220);
        float r15222 = r15192 / r15189;
        float r15223 = cbrt(r15222);
        float r15224 = fma(r15217, r15221, r15223);
        float r15225 = r15216 - r15224;
        float r15226 = r15191 ? r15208 : r15225;
        return r15226;
}

double f_od(double x) {
        double r15227 = x;
        double r15228 = 6.741693610388393e+16;
        bool r15229 = r15227 <= r15228;
        double r15230 = 1.0;
        double r15231 = r15227 + r15230;
        double r15232 = 3.0;
        double r15233 = r15230 / r15232;
        double r15234 = pow(r15231, r15233);
        double r15235 = r15234 * (r15234 * r15234);
        double r15236 = pow(r15227, r15233);
        double r15237 = r15236 * (r15236 * r15236);
        double r15238 = r15237 * (r15237 * r15237);
        double r15239 = cbrt(r15238);
        double r15240 = r15235 - r15239;
        double r15241 = r15234 * r15234;
        double r15242 = r15236 * r15236;
        double r15243 = r15234 * r15236;
        double r15244 = r15242 + r15243;
        double r15245 = r15241 + r15244;
        double r15246 = r15240 / r15245;
        double r15247 = 4.0;
        double r15248 = pow(r15227, r15247);
        double r15249 = r15230 / r15248;
        double r15250 = cbrt(r15249);
        double r15251 = 0.3333333333333333;
        double r15252 = -0.3333333333333333;
        double r15253 = pow(r15227, r15252);
        double r15254 = fma(r15250, r15251, r15253);
        double r15255 = 0.1111111111111111;
        double r15256 = 7.0;
        double r15257 = pow(r15227, r15256);
        double r15258 = r15230 / r15257;
        double r15259 = cbrt(r15258);
        double r15260 = r15230 / r15227;
        double r15261 = cbrt(r15260);
        double r15262 = fma(r15255, r15259, r15261);
        double r15263 = r15254 - r15262;
        double r15264 = r15229 ? r15246 : r15263;
        return r15264;
}

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 r15265, r15266, r15267, r15268, r15269, r15270, r15271, r15272;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r15265);
        mpfr_init_set_str(r15266, "1", 10, MPFR_RNDN);
        mpfr_init(r15267);
        mpfr_init_set_str(r15268, "3", 10, MPFR_RNDN);
        mpfr_init(r15269);
        mpfr_init(r15270);
        mpfr_init(r15271);
        mpfr_init(r15272);
}

double f_im(double x) {
        mpfr_set_d(r15265, x, MPFR_RNDN);
        ;
        mpfr_add(r15267, r15265, r15266, MPFR_RNDN);
        ;
        mpfr_div(r15269, r15266, r15268, MPFR_RNDN);
        mpfr_pow(r15270, r15267, r15269, MPFR_RNDN);
        mpfr_pow(r15271, r15265, r15269, MPFR_RNDN);
        mpfr_sub(r15272, r15270, r15271, MPFR_RNDN);
        return mpfr_get_d(r15272, MPFR_RNDN);
}

static mpfr_t r15273, r15274, r15275, r15276, r15277, r15278, r15279, r15280, r15281, r15282, r15283, r15284, r15285, r15286, r15287, r15288, r15289, r15290, r15291, r15292, r15293, r15294, r15295, r15296, r15297, r15298, r15299, r15300, r15301, r15302, r15303, r15304, r15305, r15306, r15307, r15308, r15309, r15310;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r15273);
        mpfr_init_set_str(r15274, "6.741693610388393e+16", 10, MPFR_RNDN);
        mpfr_init(r15275);
        mpfr_init_set_str(r15276, "1", 10, MPFR_RNDN);
        mpfr_init(r15277);
        mpfr_init_set_str(r15278, "3", 10, MPFR_RNDN);
        mpfr_init(r15279);
        mpfr_init(r15280);
        mpfr_init(r15281);
        mpfr_init(r15282);
        mpfr_init(r15283);
        mpfr_init(r15284);
        mpfr_init(r15285);
        mpfr_init(r15286);
        mpfr_init(r15287);
        mpfr_init(r15288);
        mpfr_init(r15289);
        mpfr_init(r15290);
        mpfr_init(r15291);
        mpfr_init(r15292);
        mpfr_init_set_str(r15293, "4", 10, MPFR_RNDN);
        mpfr_init(r15294);
        mpfr_init(r15295);
        mpfr_init(r15296);
        mpfr_init_set_str(r15297, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r15298, "-1/3", 10, MPFR_RNDN);
        mpfr_init(r15299);
        mpfr_init(r15300);
        mpfr_init_set_str(r15301, "1/9", 10, MPFR_RNDN);
        mpfr_init_set_str(r15302, "7", 10, MPFR_RNDN);
        mpfr_init(r15303);
        mpfr_init(r15304);
        mpfr_init(r15305);
        mpfr_init(r15306);
        mpfr_init(r15307);
        mpfr_init(r15308);
        mpfr_init(r15309);
        mpfr_init(r15310);
}

double f_fm(double x) {
        mpfr_set_d(r15273, x, MPFR_RNDN);
        ;
        mpfr_set_si(r15275, mpfr_cmp(r15273, r15274) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r15277, r15273, r15276, MPFR_RNDN);
        ;
        mpfr_div(r15279, r15276, r15278, MPFR_RNDN);
        mpfr_pow(r15280, r15277, r15279, MPFR_RNDN);
        mpfr_mul(r15281, r15280, r15280, MPFR_RNDN); mpfr_mul(r15281, r15281, r15280, MPFR_RNDN);
        mpfr_pow(r15282, r15273, r15279, MPFR_RNDN);
        mpfr_mul(r15283, r15282, r15282, MPFR_RNDN); mpfr_mul(r15283, r15283, r15282, MPFR_RNDN);
        mpfr_mul(r15284, r15283, r15283, MPFR_RNDN); mpfr_mul(r15284, r15284, r15283, MPFR_RNDN);
        mpfr_cbrt(r15285, r15284, MPFR_RNDN);
        mpfr_sub(r15286, r15281, r15285, MPFR_RNDN);
        mpfr_sqr(r15287, r15280, MPFR_RNDN);
        mpfr_sqr(r15288, r15282, MPFR_RNDN);
        mpfr_mul(r15289, r15280, r15282, MPFR_RNDN);
        mpfr_add(r15290, r15288, r15289, MPFR_RNDN);
        mpfr_add(r15291, r15287, r15290, MPFR_RNDN);
        mpfr_div(r15292, r15286, r15291, MPFR_RNDN);
        ;
        mpfr_pow(r15294, r15273, r15293, MPFR_RNDN);
        mpfr_div(r15295, r15276, r15294, MPFR_RNDN);
        mpfr_cbrt(r15296, r15295, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r15299, r15273, r15298, MPFR_RNDN);
        mpfr_fma(r15300, r15296, r15297, r15299, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r15303, r15273, r15302, MPFR_RNDN);
        mpfr_div(r15304, r15276, r15303, MPFR_RNDN);
        mpfr_cbrt(r15305, r15304, MPFR_RNDN);
        mpfr_div(r15306, r15276, r15273, MPFR_RNDN);
        mpfr_cbrt(r15307, r15306, MPFR_RNDN);
        mpfr_fma(r15308, r15301, r15305, r15307, MPFR_RNDN);
        mpfr_sub(r15309, r15300, r15308, MPFR_RNDN);
        if (mpfr_get_si(r15275, MPFR_RNDN)) { mpfr_set(r15310, r15292, MPFR_RNDN); } else { mpfr_set(r15310, r15309, MPFR_RNDN); };
        return mpfr_get_d(r15310, MPFR_RNDN);
}

static mpfr_t r15311, r15312, r15313, r15314, r15315, r15316, r15317, r15318, r15319, r15320, r15321, r15322, r15323, r15324, r15325, r15326, r15327, r15328, r15329, r15330, r15331, r15332, r15333, r15334, r15335, r15336, r15337, r15338, r15339, r15340, r15341, r15342, r15343, r15344, r15345, r15346, r15347, r15348;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r15311);
        mpfr_init_set_str(r15312, "6.741693610388393e+16", 10, MPFR_RNDN);
        mpfr_init(r15313);
        mpfr_init_set_str(r15314, "1", 10, MPFR_RNDN);
        mpfr_init(r15315);
        mpfr_init_set_str(r15316, "3", 10, MPFR_RNDN);
        mpfr_init(r15317);
        mpfr_init(r15318);
        mpfr_init(r15319);
        mpfr_init(r15320);
        mpfr_init(r15321);
        mpfr_init(r15322);
        mpfr_init(r15323);
        mpfr_init(r15324);
        mpfr_init(r15325);
        mpfr_init(r15326);
        mpfr_init(r15327);
        mpfr_init(r15328);
        mpfr_init(r15329);
        mpfr_init(r15330);
        mpfr_init_set_str(r15331, "4", 10, MPFR_RNDN);
        mpfr_init(r15332);
        mpfr_init(r15333);
        mpfr_init(r15334);
        mpfr_init_set_str(r15335, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r15336, "-1/3", 10, MPFR_RNDN);
        mpfr_init(r15337);
        mpfr_init(r15338);
        mpfr_init_set_str(r15339, "1/9", 10, MPFR_RNDN);
        mpfr_init_set_str(r15340, "7", 10, MPFR_RNDN);
        mpfr_init(r15341);
        mpfr_init(r15342);
        mpfr_init(r15343);
        mpfr_init(r15344);
        mpfr_init(r15345);
        mpfr_init(r15346);
        mpfr_init(r15347);
        mpfr_init(r15348);
}

double f_dm(double x) {
        mpfr_set_d(r15311, x, MPFR_RNDN);
        ;
        mpfr_set_si(r15313, mpfr_cmp(r15311, r15312) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r15315, r15311, r15314, MPFR_RNDN);
        ;
        mpfr_div(r15317, r15314, r15316, MPFR_RNDN);
        mpfr_pow(r15318, r15315, r15317, MPFR_RNDN);
        mpfr_mul(r15319, r15318, r15318, MPFR_RNDN); mpfr_mul(r15319, r15319, r15318, MPFR_RNDN);
        mpfr_pow(r15320, r15311, r15317, MPFR_RNDN);
        mpfr_mul(r15321, r15320, r15320, MPFR_RNDN); mpfr_mul(r15321, r15321, r15320, MPFR_RNDN);
        mpfr_mul(r15322, r15321, r15321, MPFR_RNDN); mpfr_mul(r15322, r15322, r15321, MPFR_RNDN);
        mpfr_cbrt(r15323, r15322, MPFR_RNDN);
        mpfr_sub(r15324, r15319, r15323, MPFR_RNDN);
        mpfr_sqr(r15325, r15318, MPFR_RNDN);
        mpfr_sqr(r15326, r15320, MPFR_RNDN);
        mpfr_mul(r15327, r15318, r15320, MPFR_RNDN);
        mpfr_add(r15328, r15326, r15327, MPFR_RNDN);
        mpfr_add(r15329, r15325, r15328, MPFR_RNDN);
        mpfr_div(r15330, r15324, r15329, MPFR_RNDN);
        ;
        mpfr_pow(r15332, r15311, r15331, MPFR_RNDN);
        mpfr_div(r15333, r15314, r15332, MPFR_RNDN);
        mpfr_cbrt(r15334, r15333, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r15337, r15311, r15336, MPFR_RNDN);
        mpfr_fma(r15338, r15334, r15335, r15337, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r15341, r15311, r15340, MPFR_RNDN);
        mpfr_div(r15342, r15314, r15341, MPFR_RNDN);
        mpfr_cbrt(r15343, r15342, MPFR_RNDN);
        mpfr_div(r15344, r15314, r15311, MPFR_RNDN);
        mpfr_cbrt(r15345, r15344, MPFR_RNDN);
        mpfr_fma(r15346, r15339, r15343, r15345, MPFR_RNDN);
        mpfr_sub(r15347, r15338, r15346, MPFR_RNDN);
        if (mpfr_get_si(r15313, MPFR_RNDN)) { mpfr_set(r15348, r15330, MPFR_RNDN); } else { mpfr_set(r15348, r15347, MPFR_RNDN); };
        return mpfr_get_d(r15348, MPFR_RNDN);
}

