#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 = 0.225f;
        float r7518 = r7505 * r7517;
        float r7519 = r7518 * r7505;
        float r7520 = 4.0f;
        float r7521 = pow(r7505, r7520);
        float r7522 = 0.009642857142857142f;
        float r7523 = 0.5f;
        float r7524 = fma(r7521, r7522, r7523);
        float r7525 = r7519 - r7524;
        float r7526 = r7511 ? r7516 : r7525;
        return r7526;
}

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

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 r7549, r7550, r7551, r7552, r7553, r7554;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7549);
        mpfr_init(r7550);
        mpfr_init(r7551);
        mpfr_init(r7552);
        mpfr_init(r7553);
        mpfr_init(r7554);
}

double f_im(double x) {
        mpfr_set_d(r7549, x, MPFR_RNDN);
        mpfr_sin(r7550, r7549, MPFR_RNDN);
        mpfr_sub(r7551, r7549, r7550, MPFR_RNDN);
        mpfr_tan(r7552, r7549, MPFR_RNDN);
        mpfr_sub(r7553, r7549, r7552, MPFR_RNDN);
        mpfr_div(r7554, r7551, r7553, MPFR_RNDN);
        return mpfr_get_d(r7554, MPFR_RNDN);
}

static mpfr_t r7555, r7556, r7557, r7558, r7559, r7560, r7561, r7562, r7563, r7564, r7565, r7566, r7567, r7568, r7569, r7570, r7571, r7572, r7573, r7574, r7575, r7576;

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

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

static mpfr_t r7577, r7578, r7579, r7580, r7581, r7582, r7583, r7584, r7585, r7586, r7587, r7588, r7589, r7590, r7591, r7592, r7593, r7594, r7595, r7596, r7597, r7598;

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

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

