#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 r28090 = 1;
        float r28091 = eps;
        float r28092 = r28090 / r28091;
        float r28093 = r28090 + r28092;
        float r28094 = r28090 - r28091;
        float r28095 = x;
        float r28096 = r28094 * r28095;
        float r28097 = -r28096;
        float r28098 = exp(r28097);
        float r28099 = r28093 * r28098;
        float r28100 = r28092 - r28090;
        float r28101 = r28090 + r28091;
        float r28102 = r28101 * r28095;
        float r28103 = -r28102;
        float r28104 = exp(r28103);
        float r28105 = r28100 * r28104;
        float r28106 = r28099 - r28105;
        float r28107 = 2;
        float r28108 = r28106 / r28107;
        return r28108;
}

double f_id(double x, double eps) {
        double r28109 = 1;
        double r28110 = eps;
        double r28111 = r28109 / r28110;
        double r28112 = r28109 + r28111;
        double r28113 = r28109 - r28110;
        double r28114 = x;
        double r28115 = r28113 * r28114;
        double r28116 = -r28115;
        double r28117 = exp(r28116);
        double r28118 = r28112 * r28117;
        double r28119 = r28111 - r28109;
        double r28120 = r28109 + r28110;
        double r28121 = r28120 * r28114;
        double r28122 = -r28121;
        double r28123 = exp(r28122);
        double r28124 = r28119 * r28123;
        double r28125 = r28118 - r28124;
        double r28126 = 2;
        double r28127 = r28125 / r28126;
        return r28127;
}


double f_of(float x, float eps) {
        float r28128 = x;
        float r28129 = 227.1405829303859;
        bool r28130 = r28128 <= r28129;
        float r28131 = 2;
        float r28132 = 2/3;
        float r28133 = 3;
        float r28134 = pow(r28128, r28133);
        float r28135 = r28132 * r28134;
        float r28136 = r28131 + r28135;
        float r28137 = pow(r28128, r28131);
        float r28138 = r28136 - r28137;
        float r28139 = r28138 / r28131;
        float r28140 = 1;
        float r28141 = eps;
        float r28142 = r28140 / r28141;
        float r28143 = r28140 + r28142;
        float r28144 = r28140 - r28141;
        float r28145 = r28144 * r28128;
        float r28146 = -r28145;
        float r28147 = exp(r28146);
        float r28148 = r28143 * r28147;
        float r28149 = r28142 - r28140;
        float r28150 = r28140 + r28141;
        float r28151 = r28150 * r28128;
        float r28152 = -r28151;
        float r28153 = exp(r28152);
        float r28154 = r28149 * r28153;
        float r28155 = r28148 - r28154;
        float r28156 = r28155 / r28131;
        float r28157 = r28130 ? r28139 : r28156;
        return r28157;
}

double f_od(double x, double eps) {
        double r28158 = x;
        double r28159 = 227.1405829303859;
        bool r28160 = r28158 <= r28159;
        double r28161 = 2;
        double r28162 = 2/3;
        double r28163 = 3;
        double r28164 = pow(r28158, r28163);
        double r28165 = r28162 * r28164;
        double r28166 = r28161 + r28165;
        double r28167 = pow(r28158, r28161);
        double r28168 = r28166 - r28167;
        double r28169 = r28168 / r28161;
        double r28170 = 1;
        double r28171 = eps;
        double r28172 = r28170 / r28171;
        double r28173 = r28170 + r28172;
        double r28174 = r28170 - r28171;
        double r28175 = r28174 * r28158;
        double r28176 = -r28175;
        double r28177 = exp(r28176);
        double r28178 = r28173 * r28177;
        double r28179 = r28172 - r28170;
        double r28180 = r28170 + r28171;
        double r28181 = r28180 * r28158;
        double r28182 = -r28181;
        double r28183 = exp(r28182);
        double r28184 = r28179 * r28183;
        double r28185 = r28178 - r28184;
        double r28186 = r28185 / r28161;
        double r28187 = r28160 ? r28169 : r28186;
        return r28187;
}

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 r28188, r28189, r28190, r28191, r28192, r28193, r28194, r28195, r28196, r28197, r28198, r28199, r28200, r28201, r28202, r28203, r28204, r28205, r28206;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r28188, "1", 10, MPFR_RNDN);
        mpfr_init(r28189);
        mpfr_init(r28190);
        mpfr_init(r28191);
        mpfr_init(r28192);
        mpfr_init(r28193);
        mpfr_init(r28194);
        mpfr_init(r28195);
        mpfr_init(r28196);
        mpfr_init(r28197);
        mpfr_init(r28198);
        mpfr_init(r28199);
        mpfr_init(r28200);
        mpfr_init(r28201);
        mpfr_init(r28202);
        mpfr_init(r28203);
        mpfr_init(r28204);
        mpfr_init_set_str(r28205, "2", 10, MPFR_RNDN);
        mpfr_init(r28206);
}

double f_im(double x, double eps) {
        ;
        mpfr_set_d(r28189, eps, MPFR_RNDN);
        mpfr_div(r28190, r28188, r28189, MPFR_RNDN);
        mpfr_add(r28191, r28188, r28190, MPFR_RNDN);
        mpfr_sub(r28192, r28188, r28189, MPFR_RNDN);
        mpfr_set_d(r28193, x, MPFR_RNDN);
        mpfr_mul(r28194, r28192, r28193, MPFR_RNDN);
        mpfr_neg(r28195, r28194, MPFR_RNDN);
        mpfr_exp(r28196, r28195, MPFR_RNDN);
        mpfr_mul(r28197, r28191, r28196, MPFR_RNDN);
        mpfr_sub(r28198, r28190, r28188, MPFR_RNDN);
        mpfr_add(r28199, r28188, r28189, MPFR_RNDN);
        mpfr_mul(r28200, r28199, r28193, MPFR_RNDN);
        mpfr_neg(r28201, r28200, MPFR_RNDN);
        mpfr_exp(r28202, r28201, MPFR_RNDN);
        mpfr_mul(r28203, r28198, r28202, MPFR_RNDN);
        mpfr_sub(r28204, r28197, r28203, MPFR_RNDN);
        ;
        mpfr_div(r28206, r28204, r28205, MPFR_RNDN);
        return mpfr_get_d(r28206, MPFR_RNDN);
}

static mpfr_t r28207, r28208, r28209, r28210, r28211, r28212, r28213, r28214, r28215, r28216, r28217, r28218, r28219, r28220, r28221, r28222, r28223, r28224, r28225, r28226, r28227, r28228, r28229, r28230, r28231, r28232, r28233, r28234, r28235, r28236;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28207);
        mpfr_init_set_str(r28208, "227.1405829303859", 10, MPFR_RNDN);
        mpfr_init(r28209);
        mpfr_init_set_str(r28210, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r28211, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28212, "3", 10, MPFR_RNDN);
        mpfr_init(r28213);
        mpfr_init(r28214);
        mpfr_init(r28215);
        mpfr_init(r28216);
        mpfr_init(r28217);
        mpfr_init(r28218);
        mpfr_init_set_str(r28219, "1", 10, MPFR_RNDN);
        mpfr_init(r28220);
        mpfr_init(r28221);
        mpfr_init(r28222);
        mpfr_init(r28223);
        mpfr_init(r28224);
        mpfr_init(r28225);
        mpfr_init(r28226);
        mpfr_init(r28227);
        mpfr_init(r28228);
        mpfr_init(r28229);
        mpfr_init(r28230);
        mpfr_init(r28231);
        mpfr_init(r28232);
        mpfr_init(r28233);
        mpfr_init(r28234);
        mpfr_init(r28235);
        mpfr_init(r28236);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r28207, x, MPFR_RNDN);
        ;
        mpfr_set_si(r28209, mpfr_cmp(r28207, r28208) <= 0, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r28213, r28207, r28212, MPFR_RNDN);
        mpfr_mul(r28214, r28211, r28213, MPFR_RNDN);
        mpfr_add(r28215, r28210, r28214, MPFR_RNDN);
        mpfr_pow(r28216, r28207, r28210, MPFR_RNDN);
        mpfr_sub(r28217, r28215, r28216, MPFR_RNDN);
        mpfr_div(r28218, r28217, r28210, MPFR_RNDN);
        ;
        mpfr_set_d(r28220, eps, MPFR_RNDN);
        mpfr_div(r28221, r28219, r28220, MPFR_RNDN);
        mpfr_add(r28222, r28219, r28221, MPFR_RNDN);
        mpfr_sub(r28223, r28219, r28220, MPFR_RNDN);
        mpfr_mul(r28224, r28223, r28207, MPFR_RNDN);
        mpfr_neg(r28225, r28224, MPFR_RNDN);
        mpfr_exp(r28226, r28225, MPFR_RNDN);
        mpfr_mul(r28227, r28222, r28226, MPFR_RNDN);
        mpfr_sub(r28228, r28221, r28219, MPFR_RNDN);
        mpfr_add(r28229, r28219, r28220, MPFR_RNDN);
        mpfr_mul(r28230, r28229, r28207, MPFR_RNDN);
        mpfr_neg(r28231, r28230, MPFR_RNDN);
        mpfr_exp(r28232, r28231, MPFR_RNDN);
        mpfr_mul(r28233, r28228, r28232, MPFR_RNDN);
        mpfr_sub(r28234, r28227, r28233, MPFR_RNDN);
        mpfr_div(r28235, r28234, r28210, MPFR_RNDN);
        if (mpfr_get_si(r28209, MPFR_RNDN)) { mpfr_set(r28236, r28218, MPFR_RNDN); } else { mpfr_set(r28236, r28235, MPFR_RNDN); };
        return mpfr_get_d(r28236, MPFR_RNDN);
}

static mpfr_t r28237, r28238, r28239, r28240, r28241, r28242, r28243, r28244, r28245, r28246, r28247, r28248, r28249, r28250, r28251, r28252, r28253, r28254, r28255, r28256, r28257, r28258, r28259, r28260, r28261, r28262, r28263, r28264, r28265, r28266;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r28237);
        mpfr_init_set_str(r28238, "227.1405829303859", 10, MPFR_RNDN);
        mpfr_init(r28239);
        mpfr_init_set_str(r28240, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r28241, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28242, "3", 10, MPFR_RNDN);
        mpfr_init(r28243);
        mpfr_init(r28244);
        mpfr_init(r28245);
        mpfr_init(r28246);
        mpfr_init(r28247);
        mpfr_init(r28248);
        mpfr_init_set_str(r28249, "1", 10, MPFR_RNDN);
        mpfr_init(r28250);
        mpfr_init(r28251);
        mpfr_init(r28252);
        mpfr_init(r28253);
        mpfr_init(r28254);
        mpfr_init(r28255);
        mpfr_init(r28256);
        mpfr_init(r28257);
        mpfr_init(r28258);
        mpfr_init(r28259);
        mpfr_init(r28260);
        mpfr_init(r28261);
        mpfr_init(r28262);
        mpfr_init(r28263);
        mpfr_init(r28264);
        mpfr_init(r28265);
        mpfr_init(r28266);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r28237, x, MPFR_RNDN);
        ;
        mpfr_set_si(r28239, mpfr_cmp(r28237, r28238) <= 0, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r28243, r28237, r28242, MPFR_RNDN);
        mpfr_mul(r28244, r28241, r28243, MPFR_RNDN);
        mpfr_add(r28245, r28240, r28244, MPFR_RNDN);
        mpfr_pow(r28246, r28237, r28240, MPFR_RNDN);
        mpfr_sub(r28247, r28245, r28246, MPFR_RNDN);
        mpfr_div(r28248, r28247, r28240, MPFR_RNDN);
        ;
        mpfr_set_d(r28250, eps, MPFR_RNDN);
        mpfr_div(r28251, r28249, r28250, MPFR_RNDN);
        mpfr_add(r28252, r28249, r28251, MPFR_RNDN);
        mpfr_sub(r28253, r28249, r28250, MPFR_RNDN);
        mpfr_mul(r28254, r28253, r28237, MPFR_RNDN);
        mpfr_neg(r28255, r28254, MPFR_RNDN);
        mpfr_exp(r28256, r28255, MPFR_RNDN);
        mpfr_mul(r28257, r28252, r28256, MPFR_RNDN);
        mpfr_sub(r28258, r28251, r28249, MPFR_RNDN);
        mpfr_add(r28259, r28249, r28250, MPFR_RNDN);
        mpfr_mul(r28260, r28259, r28237, MPFR_RNDN);
        mpfr_neg(r28261, r28260, MPFR_RNDN);
        mpfr_exp(r28262, r28261, MPFR_RNDN);
        mpfr_mul(r28263, r28258, r28262, MPFR_RNDN);
        mpfr_sub(r28264, r28257, r28263, MPFR_RNDN);
        mpfr_div(r28265, r28264, r28240, MPFR_RNDN);
        if (mpfr_get_si(r28239, MPFR_RNDN)) { mpfr_set(r28266, r28248, MPFR_RNDN); } else { mpfr_set(r28266, r28265, MPFR_RNDN); };
        return mpfr_get_d(r28266, MPFR_RNDN);
}

