#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 r7523 = x;
        float r7524 = sin(r7523);
        float r7525 = r7523 - r7524;
        float r7526 = tan(r7523);
        float r7527 = r7523 - r7526;
        float r7528 = r7525 / r7527;
        return r7528;
}

double f_id(double x) {
        double r7529 = x;
        double r7530 = sin(r7529);
        double r7531 = r7529 - r7530;
        double r7532 = tan(r7529);
        double r7533 = r7529 - r7532;
        double r7534 = r7531 / r7533;
        return r7534;
}


double f_of(float x) {
        float r7535 = x;
        float r7536 = -0.030793827110981598f;
        bool r7537 = r7535 <= r7536;
        float r7538 = 0.02802111767978534f;
        bool r7539 = r7535 <= r7538;
        float r7540 = !r7539;
        bool r7541 = r7537 || r7540;
        float r7542 = sin(r7535);
        float r7543 = r7535 - r7542;
        float r7544 = tan(r7535);
        float r7545 = r7535 - r7544;
        float r7546 = r7543 / r7545;
        float r7547 = r7546 * r7546;
        float r7548 = r7546 * r7547;
        float r7549 = cbrt(r7548);
        float r7550 = 0.225f;
        float r7551 = r7550 * r7535;
        float r7552 = r7535 * r7551;
        float r7553 = 0.009642857142857142f;
        float r7554 = 4.0f;
        float r7555 = pow(r7535, r7554);
        float r7556 = r7553 * r7555;
        float r7557 = r7552 - r7556;
        float r7558 = 0.5f;
        float r7559 = r7557 - r7558;
        float r7560 = r7541 ? r7549 : r7559;
        return r7560;
}

double f_od(double x) {
        double r7561 = x;
        double r7562 = -0.030793827110981598;
        bool r7563 = r7561 <= r7562;
        double r7564 = 0.02802111767978534;
        bool r7565 = r7561 <= r7564;
        double r7566 = !r7565;
        bool r7567 = r7563 || r7566;
        double r7568 = sin(r7561);
        double r7569 = r7561 - r7568;
        double r7570 = tan(r7561);
        double r7571 = r7561 - r7570;
        double r7572 = r7569 / r7571;
        double r7573 = r7572 * r7572;
        double r7574 = r7572 * r7573;
        double r7575 = cbrt(r7574);
        double r7576 = 0.225;
        double r7577 = r7576 * r7561;
        double r7578 = r7561 * r7577;
        double r7579 = 0.009642857142857142;
        double r7580 = 4.0;
        double r7581 = pow(r7561, r7580);
        double r7582 = r7579 * r7581;
        double r7583 = r7578 - r7582;
        double r7584 = 0.5;
        double r7585 = r7583 - r7584;
        double r7586 = r7567 ? r7575 : r7585;
        return r7586;
}

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 r7587, r7588, r7589, r7590, r7591, r7592;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7587);
        mpfr_init(r7588);
        mpfr_init(r7589);
        mpfr_init(r7590);
        mpfr_init(r7591);
        mpfr_init(r7592);
}

double f_im(double x) {
        mpfr_set_d(r7587, x, MPFR_RNDN);
        mpfr_sin(r7588, r7587, MPFR_RNDN);
        mpfr_sub(r7589, r7587, r7588, MPFR_RNDN);
        mpfr_tan(r7590, r7587, MPFR_RNDN);
        mpfr_sub(r7591, r7587, r7590, MPFR_RNDN);
        mpfr_div(r7592, r7589, r7591, MPFR_RNDN);
        return mpfr_get_d(r7592, MPFR_RNDN);
}

static mpfr_t r7593, r7594, r7595, r7596, r7597, r7598, r7599, r7600, r7601, r7602, r7603, r7604, r7605, r7606, r7607, r7608, r7609, r7610, r7611, r7612, r7613, r7614, r7615, r7616, r7617, r7618;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7593);
        mpfr_init_set_str(r7594, "-0.030793827110981598", 10, MPFR_RNDN);
        mpfr_init(r7595);
        mpfr_init_set_str(r7596, "0.02802111767978534", 10, MPFR_RNDN);
        mpfr_init(r7597);
        mpfr_init(r7598);
        mpfr_init(r7599);
        mpfr_init(r7600);
        mpfr_init(r7601);
        mpfr_init(r7602);
        mpfr_init(r7603);
        mpfr_init(r7604);
        mpfr_init(r7605);
        mpfr_init(r7606);
        mpfr_init(r7607);
        mpfr_init_set_str(r7608, "9/40", 10, MPFR_RNDN);
        mpfr_init(r7609);
        mpfr_init(r7610);
        mpfr_init_set_str(r7611, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r7612, "4", 10, MPFR_RNDN);
        mpfr_init(r7613);
        mpfr_init(r7614);
        mpfr_init(r7615);
        mpfr_init_set_str(r7616, "1/2", 10, MPFR_RNDN);
        mpfr_init(r7617);
        mpfr_init(r7618);
}

double f_fm(double x) {
        mpfr_set_d(r7593, x, MPFR_RNDN);
        ;
        mpfr_set_si(r7595, mpfr_cmp(r7593, r7594) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r7597, mpfr_cmp(r7593, r7596) <= 0, MPFR_RNDN);
        mpfr_set_si(r7598, !mpfr_get_si(r7597, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r7599, mpfr_get_si(r7595, MPFR_RNDN) || mpfr_get_si(r7598, MPFR_RNDN), MPFR_RNDN);
        mpfr_sin(r7600, r7593, MPFR_RNDN);
        mpfr_sub(r7601, r7593, r7600, MPFR_RNDN);
        mpfr_tan(r7602, r7593, MPFR_RNDN);
        mpfr_sub(r7603, r7593, r7602, MPFR_RNDN);
        mpfr_div(r7604, r7601, r7603, MPFR_RNDN);
        mpfr_mul(r7605, r7604, r7604, MPFR_RNDN);
        mpfr_mul(r7606, r7604, r7605, MPFR_RNDN);
        mpfr_cbrt(r7607, r7606, MPFR_RNDN);
        ;
        mpfr_mul(r7609, r7608, r7593, MPFR_RNDN);
        mpfr_mul(r7610, r7593, r7609, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r7613, r7593, r7612, MPFR_RNDN);
        mpfr_mul(r7614, r7611, r7613, MPFR_RNDN);
        mpfr_sub(r7615, r7610, r7614, MPFR_RNDN);
        ;
        mpfr_sub(r7617, r7615, r7616, MPFR_RNDN);
        if (mpfr_get_si(r7599, MPFR_RNDN)) { mpfr_set(r7618, r7607, MPFR_RNDN); } else { mpfr_set(r7618, r7617, MPFR_RNDN); };
        return mpfr_get_d(r7618, MPFR_RNDN);
}

static mpfr_t r7619, r7620, r7621, r7622, r7623, r7624, r7625, r7626, r7627, r7628, r7629, r7630, r7631, r7632, r7633, r7634, r7635, r7636, r7637, r7638, r7639, r7640, r7641, r7642, r7643, r7644;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7619);
        mpfr_init_set_str(r7620, "-0.030793827110981598", 10, MPFR_RNDN);
        mpfr_init(r7621);
        mpfr_init_set_str(r7622, "0.02802111767978534", 10, MPFR_RNDN);
        mpfr_init(r7623);
        mpfr_init(r7624);
        mpfr_init(r7625);
        mpfr_init(r7626);
        mpfr_init(r7627);
        mpfr_init(r7628);
        mpfr_init(r7629);
        mpfr_init(r7630);
        mpfr_init(r7631);
        mpfr_init(r7632);
        mpfr_init(r7633);
        mpfr_init_set_str(r7634, "9/40", 10, MPFR_RNDN);
        mpfr_init(r7635);
        mpfr_init(r7636);
        mpfr_init_set_str(r7637, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r7638, "4", 10, MPFR_RNDN);
        mpfr_init(r7639);
        mpfr_init(r7640);
        mpfr_init(r7641);
        mpfr_init_set_str(r7642, "1/2", 10, MPFR_RNDN);
        mpfr_init(r7643);
        mpfr_init(r7644);
}

double f_dm(double x) {
        mpfr_set_d(r7619, x, MPFR_RNDN);
        ;
        mpfr_set_si(r7621, mpfr_cmp(r7619, r7620) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r7623, mpfr_cmp(r7619, r7622) <= 0, MPFR_RNDN);
        mpfr_set_si(r7624, !mpfr_get_si(r7623, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r7625, mpfr_get_si(r7621, MPFR_RNDN) || mpfr_get_si(r7624, MPFR_RNDN), MPFR_RNDN);
        mpfr_sin(r7626, r7619, MPFR_RNDN);
        mpfr_sub(r7627, r7619, r7626, MPFR_RNDN);
        mpfr_tan(r7628, r7619, MPFR_RNDN);
        mpfr_sub(r7629, r7619, r7628, MPFR_RNDN);
        mpfr_div(r7630, r7627, r7629, MPFR_RNDN);
        mpfr_mul(r7631, r7630, r7630, MPFR_RNDN);
        mpfr_mul(r7632, r7630, r7631, MPFR_RNDN);
        mpfr_cbrt(r7633, r7632, MPFR_RNDN);
        ;
        mpfr_mul(r7635, r7634, r7619, MPFR_RNDN);
        mpfr_mul(r7636, r7619, r7635, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r7639, r7619, r7638, MPFR_RNDN);
        mpfr_mul(r7640, r7637, r7639, MPFR_RNDN);
        mpfr_sub(r7641, r7636, r7640, MPFR_RNDN);
        ;
        mpfr_sub(r7643, r7641, r7642, MPFR_RNDN);
        if (mpfr_get_si(r7625, MPFR_RNDN)) { mpfr_set(r7644, r7633, MPFR_RNDN); } else { mpfr_set(r7644, r7643, MPFR_RNDN); };
        return mpfr_get_d(r7644, MPFR_RNDN);
}

