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

char *name = "sintan (problem 3.4.5)";

double f_if(float x) {
        float r7496 = x;
        float r7497 = sin(r7496);
        float r7498 = r7496 - r7497;
        float r7499 = tan(r7496);
        float r7500 = r7496 - r7499;
        float r7501 = r7498 / r7500;
        return r7501;
}

double f_id(double x) {
        double r7502 = x;
        double r7503 = sin(r7502);
        double r7504 = r7502 - r7503;
        double r7505 = tan(r7502);
        double r7506 = r7502 - r7505;
        double r7507 = r7504 / r7506;
        return r7507;
}


double f_of(float x) {
        float r7508 = x;
        float r7509 = -0.027733366772859987f;
        bool r7510 = r7508 <= r7509;
        float r7511 = 0.0278442223623006f;
        bool r7512 = r7508 <= r7511;
        float r7513 = !r7512;
        bool r7514 = r7510 || r7513;
        float r7515 = sin(r7508);
        float r7516 = r7508 - r7515;
        float r7517 = tan(r7508);
        float r7518 = r7508 - r7517;
        float r7519 = r7516 / r7518;
        float r7520 = 0.225f;
        float r7521 = r7508 * r7520;
        float r7522 = r7521 * r7508;
        float r7523 = 4.0f;
        float r7524 = pow(r7508, r7523);
        float r7525 = 0.009642857142857142f;
        float r7526 = 0.5f;
        float r7527 = fma(r7524, r7525, r7526);
        float r7528 = r7522 - r7527;
        float r7529 = r7514 ? r7519 : r7528;
        return r7529;
}

double f_od(double x) {
        double r7530 = x;
        double r7531 = -0.027733366772859987;
        bool r7532 = r7530 <= r7531;
        double r7533 = 0.0278442223623006;
        bool r7534 = r7530 <= r7533;
        double r7535 = !r7534;
        bool r7536 = r7532 || r7535;
        double r7537 = sin(r7530);
        double r7538 = r7530 - r7537;
        double r7539 = tan(r7530);
        double r7540 = r7530 - r7539;
        double r7541 = r7538 / r7540;
        double r7542 = 0.225;
        double r7543 = r7530 * r7542;
        double r7544 = r7543 * r7530;
        double r7545 = 4.0;
        double r7546 = pow(r7530, r7545);
        double r7547 = 0.009642857142857142;
        double r7548 = 0.5;
        double r7549 = fma(r7546, r7547, r7548);
        double r7550 = r7544 - r7549;
        double r7551 = r7536 ? r7541 : r7550;
        return r7551;
}

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 r7552, r7553, r7554, r7555, r7556, r7557;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7552);
        mpfr_init(r7553);
        mpfr_init(r7554);
        mpfr_init(r7555);
        mpfr_init(r7556);
        mpfr_init(r7557);
}

double f_im(double x) {
        mpfr_set_d(r7552, x, MPFR_RNDN);
        mpfr_sin(r7553, r7552, MPFR_RNDN);
        mpfr_sub(r7554, r7552, r7553, MPFR_RNDN);
        mpfr_tan(r7555, r7552, MPFR_RNDN);
        mpfr_sub(r7556, r7552, r7555, MPFR_RNDN);
        mpfr_div(r7557, r7554, r7556, MPFR_RNDN);
        return mpfr_get_d(r7557, MPFR_RNDN);
}

static mpfr_t r7558, r7559, r7560, r7561, r7562, r7563, r7564, r7565, r7566, r7567, r7568, r7569, r7570, r7571, r7572, r7573, r7574, r7575, r7576, r7577, r7578, r7579;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7558);
        mpfr_init_set_str(r7559, "-0.027733366772859987", 10, MPFR_RNDN);
        mpfr_init(r7560);
        mpfr_init_set_str(r7561, "0.0278442223623006", 10, MPFR_RNDN);
        mpfr_init(r7562);
        mpfr_init(r7563);
        mpfr_init(r7564);
        mpfr_init(r7565);
        mpfr_init(r7566);
        mpfr_init(r7567);
        mpfr_init(r7568);
        mpfr_init(r7569);
        mpfr_init_set_str(r7570, "9/40", 10, MPFR_RNDN);
        mpfr_init(r7571);
        mpfr_init(r7572);
        mpfr_init_set_str(r7573, "4", 10, MPFR_RNDN);
        mpfr_init(r7574);
        mpfr_init_set_str(r7575, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r7576, "1/2", 10, MPFR_RNDN);
        mpfr_init(r7577);
        mpfr_init(r7578);
        mpfr_init(r7579);
}

double f_fm(double x) {
        mpfr_set_d(r7558, x, MPFR_RNDN);
        ;
        mpfr_set_si(r7560, mpfr_cmp(r7558, r7559) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r7562, mpfr_cmp(r7558, r7561) <= 0, MPFR_RNDN);
        mpfr_set_si(r7563, !mpfr_get_si(r7562, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r7564, mpfr_get_si(r7560, MPFR_RNDN) || mpfr_get_si(r7563, MPFR_RNDN), MPFR_RNDN);
        mpfr_sin(r7565, r7558, MPFR_RNDN);
        mpfr_sub(r7566, r7558, r7565, MPFR_RNDN);
        mpfr_tan(r7567, r7558, MPFR_RNDN);
        mpfr_sub(r7568, r7558, r7567, MPFR_RNDN);
        mpfr_div(r7569, r7566, r7568, MPFR_RNDN);
        ;
        mpfr_mul(r7571, r7558, r7570, MPFR_RNDN);
        mpfr_mul(r7572, r7571, r7558, MPFR_RNDN);
        ;
        mpfr_pow(r7574, r7558, r7573, MPFR_RNDN);
        ;
        ;
        mpfr_fma(r7577, r7574, r7575, r7576, MPFR_RNDN);
        mpfr_sub(r7578, r7572, r7577, MPFR_RNDN);
        if (mpfr_get_si(r7564, MPFR_RNDN)) { mpfr_set(r7579, r7569, MPFR_RNDN); } else { mpfr_set(r7579, r7578, MPFR_RNDN); };
        return mpfr_get_d(r7579, MPFR_RNDN);
}

static mpfr_t r7580, r7581, r7582, r7583, r7584, r7585, r7586, r7587, r7588, r7589, r7590, r7591, r7592, r7593, r7594, r7595, r7596, r7597, r7598, r7599, r7600, r7601;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7580);
        mpfr_init_set_str(r7581, "-0.027733366772859987", 10, MPFR_RNDN);
        mpfr_init(r7582);
        mpfr_init_set_str(r7583, "0.0278442223623006", 10, MPFR_RNDN);
        mpfr_init(r7584);
        mpfr_init(r7585);
        mpfr_init(r7586);
        mpfr_init(r7587);
        mpfr_init(r7588);
        mpfr_init(r7589);
        mpfr_init(r7590);
        mpfr_init(r7591);
        mpfr_init_set_str(r7592, "9/40", 10, MPFR_RNDN);
        mpfr_init(r7593);
        mpfr_init(r7594);
        mpfr_init_set_str(r7595, "4", 10, MPFR_RNDN);
        mpfr_init(r7596);
        mpfr_init_set_str(r7597, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r7598, "1/2", 10, MPFR_RNDN);
        mpfr_init(r7599);
        mpfr_init(r7600);
        mpfr_init(r7601);
}

double f_dm(double x) {
        mpfr_set_d(r7580, x, MPFR_RNDN);
        ;
        mpfr_set_si(r7582, mpfr_cmp(r7580, r7581) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r7584, mpfr_cmp(r7580, r7583) <= 0, MPFR_RNDN);
        mpfr_set_si(r7585, !mpfr_get_si(r7584, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r7586, mpfr_get_si(r7582, MPFR_RNDN) || mpfr_get_si(r7585, MPFR_RNDN), MPFR_RNDN);
        mpfr_sin(r7587, r7580, MPFR_RNDN);
        mpfr_sub(r7588, r7580, r7587, MPFR_RNDN);
        mpfr_tan(r7589, r7580, MPFR_RNDN);
        mpfr_sub(r7590, r7580, r7589, MPFR_RNDN);
        mpfr_div(r7591, r7588, r7590, MPFR_RNDN);
        ;
        mpfr_mul(r7593, r7580, r7592, MPFR_RNDN);
        mpfr_mul(r7594, r7593, r7580, MPFR_RNDN);
        ;
        mpfr_pow(r7596, r7580, r7595, MPFR_RNDN);
        ;
        ;
        mpfr_fma(r7599, r7596, r7597, r7598, MPFR_RNDN);
        mpfr_sub(r7600, r7594, r7599, MPFR_RNDN);
        if (mpfr_get_si(r7586, MPFR_RNDN)) { mpfr_set(r7601, r7591, MPFR_RNDN); } else { mpfr_set(r7601, r7600, MPFR_RNDN); };
        return mpfr_get_d(r7601, MPFR_RNDN);
}

