#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 r4617463 = x;
        float r4617464 = sin(r4617463);
        float r4617465 = r4617463 - r4617464;
        float r4617466 = tan(r4617463);
        float r4617467 = r4617463 - r4617466;
        float r4617468 = r4617465 / r4617467;
        return r4617468;
}

double f_id(double x) {
        double r4617469 = x;
        double r4617470 = sin(r4617469);
        double r4617471 = r4617469 - r4617470;
        double r4617472 = tan(r4617469);
        double r4617473 = r4617469 - r4617472;
        double r4617474 = r4617471 / r4617473;
        return r4617474;
}


double f_of(float x) {
        float r4617475 = x;
        float r4617476 = -8.658073314327725e-05f;
        bool r4617477 = r4617475 <= r4617476;
        float r4617478 = tan(r4617475);
        float r4617479 = r4617475 - r4617478;
        float r4617480 = r4617475 / r4617479;
        float r4617481 = sin(r4617475);
        float r4617482 = r4617481 / r4617479;
        float r4617483 = r4617480 - r4617482;
        float r4617484 = 0.10844290020720185f;
        bool r4617485 = r4617475 <= r4617484;
        float r4617486 = 0.225f;
        float r4617487 = r4617475 * r4617475;
        float r4617488 = r4617486 * r4617487;
        float r4617489 = 0.009642857142857142f;
        float r4617490 = 4.0f;
        float r4617491 = pow(r4617475, r4617490);
        float r4617492 = r4617489 * r4617491;
        float r4617493 = 0.5f;
        float r4617494 = r4617492 + r4617493;
        float r4617495 = r4617488 - r4617494;
        float r4617496 = r4617485 ? r4617495 : r4617483;
        float r4617497 = r4617477 ? r4617483 : r4617496;
        return r4617497;
}

double f_od(double x) {
        double r4617498 = x;
        double r4617499 = -8.658073314327725e-05;
        bool r4617500 = r4617498 <= r4617499;
        double r4617501 = tan(r4617498);
        double r4617502 = r4617498 - r4617501;
        double r4617503 = r4617498 / r4617502;
        double r4617504 = sin(r4617498);
        double r4617505 = r4617504 / r4617502;
        double r4617506 = r4617503 - r4617505;
        double r4617507 = 0.10844290020720185;
        bool r4617508 = r4617498 <= r4617507;
        double r4617509 = 0.225;
        double r4617510 = r4617498 * r4617498;
        double r4617511 = r4617509 * r4617510;
        double r4617512 = 0.009642857142857142;
        double r4617513 = 4.0;
        double r4617514 = pow(r4617498, r4617513);
        double r4617515 = r4617512 * r4617514;
        double r4617516 = 0.5;
        double r4617517 = r4617515 + r4617516;
        double r4617518 = r4617511 - r4617517;
        double r4617519 = r4617508 ? r4617518 : r4617506;
        double r4617520 = r4617500 ? r4617506 : r4617519;
        return r4617520;
}

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 r4617521, r4617522, r4617523, r4617524, r4617525, r4617526;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r4617521);
        mpfr_init(r4617522);
        mpfr_init(r4617523);
        mpfr_init(r4617524);
        mpfr_init(r4617525);
        mpfr_init(r4617526);
}

double f_im(double x) {
        mpfr_set_d(r4617521, x, MPFR_RNDN);
        mpfr_sin(r4617522, r4617521, MPFR_RNDN);
        mpfr_sub(r4617523, r4617521, r4617522, MPFR_RNDN);
        mpfr_tan(r4617524, r4617521, MPFR_RNDN);
        mpfr_sub(r4617525, r4617521, r4617524, MPFR_RNDN);
        mpfr_div(r4617526, r4617523, r4617525, MPFR_RNDN);
        return mpfr_get_d(r4617526, MPFR_RNDN);
}

static mpfr_t r4617527, r4617528, r4617529, r4617530, r4617531, r4617532, r4617533, r4617534, r4617535, r4617536, r4617537, r4617538, r4617539, r4617540, r4617541, r4617542, r4617543, r4617544, r4617545, r4617546, r4617547, r4617548, r4617549;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4617527);
        mpfr_init_set_str(r4617528, "-8.658073314327725e-05", 10, MPFR_RNDN);
        mpfr_init(r4617529);
        mpfr_init(r4617530);
        mpfr_init(r4617531);
        mpfr_init(r4617532);
        mpfr_init(r4617533);
        mpfr_init(r4617534);
        mpfr_init(r4617535);
        mpfr_init_set_str(r4617536, "0.10844290020720185", 10, MPFR_RNDN);
        mpfr_init(r4617537);
        mpfr_init_set_str(r4617538, "9/40", 10, MPFR_RNDN);
        mpfr_init(r4617539);
        mpfr_init(r4617540);
        mpfr_init_set_str(r4617541, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r4617542, "4", 10, MPFR_RNDN);
        mpfr_init(r4617543);
        mpfr_init(r4617544);
        mpfr_init_set_str(r4617545, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4617546);
        mpfr_init(r4617547);
        mpfr_init(r4617548);
        mpfr_init(r4617549);
}

double f_fm(double x) {
        mpfr_set_d(r4617527, x, MPFR_RNDN);
        ;
        mpfr_set_si(r4617529, mpfr_cmp(r4617527, r4617528) <= 0, MPFR_RNDN);
        mpfr_tan(r4617530, r4617527, MPFR_RNDN);
        mpfr_sub(r4617531, r4617527, r4617530, MPFR_RNDN);
        mpfr_div(r4617532, r4617527, r4617531, MPFR_RNDN);
        mpfr_sin(r4617533, r4617527, MPFR_RNDN);
        mpfr_div(r4617534, r4617533, r4617531, MPFR_RNDN);
        mpfr_sub(r4617535, r4617532, r4617534, MPFR_RNDN);
        ;
        mpfr_set_si(r4617537, mpfr_cmp(r4617527, r4617536) <= 0, MPFR_RNDN);
        ;
        mpfr_sqr(r4617539, r4617527, MPFR_RNDN);
        mpfr_mul(r4617540, r4617538, r4617539, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4617543, r4617527, r4617542, MPFR_RNDN);
        mpfr_mul(r4617544, r4617541, r4617543, MPFR_RNDN);
        ;
        mpfr_add(r4617546, r4617544, r4617545, MPFR_RNDN);
        mpfr_sub(r4617547, r4617540, r4617546, MPFR_RNDN);
        if (mpfr_get_si(r4617537, MPFR_RNDN)) { mpfr_set(r4617548, r4617547, MPFR_RNDN); } else { mpfr_set(r4617548, r4617535, MPFR_RNDN); };
        if (mpfr_get_si(r4617529, MPFR_RNDN)) { mpfr_set(r4617549, r4617535, MPFR_RNDN); } else { mpfr_set(r4617549, r4617548, MPFR_RNDN); };
        return mpfr_get_d(r4617549, MPFR_RNDN);
}

static mpfr_t r4617550, r4617551, r4617552, r4617553, r4617554, r4617555, r4617556, r4617557, r4617558, r4617559, r4617560, r4617561, r4617562, r4617563, r4617564, r4617565, r4617566, r4617567, r4617568, r4617569, r4617570, r4617571, r4617572;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4617550);
        mpfr_init_set_str(r4617551, "-8.658073314327725e-05", 10, MPFR_RNDN);
        mpfr_init(r4617552);
        mpfr_init(r4617553);
        mpfr_init(r4617554);
        mpfr_init(r4617555);
        mpfr_init(r4617556);
        mpfr_init(r4617557);
        mpfr_init(r4617558);
        mpfr_init_set_str(r4617559, "0.10844290020720185", 10, MPFR_RNDN);
        mpfr_init(r4617560);
        mpfr_init_set_str(r4617561, "9/40", 10, MPFR_RNDN);
        mpfr_init(r4617562);
        mpfr_init(r4617563);
        mpfr_init_set_str(r4617564, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r4617565, "4", 10, MPFR_RNDN);
        mpfr_init(r4617566);
        mpfr_init(r4617567);
        mpfr_init_set_str(r4617568, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4617569);
        mpfr_init(r4617570);
        mpfr_init(r4617571);
        mpfr_init(r4617572);
}

double f_dm(double x) {
        mpfr_set_d(r4617550, x, MPFR_RNDN);
        ;
        mpfr_set_si(r4617552, mpfr_cmp(r4617550, r4617551) <= 0, MPFR_RNDN);
        mpfr_tan(r4617553, r4617550, MPFR_RNDN);
        mpfr_sub(r4617554, r4617550, r4617553, MPFR_RNDN);
        mpfr_div(r4617555, r4617550, r4617554, MPFR_RNDN);
        mpfr_sin(r4617556, r4617550, MPFR_RNDN);
        mpfr_div(r4617557, r4617556, r4617554, MPFR_RNDN);
        mpfr_sub(r4617558, r4617555, r4617557, MPFR_RNDN);
        ;
        mpfr_set_si(r4617560, mpfr_cmp(r4617550, r4617559) <= 0, MPFR_RNDN);
        ;
        mpfr_sqr(r4617562, r4617550, MPFR_RNDN);
        mpfr_mul(r4617563, r4617561, r4617562, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4617566, r4617550, r4617565, MPFR_RNDN);
        mpfr_mul(r4617567, r4617564, r4617566, MPFR_RNDN);
        ;
        mpfr_add(r4617569, r4617567, r4617568, MPFR_RNDN);
        mpfr_sub(r4617570, r4617563, r4617569, MPFR_RNDN);
        if (mpfr_get_si(r4617560, MPFR_RNDN)) { mpfr_set(r4617571, r4617570, MPFR_RNDN); } else { mpfr_set(r4617571, r4617558, MPFR_RNDN); };
        if (mpfr_get_si(r4617552, MPFR_RNDN)) { mpfr_set(r4617572, r4617558, MPFR_RNDN); } else { mpfr_set(r4617572, r4617571, MPFR_RNDN); };
        return mpfr_get_d(r4617572, MPFR_RNDN);
}

