#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 r7493 = x;
        float r7494 = sin(r7493);
        float r7495 = r7493 - r7494;
        float r7496 = tan(r7493);
        float r7497 = r7493 - r7496;
        float r7498 = r7495 / r7497;
        return r7498;
}

double f_id(double x) {
        double r7499 = x;
        double r7500 = sin(r7499);
        double r7501 = r7499 - r7500;
        double r7502 = tan(r7499);
        double r7503 = r7499 - r7502;
        double r7504 = r7501 / r7503;
        return r7504;
}


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

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

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

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

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

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

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

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

static mpfr_t r7583, r7584, r7585, r7586, r7587, r7588, r7589, r7590, r7591, r7592, r7593, r7594, r7595, r7596, r7597, r7598, r7599, r7600, r7601, r7602, r7603, r7604, r7605, r7606;

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

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

