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

char *name = "NMSE Section 6.1 mentioned, A";

double f_if(float x, float eps) {
        float r15143 = 1.0f;
        float r15144 = eps;
        float r15145 = r15143 / r15144;
        float r15146 = r15143 + r15145;
        float r15147 = r15143 - r15144;
        float r15148 = x;
        float r15149 = r15147 * r15148;
        float r15150 = -r15149;
        float r15151 = exp(r15150);
        float r15152 = r15146 * r15151;
        float r15153 = r15145 - r15143;
        float r15154 = r15143 + r15144;
        float r15155 = r15154 * r15148;
        float r15156 = -r15155;
        float r15157 = exp(r15156);
        float r15158 = r15153 * r15157;
        float r15159 = r15152 - r15158;
        float r15160 = 2.0f;
        float r15161 = r15159 / r15160;
        return r15161;
}

double f_id(double x, double eps) {
        double r15162 = 1.0;
        double r15163 = eps;
        double r15164 = r15162 / r15163;
        double r15165 = r15162 + r15164;
        double r15166 = r15162 - r15163;
        double r15167 = x;
        double r15168 = r15166 * r15167;
        double r15169 = -r15168;
        double r15170 = exp(r15169);
        double r15171 = r15165 * r15170;
        double r15172 = r15164 - r15162;
        double r15173 = r15162 + r15163;
        double r15174 = r15173 * r15167;
        double r15175 = -r15174;
        double r15176 = exp(r15175);
        double r15177 = r15172 * r15176;
        double r15178 = r15171 - r15177;
        double r15179 = 2.0;
        double r15180 = r15178 / r15179;
        return r15180;
}


double f_of(float x, float eps) {
        float r15181 = x;
        float r15182 = 1900404.342977934f;
        bool r15183 = r15181 <= r15182;
        float r15184 = r15181 * (r15181 * r15181);
        float r15185 = 0.6666666666666666f;
        float r15186 = r15184 * r15185;
        float r15187 = 2.0f;
        float r15188 = r15181 * r15181;
        float r15189 = r15187 - r15188;
        float r15190 = r15186 + r15189;
        float r15191 = r15190 / r15187;
        float r15192 = 1.0f;
        float r15193 = eps;
        float r15194 = r15192 / r15193;
        float r15195 = r15192 + r15194;
        float r15196 = cbrt(r15195);
        float r15197 = r15192 - r15193;
        float r15198 = r15197 * r15181;
        float r15199 = -r15198;
        float r15200 = exp(r15199);
        float r15201 = cbrt(r15200);
        float r15202 = r15196 * r15201;
        float r15203 = r15202 * (r15202 * r15202);
        float r15204 = r15194 - r15192;
        float r15205 = r15192 + r15193;
        float r15206 = r15205 * r15181;
        float r15207 = -r15206;
        float r15208 = exp(r15207);
        float r15209 = r15204 * r15208;
        float r15210 = r15203 - r15209;
        float r15211 = r15210 / r15187;
        float r15212 = r15183 ? r15191 : r15211;
        return r15212;
}

double f_od(double x, double eps) {
        double r15213 = x;
        double r15214 = 1900404.342977934;
        bool r15215 = r15213 <= r15214;
        double r15216 = r15213 * (r15213 * r15213);
        double r15217 = 0.6666666666666666;
        double r15218 = r15216 * r15217;
        double r15219 = 2.0;
        double r15220 = r15213 * r15213;
        double r15221 = r15219 - r15220;
        double r15222 = r15218 + r15221;
        double r15223 = r15222 / r15219;
        double r15224 = 1.0;
        double r15225 = eps;
        double r15226 = r15224 / r15225;
        double r15227 = r15224 + r15226;
        double r15228 = cbrt(r15227);
        double r15229 = r15224 - r15225;
        double r15230 = r15229 * r15213;
        double r15231 = -r15230;
        double r15232 = exp(r15231);
        double r15233 = cbrt(r15232);
        double r15234 = r15228 * r15233;
        double r15235 = r15234 * (r15234 * r15234);
        double r15236 = r15226 - r15224;
        double r15237 = r15224 + r15225;
        double r15238 = r15237 * r15213;
        double r15239 = -r15238;
        double r15240 = exp(r15239);
        double r15241 = r15236 * r15240;
        double r15242 = r15235 - r15241;
        double r15243 = r15242 / r15219;
        double r15244 = r15215 ? r15223 : r15243;
        return r15244;
}

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 r15245, r15246, r15247, r15248, r15249, r15250, r15251, r15252, r15253, r15254, r15255, r15256, r15257, r15258, r15259, r15260, r15261, r15262, r15263;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r15245, "1", 10, MPFR_RNDN);
        mpfr_init(r15246);
        mpfr_init(r15247);
        mpfr_init(r15248);
        mpfr_init(r15249);
        mpfr_init(r15250);
        mpfr_init(r15251);
        mpfr_init(r15252);
        mpfr_init(r15253);
        mpfr_init(r15254);
        mpfr_init(r15255);
        mpfr_init(r15256);
        mpfr_init(r15257);
        mpfr_init(r15258);
        mpfr_init(r15259);
        mpfr_init(r15260);
        mpfr_init(r15261);
        mpfr_init_set_str(r15262, "2", 10, MPFR_RNDN);
        mpfr_init(r15263);
}

double f_im(double x, double eps) {
        ;
        mpfr_set_d(r15246, eps, MPFR_RNDN);
        mpfr_div(r15247, r15245, r15246, MPFR_RNDN);
        mpfr_add(r15248, r15245, r15247, MPFR_RNDN);
        mpfr_sub(r15249, r15245, r15246, MPFR_RNDN);
        mpfr_set_d(r15250, x, MPFR_RNDN);
        mpfr_mul(r15251, r15249, r15250, MPFR_RNDN);
        mpfr_neg(r15252, r15251, MPFR_RNDN);
        mpfr_exp(r15253, r15252, MPFR_RNDN);
        mpfr_mul(r15254, r15248, r15253, MPFR_RNDN);
        mpfr_sub(r15255, r15247, r15245, MPFR_RNDN);
        mpfr_add(r15256, r15245, r15246, MPFR_RNDN);
        mpfr_mul(r15257, r15256, r15250, MPFR_RNDN);
        mpfr_neg(r15258, r15257, MPFR_RNDN);
        mpfr_exp(r15259, r15258, MPFR_RNDN);
        mpfr_mul(r15260, r15255, r15259, MPFR_RNDN);
        mpfr_sub(r15261, r15254, r15260, MPFR_RNDN);
        ;
        mpfr_div(r15263, r15261, r15262, MPFR_RNDN);
        return mpfr_get_d(r15263, MPFR_RNDN);
}

static mpfr_t r15264, r15265, r15266, r15267, r15268, r15269, r15270, r15271, r15272, r15273, r15274, r15275, r15276, r15277, r15278, r15279, r15280, r15281, r15282, r15283, r15284, r15285, r15286, r15287, r15288, r15289, r15290, r15291, r15292, r15293, r15294, r15295;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r15264);
        mpfr_init_set_str(r15265, "1900404.342977934", 10, MPFR_RNDN);
        mpfr_init(r15266);
        mpfr_init(r15267);
        mpfr_init_set_str(r15268, "2/3", 10, MPFR_RNDN);
        mpfr_init(r15269);
        mpfr_init_set_str(r15270, "2", 10, MPFR_RNDN);
        mpfr_init(r15271);
        mpfr_init(r15272);
        mpfr_init(r15273);
        mpfr_init(r15274);
        mpfr_init_set_str(r15275, "1", 10, MPFR_RNDN);
        mpfr_init(r15276);
        mpfr_init(r15277);
        mpfr_init(r15278);
        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(r15293);
        mpfr_init(r15294);
        mpfr_init(r15295);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r15264, x, MPFR_RNDN);
        ;
        mpfr_set_si(r15266, mpfr_cmp(r15264, r15265) <= 0, MPFR_RNDN);
        mpfr_mul(r15267, r15264, r15264, MPFR_RNDN); mpfr_mul(r15267, r15267, r15264, MPFR_RNDN);
        ;
        mpfr_mul(r15269, r15267, r15268, MPFR_RNDN);
        ;
        mpfr_mul(r15271, r15264, r15264, MPFR_RNDN);
        mpfr_sub(r15272, r15270, r15271, MPFR_RNDN);
        mpfr_add(r15273, r15269, r15272, MPFR_RNDN);
        mpfr_div(r15274, r15273, r15270, MPFR_RNDN);
        ;
        mpfr_set_d(r15276, eps, MPFR_RNDN);
        mpfr_div(r15277, r15275, r15276, MPFR_RNDN);
        mpfr_add(r15278, r15275, r15277, MPFR_RNDN);
        mpfr_cbrt(r15279, r15278, MPFR_RNDN);
        mpfr_sub(r15280, r15275, r15276, MPFR_RNDN);
        mpfr_mul(r15281, r15280, r15264, MPFR_RNDN);
        mpfr_neg(r15282, r15281, MPFR_RNDN);
        mpfr_exp(r15283, r15282, MPFR_RNDN);
        mpfr_cbrt(r15284, r15283, MPFR_RNDN);
        mpfr_mul(r15285, r15279, r15284, MPFR_RNDN);
        mpfr_mul(r15286, r15285, r15285, MPFR_RNDN); mpfr_mul(r15286, r15286, r15285, MPFR_RNDN);
        mpfr_sub(r15287, r15277, r15275, MPFR_RNDN);
        mpfr_add(r15288, r15275, r15276, MPFR_RNDN);
        mpfr_mul(r15289, r15288, r15264, MPFR_RNDN);
        mpfr_neg(r15290, r15289, MPFR_RNDN);
        mpfr_exp(r15291, r15290, MPFR_RNDN);
        mpfr_mul(r15292, r15287, r15291, MPFR_RNDN);
        mpfr_sub(r15293, r15286, r15292, MPFR_RNDN);
        mpfr_div(r15294, r15293, r15270, MPFR_RNDN);
        if (mpfr_get_si(r15266, MPFR_RNDN)) { mpfr_set(r15295, r15274, MPFR_RNDN); } else { mpfr_set(r15295, r15294, MPFR_RNDN); };
        return mpfr_get_d(r15295, MPFR_RNDN);
}

static mpfr_t r15296, r15297, r15298, r15299, r15300, r15301, r15302, r15303, r15304, r15305, r15306, r15307, r15308, r15309, r15310, r15311, r15312, r15313, r15314, r15315, r15316, r15317, r15318, r15319, r15320, r15321, r15322, r15323, r15324, r15325, r15326, r15327;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r15296);
        mpfr_init_set_str(r15297, "1900404.342977934", 10, MPFR_RNDN);
        mpfr_init(r15298);
        mpfr_init(r15299);
        mpfr_init_set_str(r15300, "2/3", 10, MPFR_RNDN);
        mpfr_init(r15301);
        mpfr_init_set_str(r15302, "2", 10, MPFR_RNDN);
        mpfr_init(r15303);
        mpfr_init(r15304);
        mpfr_init(r15305);
        mpfr_init(r15306);
        mpfr_init_set_str(r15307, "1", 10, MPFR_RNDN);
        mpfr_init(r15308);
        mpfr_init(r15309);
        mpfr_init(r15310);
        mpfr_init(r15311);
        mpfr_init(r15312);
        mpfr_init(r15313);
        mpfr_init(r15314);
        mpfr_init(r15315);
        mpfr_init(r15316);
        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);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r15296, x, MPFR_RNDN);
        ;
        mpfr_set_si(r15298, mpfr_cmp(r15296, r15297) <= 0, MPFR_RNDN);
        mpfr_mul(r15299, r15296, r15296, MPFR_RNDN); mpfr_mul(r15299, r15299, r15296, MPFR_RNDN);
        ;
        mpfr_mul(r15301, r15299, r15300, MPFR_RNDN);
        ;
        mpfr_mul(r15303, r15296, r15296, MPFR_RNDN);
        mpfr_sub(r15304, r15302, r15303, MPFR_RNDN);
        mpfr_add(r15305, r15301, r15304, MPFR_RNDN);
        mpfr_div(r15306, r15305, r15302, MPFR_RNDN);
        ;
        mpfr_set_d(r15308, eps, MPFR_RNDN);
        mpfr_div(r15309, r15307, r15308, MPFR_RNDN);
        mpfr_add(r15310, r15307, r15309, MPFR_RNDN);
        mpfr_cbrt(r15311, r15310, MPFR_RNDN);
        mpfr_sub(r15312, r15307, r15308, MPFR_RNDN);
        mpfr_mul(r15313, r15312, r15296, MPFR_RNDN);
        mpfr_neg(r15314, r15313, MPFR_RNDN);
        mpfr_exp(r15315, r15314, MPFR_RNDN);
        mpfr_cbrt(r15316, r15315, MPFR_RNDN);
        mpfr_mul(r15317, r15311, r15316, MPFR_RNDN);
        mpfr_mul(r15318, r15317, r15317, MPFR_RNDN); mpfr_mul(r15318, r15318, r15317, MPFR_RNDN);
        mpfr_sub(r15319, r15309, r15307, MPFR_RNDN);
        mpfr_add(r15320, r15307, r15308, MPFR_RNDN);
        mpfr_mul(r15321, r15320, r15296, MPFR_RNDN);
        mpfr_neg(r15322, r15321, MPFR_RNDN);
        mpfr_exp(r15323, r15322, MPFR_RNDN);
        mpfr_mul(r15324, r15319, r15323, MPFR_RNDN);
        mpfr_sub(r15325, r15318, r15324, MPFR_RNDN);
        mpfr_div(r15326, r15325, r15302, MPFR_RNDN);
        if (mpfr_get_si(r15298, MPFR_RNDN)) { mpfr_set(r15327, r15306, MPFR_RNDN); } else { mpfr_set(r15327, r15326, MPFR_RNDN); };
        return mpfr_get_d(r15327, MPFR_RNDN);
}

