#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 r14513 = x;
        float r14514 = sin(r14513);
        float r14515 = r14513 - r14514;
        float r14516 = tan(r14513);
        float r14517 = r14513 - r14516;
        float r14518 = r14515 / r14517;
        return r14518;
}

double f_id(double x) {
        double r14519 = x;
        double r14520 = sin(r14519);
        double r14521 = r14519 - r14520;
        double r14522 = tan(r14519);
        double r14523 = r14519 - r14522;
        double r14524 = r14521 / r14523;
        return r14524;
}


double f_of(float x) {
        float r14525 = x;
        float r14526 = -3.150653682326084e-06f;
        bool r14527 = r14525 <= r14526;
        float r14528 = tan(r14525);
        float r14529 = r14525 - r14528;
        float r14530 = r14525 / r14529;
        float r14531 = sin(r14525);
        float r14532 = r14531 / r14529;
        float r14533 = r14530 - r14532;
        float r14534 = 0.1680384430276768f;
        bool r14535 = r14525 <= r14534;
        float r14536 = 0.225f;
        float r14537 = r14525 * r14525;
        float r14538 = r14536 * r14537;
        float r14539 = 0.009642857142857142f;
        float r14540 = 4.0f;
        float r14541 = pow(r14525, r14540);
        float r14542 = r14539 * r14541;
        float r14543 = 0.5f;
        float r14544 = r14542 + r14543;
        float r14545 = r14538 - r14544;
        float r14546 = r14535 ? r14545 : r14533;
        float r14547 = r14527 ? r14533 : r14546;
        return r14547;
}

double f_od(double x) {
        double r14548 = x;
        double r14549 = -3.150653682326084e-06;
        bool r14550 = r14548 <= r14549;
        double r14551 = tan(r14548);
        double r14552 = r14548 - r14551;
        double r14553 = r14548 / r14552;
        double r14554 = sin(r14548);
        double r14555 = r14554 / r14552;
        double r14556 = r14553 - r14555;
        double r14557 = 0.1680384430276768;
        bool r14558 = r14548 <= r14557;
        double r14559 = 0.225;
        double r14560 = r14548 * r14548;
        double r14561 = r14559 * r14560;
        double r14562 = 0.009642857142857142;
        double r14563 = 4.0;
        double r14564 = pow(r14548, r14563);
        double r14565 = r14562 * r14564;
        double r14566 = 0.5;
        double r14567 = r14565 + r14566;
        double r14568 = r14561 - r14567;
        double r14569 = r14558 ? r14568 : r14556;
        double r14570 = r14550 ? r14556 : r14569;
        return r14570;
}

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 r14571, r14572, r14573, r14574, r14575, r14576;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r14571);
        mpfr_init(r14572);
        mpfr_init(r14573);
        mpfr_init(r14574);
        mpfr_init(r14575);
        mpfr_init(r14576);
}

double f_im(double x) {
        mpfr_set_d(r14571, x, MPFR_RNDN);
        mpfr_sin(r14572, r14571, MPFR_RNDN);
        mpfr_sub(r14573, r14571, r14572, MPFR_RNDN);
        mpfr_tan(r14574, r14571, MPFR_RNDN);
        mpfr_sub(r14575, r14571, r14574, MPFR_RNDN);
        mpfr_div(r14576, r14573, r14575, MPFR_RNDN);
        return mpfr_get_d(r14576, MPFR_RNDN);
}

static mpfr_t r14577, r14578, r14579, r14580, r14581, r14582, r14583, r14584, r14585, r14586, r14587, r14588, r14589, r14590, r14591, r14592, r14593, r14594, r14595, r14596, r14597, r14598, r14599;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14577);
        mpfr_init_set_str(r14578, "-3.150653682326084e-06", 10, MPFR_RNDN);
        mpfr_init(r14579);
        mpfr_init(r14580);
        mpfr_init(r14581);
        mpfr_init(r14582);
        mpfr_init(r14583);
        mpfr_init(r14584);
        mpfr_init(r14585);
        mpfr_init_set_str(r14586, "0.1680384430276768", 10, MPFR_RNDN);
        mpfr_init(r14587);
        mpfr_init_set_str(r14588, "9/40", 10, MPFR_RNDN);
        mpfr_init(r14589);
        mpfr_init(r14590);
        mpfr_init_set_str(r14591, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r14592, "4", 10, MPFR_RNDN);
        mpfr_init(r14593);
        mpfr_init(r14594);
        mpfr_init_set_str(r14595, "1/2", 10, MPFR_RNDN);
        mpfr_init(r14596);
        mpfr_init(r14597);
        mpfr_init(r14598);
        mpfr_init(r14599);
}

double f_fm(double x) {
        mpfr_set_d(r14577, x, MPFR_RNDN);
        ;
        mpfr_set_si(r14579, mpfr_cmp(r14577, r14578) <= 0, MPFR_RNDN);
        mpfr_tan(r14580, r14577, MPFR_RNDN);
        mpfr_sub(r14581, r14577, r14580, MPFR_RNDN);
        mpfr_div(r14582, r14577, r14581, MPFR_RNDN);
        mpfr_sin(r14583, r14577, MPFR_RNDN);
        mpfr_div(r14584, r14583, r14581, MPFR_RNDN);
        mpfr_sub(r14585, r14582, r14584, MPFR_RNDN);
        ;
        mpfr_set_si(r14587, mpfr_cmp(r14577, r14586) <= 0, MPFR_RNDN);
        ;
        mpfr_sqr(r14589, r14577, MPFR_RNDN);
        mpfr_mul(r14590, r14588, r14589, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r14593, r14577, r14592, MPFR_RNDN);
        mpfr_mul(r14594, r14591, r14593, MPFR_RNDN);
        ;
        mpfr_add(r14596, r14594, r14595, MPFR_RNDN);
        mpfr_sub(r14597, r14590, r14596, MPFR_RNDN);
        if (mpfr_get_si(r14587, MPFR_RNDN)) { mpfr_set(r14598, r14597, MPFR_RNDN); } else { mpfr_set(r14598, r14585, MPFR_RNDN); };
        if (mpfr_get_si(r14579, MPFR_RNDN)) { mpfr_set(r14599, r14585, MPFR_RNDN); } else { mpfr_set(r14599, r14598, MPFR_RNDN); };
        return mpfr_get_d(r14599, MPFR_RNDN);
}

static mpfr_t r14600, r14601, r14602, r14603, r14604, r14605, r14606, r14607, r14608, r14609, r14610, r14611, r14612, r14613, r14614, r14615, r14616, r14617, r14618, r14619, r14620, r14621, r14622;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14600);
        mpfr_init_set_str(r14601, "-3.150653682326084e-06", 10, MPFR_RNDN);
        mpfr_init(r14602);
        mpfr_init(r14603);
        mpfr_init(r14604);
        mpfr_init(r14605);
        mpfr_init(r14606);
        mpfr_init(r14607);
        mpfr_init(r14608);
        mpfr_init_set_str(r14609, "0.1680384430276768", 10, MPFR_RNDN);
        mpfr_init(r14610);
        mpfr_init_set_str(r14611, "9/40", 10, MPFR_RNDN);
        mpfr_init(r14612);
        mpfr_init(r14613);
        mpfr_init_set_str(r14614, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r14615, "4", 10, MPFR_RNDN);
        mpfr_init(r14616);
        mpfr_init(r14617);
        mpfr_init_set_str(r14618, "1/2", 10, MPFR_RNDN);
        mpfr_init(r14619);
        mpfr_init(r14620);
        mpfr_init(r14621);
        mpfr_init(r14622);
}

double f_dm(double x) {
        mpfr_set_d(r14600, x, MPFR_RNDN);
        ;
        mpfr_set_si(r14602, mpfr_cmp(r14600, r14601) <= 0, MPFR_RNDN);
        mpfr_tan(r14603, r14600, MPFR_RNDN);
        mpfr_sub(r14604, r14600, r14603, MPFR_RNDN);
        mpfr_div(r14605, r14600, r14604, MPFR_RNDN);
        mpfr_sin(r14606, r14600, MPFR_RNDN);
        mpfr_div(r14607, r14606, r14604, MPFR_RNDN);
        mpfr_sub(r14608, r14605, r14607, MPFR_RNDN);
        ;
        mpfr_set_si(r14610, mpfr_cmp(r14600, r14609) <= 0, MPFR_RNDN);
        ;
        mpfr_sqr(r14612, r14600, MPFR_RNDN);
        mpfr_mul(r14613, r14611, r14612, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r14616, r14600, r14615, MPFR_RNDN);
        mpfr_mul(r14617, r14614, r14616, MPFR_RNDN);
        ;
        mpfr_add(r14619, r14617, r14618, MPFR_RNDN);
        mpfr_sub(r14620, r14613, r14619, MPFR_RNDN);
        if (mpfr_get_si(r14610, MPFR_RNDN)) { mpfr_set(r14621, r14620, MPFR_RNDN); } else { mpfr_set(r14621, r14608, MPFR_RNDN); };
        if (mpfr_get_si(r14602, MPFR_RNDN)) { mpfr_set(r14622, r14608, MPFR_RNDN); } else { mpfr_set(r14622, r14621, MPFR_RNDN); };
        return mpfr_get_d(r14622, MPFR_RNDN);
}

