#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 r21276 = 1;
        float r21277 = eps;
        float r21278 = r21276 / r21277;
        float r21279 = r21276 + r21278;
        float r21280 = r21276 - r21277;
        float r21281 = x;
        float r21282 = r21280 * r21281;
        float r21283 = -r21282;
        float r21284 = exp(r21283);
        float r21285 = r21279 * r21284;
        float r21286 = r21278 - r21276;
        float r21287 = r21276 + r21277;
        float r21288 = r21287 * r21281;
        float r21289 = -r21288;
        float r21290 = exp(r21289);
        float r21291 = r21286 * r21290;
        float r21292 = r21285 - r21291;
        float r21293 = 2;
        float r21294 = r21292 / r21293;
        return r21294;
}

double f_id(double x, double eps) {
        double r21295 = 1;
        double r21296 = eps;
        double r21297 = r21295 / r21296;
        double r21298 = r21295 + r21297;
        double r21299 = r21295 - r21296;
        double r21300 = x;
        double r21301 = r21299 * r21300;
        double r21302 = -r21301;
        double r21303 = exp(r21302);
        double r21304 = r21298 * r21303;
        double r21305 = r21297 - r21295;
        double r21306 = r21295 + r21296;
        double r21307 = r21306 * r21300;
        double r21308 = -r21307;
        double r21309 = exp(r21308);
        double r21310 = r21305 * r21309;
        double r21311 = r21304 - r21310;
        double r21312 = 2;
        double r21313 = r21311 / r21312;
        return r21313;
}


double f_of(float x, float eps) {
        float r21314 = x;
        float r21315 = 344.11985977036954;
        bool r21316 = r21314 <= r21315;
        float r21317 = 2;
        float r21318 = 2/3;
        float r21319 = 3;
        float r21320 = pow(r21314, r21319);
        float r21321 = r21318 * r21320;
        float r21322 = cbrt(r21321);
        float r21323 = cbrt(r21322);
        float r21324 = r21323 * r21323;
        float r21325 = r21324 * r21323;
        float r21326 = r21322 * r21325;
        float r21327 = r21326 * r21325;
        float r21328 = r21317 + r21327;
        float r21329 = pow(r21314, r21317);
        float r21330 = r21328 - r21329;
        float r21331 = r21330 / r21317;
        float r21332 = +inf.0;
        bool r21333 = r21314 <= r21332;
        float r21334 = 1;
        float r21335 = eps;
        float r21336 = r21334 / r21335;
        float r21337 = r21334 + r21336;
        float r21338 = r21334 - r21335;
        float r21339 = r21338 * r21314;
        float r21340 = -r21339;
        float r21341 = exp(r21340);
        float r21342 = r21336 - r21334;
        float r21343 = fma(r21335, r21314, r21314);
        float r21344 = exp(r21343);
        float r21345 = r21342 / r21344;
        float r21346 = -r21345;
        float r21347 = fma(r21337, r21341, r21346);
        float r21348 = r21347 / r21317;
        float r21349 = r21333 ? r21348 : r21348;
        float r21350 = r21316 ? r21331 : r21349;
        return r21350;
}

double f_od(double x, double eps) {
        double r21351 = x;
        double r21352 = 344.11985977036954;
        bool r21353 = r21351 <= r21352;
        double r21354 = 2;
        double r21355 = 2/3;
        double r21356 = 3;
        double r21357 = pow(r21351, r21356);
        double r21358 = r21355 * r21357;
        double r21359 = cbrt(r21358);
        double r21360 = cbrt(r21359);
        double r21361 = r21360 * r21360;
        double r21362 = r21361 * r21360;
        double r21363 = r21359 * r21362;
        double r21364 = r21363 * r21362;
        double r21365 = r21354 + r21364;
        double r21366 = pow(r21351, r21354);
        double r21367 = r21365 - r21366;
        double r21368 = r21367 / r21354;
        double r21369 = +inf.0;
        bool r21370 = r21351 <= r21369;
        double r21371 = 1;
        double r21372 = eps;
        double r21373 = r21371 / r21372;
        double r21374 = r21371 + r21373;
        double r21375 = r21371 - r21372;
        double r21376 = r21375 * r21351;
        double r21377 = -r21376;
        double r21378 = exp(r21377);
        double r21379 = r21373 - r21371;
        double r21380 = fma(r21372, r21351, r21351);
        double r21381 = exp(r21380);
        double r21382 = r21379 / r21381;
        double r21383 = -r21382;
        double r21384 = fma(r21374, r21378, r21383);
        double r21385 = r21384 / r21354;
        double r21386 = r21370 ? r21385 : r21385;
        double r21387 = r21353 ? r21368 : r21386;
        return r21387;
}

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 r21388, r21389, r21390, r21391, r21392, r21393, r21394, r21395, r21396, r21397, r21398, r21399, r21400, r21401, r21402, r21403, r21404, r21405, r21406;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r21388, "1", 10, MPFR_RNDN);
        mpfr_init(r21389);
        mpfr_init(r21390);
        mpfr_init(r21391);
        mpfr_init(r21392);
        mpfr_init(r21393);
        mpfr_init(r21394);
        mpfr_init(r21395);
        mpfr_init(r21396);
        mpfr_init(r21397);
        mpfr_init(r21398);
        mpfr_init(r21399);
        mpfr_init(r21400);
        mpfr_init(r21401);
        mpfr_init(r21402);
        mpfr_init(r21403);
        mpfr_init(r21404);
        mpfr_init_set_str(r21405, "2", 10, MPFR_RNDN);
        mpfr_init(r21406);
}

double f_im(double x, double eps) {
        ;
        mpfr_set_d(r21389, eps, MPFR_RNDN);
        mpfr_div(r21390, r21388, r21389, MPFR_RNDN);
        mpfr_add(r21391, r21388, r21390, MPFR_RNDN);
        mpfr_sub(r21392, r21388, r21389, MPFR_RNDN);
        mpfr_set_d(r21393, x, MPFR_RNDN);
        mpfr_mul(r21394, r21392, r21393, MPFR_RNDN);
        mpfr_neg(r21395, r21394, MPFR_RNDN);
        mpfr_exp(r21396, r21395, MPFR_RNDN);
        mpfr_mul(r21397, r21391, r21396, MPFR_RNDN);
        mpfr_sub(r21398, r21390, r21388, MPFR_RNDN);
        mpfr_add(r21399, r21388, r21389, MPFR_RNDN);
        mpfr_mul(r21400, r21399, r21393, MPFR_RNDN);
        mpfr_neg(r21401, r21400, MPFR_RNDN);
        mpfr_exp(r21402, r21401, MPFR_RNDN);
        mpfr_mul(r21403, r21398, r21402, MPFR_RNDN);
        mpfr_sub(r21404, r21397, r21403, MPFR_RNDN);
        ;
        mpfr_div(r21406, r21404, r21405, MPFR_RNDN);
        return mpfr_get_d(r21406, MPFR_RNDN);
}

static mpfr_t r21407, r21408, r21409, r21410, r21411, r21412, r21413, r21414, r21415, r21416, r21417, r21418, r21419, r21420, r21421, r21422, r21423, r21424, r21425, r21426, r21427, r21428, r21429, r21430, r21431, r21432, r21433, r21434, r21435, r21436, r21437, r21438, r21439, r21440, r21441, r21442, r21443;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r21407);
        mpfr_init_set_str(r21408, "344.11985977036954", 10, MPFR_RNDN);
        mpfr_init(r21409);
        mpfr_init_set_str(r21410, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r21411, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r21412, "3", 10, MPFR_RNDN);
        mpfr_init(r21413);
        mpfr_init(r21414);
        mpfr_init(r21415);
        mpfr_init(r21416);
        mpfr_init(r21417);
        mpfr_init(r21418);
        mpfr_init(r21419);
        mpfr_init(r21420);
        mpfr_init(r21421);
        mpfr_init(r21422);
        mpfr_init(r21423);
        mpfr_init(r21424);
        mpfr_init_set_str(r21425, "+inf.0", 10, MPFR_RNDN);
        mpfr_init(r21426);
        mpfr_init_set_str(r21427, "1", 10, MPFR_RNDN);
        mpfr_init(r21428);
        mpfr_init(r21429);
        mpfr_init(r21430);
        mpfr_init(r21431);
        mpfr_init(r21432);
        mpfr_init(r21433);
        mpfr_init(r21434);
        mpfr_init(r21435);
        mpfr_init(r21436);
        mpfr_init(r21437);
        mpfr_init(r21438);
        mpfr_init(r21439);
        mpfr_init(r21440);
        mpfr_init(r21441);
        mpfr_init(r21442);
        mpfr_init(r21443);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r21407, x, MPFR_RNDN);
        ;
        mpfr_set_si(r21409, mpfr_cmp(r21407, r21408) <= 0, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r21413, r21407, r21412, MPFR_RNDN);
        mpfr_mul(r21414, r21411, r21413, MPFR_RNDN);
        mpfr_cbrt(r21415, r21414, MPFR_RNDN);
        mpfr_cbrt(r21416, r21415, MPFR_RNDN);
        mpfr_mul(r21417, r21416, r21416, MPFR_RNDN);
        mpfr_mul(r21418, r21417, r21416, MPFR_RNDN);
        mpfr_mul(r21419, r21415, r21418, MPFR_RNDN);
        mpfr_mul(r21420, r21419, r21418, MPFR_RNDN);
        mpfr_add(r21421, r21410, r21420, MPFR_RNDN);
        mpfr_pow(r21422, r21407, r21410, MPFR_RNDN);
        mpfr_sub(r21423, r21421, r21422, MPFR_RNDN);
        mpfr_div(r21424, r21423, r21410, MPFR_RNDN);
        ;
        mpfr_set_si(r21426, mpfr_cmp(r21407, r21425) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r21428, eps, MPFR_RNDN);
        mpfr_div(r21429, r21427, r21428, MPFR_RNDN);
        mpfr_add(r21430, r21427, r21429, MPFR_RNDN);
        mpfr_sub(r21431, r21427, r21428, MPFR_RNDN);
        mpfr_mul(r21432, r21431, r21407, MPFR_RNDN);
        mpfr_neg(r21433, r21432, MPFR_RNDN);
        mpfr_exp(r21434, r21433, MPFR_RNDN);
        mpfr_sub(r21435, r21429, r21427, MPFR_RNDN);
        mpfr_fma(r21436, r21428, r21407, r21407, MPFR_RNDN);
        mpfr_exp(r21437, r21436, MPFR_RNDN);
        mpfr_div(r21438, r21435, r21437, MPFR_RNDN);
        mpfr_neg(r21439, r21438, MPFR_RNDN);
        mpfr_fma(r21440, r21430, r21434, r21439, MPFR_RNDN);
        mpfr_div(r21441, r21440, r21410, MPFR_RNDN);
        if (mpfr_get_si(r21426, MPFR_RNDN)) { mpfr_set(r21442, r21441, MPFR_RNDN); } else { mpfr_set(r21442, r21441, MPFR_RNDN); };
        if (mpfr_get_si(r21409, MPFR_RNDN)) { mpfr_set(r21443, r21424, MPFR_RNDN); } else { mpfr_set(r21443, r21442, MPFR_RNDN); };
        return mpfr_get_d(r21443, MPFR_RNDN);
}

static mpfr_t r21444, r21445, r21446, r21447, r21448, r21449, r21450, r21451, r21452, r21453, r21454, r21455, r21456, r21457, r21458, r21459, r21460, r21461, r21462, r21463, r21464, r21465, r21466, r21467, r21468, r21469, r21470, r21471, r21472, r21473, r21474, r21475, r21476, r21477, r21478, r21479, r21480;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r21444);
        mpfr_init_set_str(r21445, "344.11985977036954", 10, MPFR_RNDN);
        mpfr_init(r21446);
        mpfr_init_set_str(r21447, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r21448, "2/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r21449, "3", 10, MPFR_RNDN);
        mpfr_init(r21450);
        mpfr_init(r21451);
        mpfr_init(r21452);
        mpfr_init(r21453);
        mpfr_init(r21454);
        mpfr_init(r21455);
        mpfr_init(r21456);
        mpfr_init(r21457);
        mpfr_init(r21458);
        mpfr_init(r21459);
        mpfr_init(r21460);
        mpfr_init(r21461);
        mpfr_init_set_str(r21462, "+inf.0", 10, MPFR_RNDN);
        mpfr_init(r21463);
        mpfr_init_set_str(r21464, "1", 10, MPFR_RNDN);
        mpfr_init(r21465);
        mpfr_init(r21466);
        mpfr_init(r21467);
        mpfr_init(r21468);
        mpfr_init(r21469);
        mpfr_init(r21470);
        mpfr_init(r21471);
        mpfr_init(r21472);
        mpfr_init(r21473);
        mpfr_init(r21474);
        mpfr_init(r21475);
        mpfr_init(r21476);
        mpfr_init(r21477);
        mpfr_init(r21478);
        mpfr_init(r21479);
        mpfr_init(r21480);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r21444, x, MPFR_RNDN);
        ;
        mpfr_set_si(r21446, mpfr_cmp(r21444, r21445) <= 0, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r21450, r21444, r21449, MPFR_RNDN);
        mpfr_mul(r21451, r21448, r21450, MPFR_RNDN);
        mpfr_cbrt(r21452, r21451, MPFR_RNDN);
        mpfr_cbrt(r21453, r21452, MPFR_RNDN);
        mpfr_mul(r21454, r21453, r21453, MPFR_RNDN);
        mpfr_mul(r21455, r21454, r21453, MPFR_RNDN);
        mpfr_mul(r21456, r21452, r21455, MPFR_RNDN);
        mpfr_mul(r21457, r21456, r21455, MPFR_RNDN);
        mpfr_add(r21458, r21447, r21457, MPFR_RNDN);
        mpfr_pow(r21459, r21444, r21447, MPFR_RNDN);
        mpfr_sub(r21460, r21458, r21459, MPFR_RNDN);
        mpfr_div(r21461, r21460, r21447, MPFR_RNDN);
        ;
        mpfr_set_si(r21463, mpfr_cmp(r21444, r21462) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r21465, eps, MPFR_RNDN);
        mpfr_div(r21466, r21464, r21465, MPFR_RNDN);
        mpfr_add(r21467, r21464, r21466, MPFR_RNDN);
        mpfr_sub(r21468, r21464, r21465, MPFR_RNDN);
        mpfr_mul(r21469, r21468, r21444, MPFR_RNDN);
        mpfr_neg(r21470, r21469, MPFR_RNDN);
        mpfr_exp(r21471, r21470, MPFR_RNDN);
        mpfr_sub(r21472, r21466, r21464, MPFR_RNDN);
        mpfr_fma(r21473, r21465, r21444, r21444, MPFR_RNDN);
        mpfr_exp(r21474, r21473, MPFR_RNDN);
        mpfr_div(r21475, r21472, r21474, MPFR_RNDN);
        mpfr_neg(r21476, r21475, MPFR_RNDN);
        mpfr_fma(r21477, r21467, r21471, r21476, MPFR_RNDN);
        mpfr_div(r21478, r21477, r21447, MPFR_RNDN);
        if (mpfr_get_si(r21463, MPFR_RNDN)) { mpfr_set(r21479, r21478, MPFR_RNDN); } else { mpfr_set(r21479, r21478, MPFR_RNDN); };
        if (mpfr_get_si(r21446, MPFR_RNDN)) { mpfr_set(r21480, r21461, MPFR_RNDN); } else { mpfr_set(r21480, r21479, MPFR_RNDN); };
        return mpfr_get_d(r21480, MPFR_RNDN);
}

