#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 r4773507 = x;
        float r4773508 = sin(r4773507);
        float r4773509 = r4773507 - r4773508;
        float r4773510 = tan(r4773507);
        float r4773511 = r4773507 - r4773510;
        float r4773512 = r4773509 / r4773511;
        return r4773512;
}

double f_id(double x) {
        double r4773513 = x;
        double r4773514 = sin(r4773513);
        double r4773515 = r4773513 - r4773514;
        double r4773516 = tan(r4773513);
        double r4773517 = r4773513 - r4773516;
        double r4773518 = r4773515 / r4773517;
        return r4773518;
}


double f_of(float x) {
        float r4773519 = x;
        float r4773520 = -8.658073314327725e-05f;
        bool r4773521 = r4773519 <= r4773520;
        float r4773522 = tan(r4773519);
        float r4773523 = r4773519 - r4773522;
        float r4773524 = r4773519 / r4773523;
        float r4773525 = sin(r4773519);
        float r4773526 = r4773525 / r4773523;
        float r4773527 = r4773524 - r4773526;
        float r4773528 = 0.10844290020720185f;
        bool r4773529 = r4773519 <= r4773528;
        float r4773530 = 0.225f;
        float r4773531 = r4773519 * r4773519;
        float r4773532 = r4773530 * r4773531;
        float r4773533 = 0.5f;
        float r4773534 = 0.009642857142857142f;
        float r4773535 = 4.0f;
        float r4773536 = pow(r4773519, r4773535);
        float r4773537 = r4773534 * r4773536;
        float r4773538 = r4773533 + r4773537;
        float r4773539 = r4773532 - r4773538;
        float r4773540 = r4773529 ? r4773539 : r4773527;
        float r4773541 = r4773521 ? r4773527 : r4773540;
        return r4773541;
}

double f_od(double x) {
        double r4773542 = x;
        double r4773543 = -8.658073314327725e-05;
        bool r4773544 = r4773542 <= r4773543;
        double r4773545 = tan(r4773542);
        double r4773546 = r4773542 - r4773545;
        double r4773547 = r4773542 / r4773546;
        double r4773548 = sin(r4773542);
        double r4773549 = r4773548 / r4773546;
        double r4773550 = r4773547 - r4773549;
        double r4773551 = 0.10844290020720185;
        bool r4773552 = r4773542 <= r4773551;
        double r4773553 = 0.225;
        double r4773554 = r4773542 * r4773542;
        double r4773555 = r4773553 * r4773554;
        double r4773556 = 0.5;
        double r4773557 = 0.009642857142857142;
        double r4773558 = 4.0;
        double r4773559 = pow(r4773542, r4773558);
        double r4773560 = r4773557 * r4773559;
        double r4773561 = r4773556 + r4773560;
        double r4773562 = r4773555 - r4773561;
        double r4773563 = r4773552 ? r4773562 : r4773550;
        double r4773564 = r4773544 ? r4773550 : r4773563;
        return r4773564;
}

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 r4773565, r4773566, r4773567, r4773568, r4773569, r4773570;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r4773565);
        mpfr_init(r4773566);
        mpfr_init(r4773567);
        mpfr_init(r4773568);
        mpfr_init(r4773569);
        mpfr_init(r4773570);
}

double f_im(double x) {
        mpfr_set_d(r4773565, x, MPFR_RNDN);
        mpfr_sin(r4773566, r4773565, MPFR_RNDN);
        mpfr_sub(r4773567, r4773565, r4773566, MPFR_RNDN);
        mpfr_tan(r4773568, r4773565, MPFR_RNDN);
        mpfr_sub(r4773569, r4773565, r4773568, MPFR_RNDN);
        mpfr_div(r4773570, r4773567, r4773569, MPFR_RNDN);
        return mpfr_get_d(r4773570, MPFR_RNDN);
}

static mpfr_t r4773571, r4773572, r4773573, r4773574, r4773575, r4773576, r4773577, r4773578, r4773579, r4773580, r4773581, r4773582, r4773583, r4773584, r4773585, r4773586, r4773587, r4773588, r4773589, r4773590, r4773591, r4773592, r4773593;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4773571);
        mpfr_init_set_str(r4773572, "-8.658073314327725e-05", 10, MPFR_RNDN);
        mpfr_init(r4773573);
        mpfr_init(r4773574);
        mpfr_init(r4773575);
        mpfr_init(r4773576);
        mpfr_init(r4773577);
        mpfr_init(r4773578);
        mpfr_init(r4773579);
        mpfr_init_set_str(r4773580, "0.10844290020720185", 10, MPFR_RNDN);
        mpfr_init(r4773581);
        mpfr_init_set_str(r4773582, "9/40", 10, MPFR_RNDN);
        mpfr_init(r4773583);
        mpfr_init(r4773584);
        mpfr_init_set_str(r4773585, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r4773586, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r4773587, "4", 10, MPFR_RNDN);
        mpfr_init(r4773588);
        mpfr_init(r4773589);
        mpfr_init(r4773590);
        mpfr_init(r4773591);
        mpfr_init(r4773592);
        mpfr_init(r4773593);
}

double f_fm(double x) {
        mpfr_set_d(r4773571, x, MPFR_RNDN);
        ;
        mpfr_set_si(r4773573, mpfr_cmp(r4773571, r4773572) <= 0, MPFR_RNDN);
        mpfr_tan(r4773574, r4773571, MPFR_RNDN);
        mpfr_sub(r4773575, r4773571, r4773574, MPFR_RNDN);
        mpfr_div(r4773576, r4773571, r4773575, MPFR_RNDN);
        mpfr_sin(r4773577, r4773571, MPFR_RNDN);
        mpfr_div(r4773578, r4773577, r4773575, MPFR_RNDN);
        mpfr_sub(r4773579, r4773576, r4773578, MPFR_RNDN);
        ;
        mpfr_set_si(r4773581, mpfr_cmp(r4773571, r4773580) <= 0, MPFR_RNDN);
        ;
        mpfr_sqr(r4773583, r4773571, MPFR_RNDN);
        mpfr_mul(r4773584, r4773582, r4773583, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r4773588, r4773571, r4773587, MPFR_RNDN);
        mpfr_mul(r4773589, r4773586, r4773588, MPFR_RNDN);
        mpfr_add(r4773590, r4773585, r4773589, MPFR_RNDN);
        mpfr_sub(r4773591, r4773584, r4773590, MPFR_RNDN);
        if (mpfr_get_si(r4773581, MPFR_RNDN)) { mpfr_set(r4773592, r4773591, MPFR_RNDN); } else { mpfr_set(r4773592, r4773579, MPFR_RNDN); };
        if (mpfr_get_si(r4773573, MPFR_RNDN)) { mpfr_set(r4773593, r4773579, MPFR_RNDN); } else { mpfr_set(r4773593, r4773592, MPFR_RNDN); };
        return mpfr_get_d(r4773593, MPFR_RNDN);
}

static mpfr_t r4773594, r4773595, r4773596, r4773597, r4773598, r4773599, r4773600, r4773601, r4773602, r4773603, r4773604, r4773605, r4773606, r4773607, r4773608, r4773609, r4773610, r4773611, r4773612, r4773613, r4773614, r4773615, r4773616;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4773594);
        mpfr_init_set_str(r4773595, "-8.658073314327725e-05", 10, MPFR_RNDN);
        mpfr_init(r4773596);
        mpfr_init(r4773597);
        mpfr_init(r4773598);
        mpfr_init(r4773599);
        mpfr_init(r4773600);
        mpfr_init(r4773601);
        mpfr_init(r4773602);
        mpfr_init_set_str(r4773603, "0.10844290020720185", 10, MPFR_RNDN);
        mpfr_init(r4773604);
        mpfr_init_set_str(r4773605, "9/40", 10, MPFR_RNDN);
        mpfr_init(r4773606);
        mpfr_init(r4773607);
        mpfr_init_set_str(r4773608, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r4773609, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r4773610, "4", 10, MPFR_RNDN);
        mpfr_init(r4773611);
        mpfr_init(r4773612);
        mpfr_init(r4773613);
        mpfr_init(r4773614);
        mpfr_init(r4773615);
        mpfr_init(r4773616);
}

double f_dm(double x) {
        mpfr_set_d(r4773594, x, MPFR_RNDN);
        ;
        mpfr_set_si(r4773596, mpfr_cmp(r4773594, r4773595) <= 0, MPFR_RNDN);
        mpfr_tan(r4773597, r4773594, MPFR_RNDN);
        mpfr_sub(r4773598, r4773594, r4773597, MPFR_RNDN);
        mpfr_div(r4773599, r4773594, r4773598, MPFR_RNDN);
        mpfr_sin(r4773600, r4773594, MPFR_RNDN);
        mpfr_div(r4773601, r4773600, r4773598, MPFR_RNDN);
        mpfr_sub(r4773602, r4773599, r4773601, MPFR_RNDN);
        ;
        mpfr_set_si(r4773604, mpfr_cmp(r4773594, r4773603) <= 0, MPFR_RNDN);
        ;
        mpfr_sqr(r4773606, r4773594, MPFR_RNDN);
        mpfr_mul(r4773607, r4773605, r4773606, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r4773611, r4773594, r4773610, MPFR_RNDN);
        mpfr_mul(r4773612, r4773609, r4773611, MPFR_RNDN);
        mpfr_add(r4773613, r4773608, r4773612, MPFR_RNDN);
        mpfr_sub(r4773614, r4773607, r4773613, MPFR_RNDN);
        if (mpfr_get_si(r4773604, MPFR_RNDN)) { mpfr_set(r4773615, r4773614, MPFR_RNDN); } else { mpfr_set(r4773615, r4773602, MPFR_RNDN); };
        if (mpfr_get_si(r4773596, MPFR_RNDN)) { mpfr_set(r4773616, r4773602, MPFR_RNDN); } else { mpfr_set(r4773616, r4773615, MPFR_RNDN); };
        return mpfr_get_d(r4773616, MPFR_RNDN);
}

