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

char *name = "NMSE problem 3.4.5";

double f_if(float x) {
        float r5318252 = x;
        float r5318253 = sin(r5318252);
        float r5318254 = r5318252 - r5318253;
        float r5318255 = tan(r5318252);
        float r5318256 = r5318252 - r5318255;
        float r5318257 = r5318254 / r5318256;
        return r5318257;
}

double f_id(double x) {
        double r5318258 = x;
        double r5318259 = sin(r5318258);
        double r5318260 = r5318258 - r5318259;
        double r5318261 = tan(r5318258);
        double r5318262 = r5318258 - r5318261;
        double r5318263 = r5318260 / r5318262;
        return r5318263;
}


double f_of(float x) {
        float r5318264 = x;
        float r5318265 = -7.621017336353511e-15f;
        bool r5318266 = r5318264 <= r5318265;
        float r5318267 = tan(r5318264);
        float r5318268 = r5318264 - r5318267;
        float r5318269 = r5318264 / r5318268;
        float r5318270 = exp(r5318269);
        float r5318271 = sin(r5318264);
        float r5318272 = r5318271 / r5318268;
        float r5318273 = exp(r5318272);
        float r5318274 = r5318270 / r5318273;
        float r5318275 = log(r5318274);
        float r5318276 = 0.4439134345824553f;
        bool r5318277 = r5318264 <= r5318276;
        float r5318278 = 0.225f;
        float r5318279 = r5318264 * r5318264;
        float r5318280 = r5318278 * r5318279;
        float r5318281 = 0.5f;
        float r5318282 = 0.009642857142857142f;
        float r5318283 = 4.0f;
        float r5318284 = pow(r5318264, r5318283);
        float r5318285 = r5318282 * r5318284;
        float r5318286 = r5318281 + r5318285;
        float r5318287 = r5318280 - r5318286;
        float r5318288 = r5318264 - r5318271;
        float r5318289 = r5318288 / r5318268;
        float r5318290 = exp(r5318289);
        float r5318291 = log(r5318290);
        float r5318292 = r5318277 ? r5318287 : r5318291;
        float r5318293 = r5318266 ? r5318275 : r5318292;
        return r5318293;
}

double f_od(double x) {
        double r5318294 = x;
        double r5318295 = -7.621017336353511e-15;
        bool r5318296 = r5318294 <= r5318295;
        double r5318297 = tan(r5318294);
        double r5318298 = r5318294 - r5318297;
        double r5318299 = r5318294 / r5318298;
        double r5318300 = exp(r5318299);
        double r5318301 = sin(r5318294);
        double r5318302 = r5318301 / r5318298;
        double r5318303 = exp(r5318302);
        double r5318304 = r5318300 / r5318303;
        double r5318305 = log(r5318304);
        double r5318306 = 0.4439134345824553;
        bool r5318307 = r5318294 <= r5318306;
        double r5318308 = 0.225;
        double r5318309 = r5318294 * r5318294;
        double r5318310 = r5318308 * r5318309;
        double r5318311 = 0.5;
        double r5318312 = 0.009642857142857142;
        double r5318313 = 4.0;
        double r5318314 = pow(r5318294, r5318313);
        double r5318315 = r5318312 * r5318314;
        double r5318316 = r5318311 + r5318315;
        double r5318317 = r5318310 - r5318316;
        double r5318318 = r5318294 - r5318301;
        double r5318319 = r5318318 / r5318298;
        double r5318320 = exp(r5318319);
        double r5318321 = log(r5318320);
        double r5318322 = r5318307 ? r5318317 : r5318321;
        double r5318323 = r5318296 ? r5318305 : r5318322;
        return r5318323;
}

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 r5318324, r5318325, r5318326, r5318327, r5318328, r5318329;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r5318324);
        mpfr_init(r5318325);
        mpfr_init(r5318326);
        mpfr_init(r5318327);
        mpfr_init(r5318328);
        mpfr_init(r5318329);
}

double f_im(double x) {
        mpfr_set_d(r5318324, x, MPFR_RNDN);
        mpfr_sin(r5318325, r5318324, MPFR_RNDN);
        mpfr_sub(r5318326, r5318324, r5318325, MPFR_RNDN);
        mpfr_tan(r5318327, r5318324, MPFR_RNDN);
        mpfr_sub(r5318328, r5318324, r5318327, MPFR_RNDN);
        mpfr_div(r5318329, r5318326, r5318328, MPFR_RNDN);
        return mpfr_get_d(r5318329, MPFR_RNDN);
}

static mpfr_t r5318330, r5318331, r5318332, r5318333, r5318334, r5318335, r5318336, r5318337, r5318338, r5318339, r5318340, r5318341, r5318342, r5318343, r5318344, r5318345, r5318346, r5318347, r5318348, r5318349, r5318350, r5318351, r5318352, r5318353, r5318354, r5318355, r5318356, r5318357, r5318358, r5318359;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5318330);
        mpfr_init_set_str(r5318331, "-7.621017336353511e-15", 10, MPFR_RNDN);
        mpfr_init(r5318332);
        mpfr_init(r5318333);
        mpfr_init(r5318334);
        mpfr_init(r5318335);
        mpfr_init(r5318336);
        mpfr_init(r5318337);
        mpfr_init(r5318338);
        mpfr_init(r5318339);
        mpfr_init(r5318340);
        mpfr_init(r5318341);
        mpfr_init_set_str(r5318342, "0.4439134345824553", 10, MPFR_RNDN);
        mpfr_init(r5318343);
        mpfr_init_set_str(r5318344, "9/40", 10, MPFR_RNDN);
        mpfr_init(r5318345);
        mpfr_init(r5318346);
        mpfr_init_set_str(r5318347, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r5318348, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r5318349, "4", 10, MPFR_RNDN);
        mpfr_init(r5318350);
        mpfr_init(r5318351);
        mpfr_init(r5318352);
        mpfr_init(r5318353);
        mpfr_init(r5318354);
        mpfr_init(r5318355);
        mpfr_init(r5318356);
        mpfr_init(r5318357);
        mpfr_init(r5318358);
        mpfr_init(r5318359);
}

double f_fm(double x) {
        mpfr_set_d(r5318330, x, MPFR_RNDN);
        ;
        mpfr_set_si(r5318332, mpfr_cmp(r5318330, r5318331) <= 0, MPFR_RNDN);
        mpfr_tan(r5318333, r5318330, MPFR_RNDN);
        mpfr_sub(r5318334, r5318330, r5318333, MPFR_RNDN);
        mpfr_div(r5318335, r5318330, r5318334, MPFR_RNDN);
        mpfr_exp(r5318336, r5318335, MPFR_RNDN);
        mpfr_sin(r5318337, r5318330, MPFR_RNDN);
        mpfr_div(r5318338, r5318337, r5318334, MPFR_RNDN);
        mpfr_exp(r5318339, r5318338, MPFR_RNDN);
        mpfr_div(r5318340, r5318336, r5318339, MPFR_RNDN);
        mpfr_log(r5318341, r5318340, MPFR_RNDN);
        ;
        mpfr_set_si(r5318343, mpfr_cmp(r5318330, r5318342) <= 0, MPFR_RNDN);
        ;
        mpfr_sqr(r5318345, r5318330, MPFR_RNDN);
        mpfr_mul(r5318346, r5318344, r5318345, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r5318350, r5318330, r5318349, MPFR_RNDN);
        mpfr_mul(r5318351, r5318348, r5318350, MPFR_RNDN);
        mpfr_add(r5318352, r5318347, r5318351, MPFR_RNDN);
        mpfr_sub(r5318353, r5318346, r5318352, MPFR_RNDN);
        mpfr_sub(r5318354, r5318330, r5318337, MPFR_RNDN);
        mpfr_div(r5318355, r5318354, r5318334, MPFR_RNDN);
        mpfr_exp(r5318356, r5318355, MPFR_RNDN);
        mpfr_log(r5318357, r5318356, MPFR_RNDN);
        if (mpfr_get_si(r5318343, MPFR_RNDN)) { mpfr_set(r5318358, r5318353, MPFR_RNDN); } else { mpfr_set(r5318358, r5318357, MPFR_RNDN); };
        if (mpfr_get_si(r5318332, MPFR_RNDN)) { mpfr_set(r5318359, r5318341, MPFR_RNDN); } else { mpfr_set(r5318359, r5318358, MPFR_RNDN); };
        return mpfr_get_d(r5318359, MPFR_RNDN);
}

static mpfr_t r5318360, r5318361, r5318362, r5318363, r5318364, r5318365, r5318366, r5318367, r5318368, r5318369, r5318370, r5318371, r5318372, r5318373, r5318374, r5318375, r5318376, r5318377, r5318378, r5318379, r5318380, r5318381, r5318382, r5318383, r5318384, r5318385, r5318386, r5318387, r5318388, r5318389;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5318360);
        mpfr_init_set_str(r5318361, "-7.621017336353511e-15", 10, MPFR_RNDN);
        mpfr_init(r5318362);
        mpfr_init(r5318363);
        mpfr_init(r5318364);
        mpfr_init(r5318365);
        mpfr_init(r5318366);
        mpfr_init(r5318367);
        mpfr_init(r5318368);
        mpfr_init(r5318369);
        mpfr_init(r5318370);
        mpfr_init(r5318371);
        mpfr_init_set_str(r5318372, "0.4439134345824553", 10, MPFR_RNDN);
        mpfr_init(r5318373);
        mpfr_init_set_str(r5318374, "9/40", 10, MPFR_RNDN);
        mpfr_init(r5318375);
        mpfr_init(r5318376);
        mpfr_init_set_str(r5318377, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r5318378, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r5318379, "4", 10, MPFR_RNDN);
        mpfr_init(r5318380);
        mpfr_init(r5318381);
        mpfr_init(r5318382);
        mpfr_init(r5318383);
        mpfr_init(r5318384);
        mpfr_init(r5318385);
        mpfr_init(r5318386);
        mpfr_init(r5318387);
        mpfr_init(r5318388);
        mpfr_init(r5318389);
}

double f_dm(double x) {
        mpfr_set_d(r5318360, x, MPFR_RNDN);
        ;
        mpfr_set_si(r5318362, mpfr_cmp(r5318360, r5318361) <= 0, MPFR_RNDN);
        mpfr_tan(r5318363, r5318360, MPFR_RNDN);
        mpfr_sub(r5318364, r5318360, r5318363, MPFR_RNDN);
        mpfr_div(r5318365, r5318360, r5318364, MPFR_RNDN);
        mpfr_exp(r5318366, r5318365, MPFR_RNDN);
        mpfr_sin(r5318367, r5318360, MPFR_RNDN);
        mpfr_div(r5318368, r5318367, r5318364, MPFR_RNDN);
        mpfr_exp(r5318369, r5318368, MPFR_RNDN);
        mpfr_div(r5318370, r5318366, r5318369, MPFR_RNDN);
        mpfr_log(r5318371, r5318370, MPFR_RNDN);
        ;
        mpfr_set_si(r5318373, mpfr_cmp(r5318360, r5318372) <= 0, MPFR_RNDN);
        ;
        mpfr_sqr(r5318375, r5318360, MPFR_RNDN);
        mpfr_mul(r5318376, r5318374, r5318375, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r5318380, r5318360, r5318379, MPFR_RNDN);
        mpfr_mul(r5318381, r5318378, r5318380, MPFR_RNDN);
        mpfr_add(r5318382, r5318377, r5318381, MPFR_RNDN);
        mpfr_sub(r5318383, r5318376, r5318382, MPFR_RNDN);
        mpfr_sub(r5318384, r5318360, r5318367, MPFR_RNDN);
        mpfr_div(r5318385, r5318384, r5318364, MPFR_RNDN);
        mpfr_exp(r5318386, r5318385, MPFR_RNDN);
        mpfr_log(r5318387, r5318386, MPFR_RNDN);
        if (mpfr_get_si(r5318373, MPFR_RNDN)) { mpfr_set(r5318388, r5318383, MPFR_RNDN); } else { mpfr_set(r5318388, r5318387, MPFR_RNDN); };
        if (mpfr_get_si(r5318362, MPFR_RNDN)) { mpfr_set(r5318389, r5318371, MPFR_RNDN); } else { mpfr_set(r5318389, r5318388, MPFR_RNDN); };
        return mpfr_get_d(r5318389, MPFR_RNDN);
}

