#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 r8831621 = x;
        float r8831622 = sin(r8831621);
        float r8831623 = r8831621 - r8831622;
        float r8831624 = tan(r8831621);
        float r8831625 = r8831621 - r8831624;
        float r8831626 = r8831623 / r8831625;
        return r8831626;
}

double f_id(double x) {
        double r8831627 = x;
        double r8831628 = sin(r8831627);
        double r8831629 = r8831627 - r8831628;
        double r8831630 = tan(r8831627);
        double r8831631 = r8831627 - r8831630;
        double r8831632 = r8831629 / r8831631;
        return r8831632;
}


double f_of(float x) {
        float r8831633 = x;
        float r8831634 = -0.028845995944721967;
        bool r8831635 = r8831633 <= r8831634;
        float r8831636 = 0.03301073152676202;
        bool r8831637 = r8831633 <= r8831636;
        float r8831638 = !r8831637;
        bool r8831639 = r8831635 || r8831638;
        float r8831640 = tan(r8831633);
        float r8831641 = r8831633 - r8831640;
        float r8831642 = r8831633 / r8831641;
        float r8831643 = sin(r8831633);
        float r8831644 = r8831643 / r8831641;
        float r8831645 = r8831642 - r8831644;
        float r8831646 = 2;
        float r8831647 = pow(r8831633, r8831646);
        float r8831648 = 9/40;
        float r8831649 = r8831647 * r8831648;
        float r8831650 = 1/2;
        float r8831651 = 27/2800;
        float r8831652 = 4;
        float r8831653 = pow(r8831633, r8831652);
        float r8831654 = r8831651 * r8831653;
        float r8831655 = r8831650 + r8831654;
        float r8831656 = r8831649 - r8831655;
        float r8831657 = r8831639 ? r8831645 : r8831656;
        return r8831657;
}

double f_od(double x) {
        double r8831658 = x;
        double r8831659 = -0.028845995944721967;
        bool r8831660 = r8831658 <= r8831659;
        double r8831661 = 0.03301073152676202;
        bool r8831662 = r8831658 <= r8831661;
        double r8831663 = !r8831662;
        bool r8831664 = r8831660 || r8831663;
        double r8831665 = tan(r8831658);
        double r8831666 = r8831658 - r8831665;
        double r8831667 = r8831658 / r8831666;
        double r8831668 = sin(r8831658);
        double r8831669 = r8831668 / r8831666;
        double r8831670 = r8831667 - r8831669;
        double r8831671 = 2;
        double r8831672 = pow(r8831658, r8831671);
        double r8831673 = 9/40;
        double r8831674 = r8831672 * r8831673;
        double r8831675 = 1/2;
        double r8831676 = 27/2800;
        double r8831677 = 4;
        double r8831678 = pow(r8831658, r8831677);
        double r8831679 = r8831676 * r8831678;
        double r8831680 = r8831675 + r8831679;
        double r8831681 = r8831674 - r8831680;
        double r8831682 = r8831664 ? r8831670 : r8831681;
        return r8831682;
}

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 r8831683, r8831684, r8831685, r8831686, r8831687, r8831688;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r8831683);
        mpfr_init(r8831684);
        mpfr_init(r8831685);
        mpfr_init(r8831686);
        mpfr_init(r8831687);
        mpfr_init(r8831688);
}

double f_im(double x) {
        mpfr_set_d(r8831683, x, MPFR_RNDN);
        mpfr_sin(r8831684, r8831683, MPFR_RNDN);
        mpfr_sub(r8831685, r8831683, r8831684, MPFR_RNDN);
        mpfr_tan(r8831686, r8831683, MPFR_RNDN);
        mpfr_sub(r8831687, r8831683, r8831686, MPFR_RNDN);
        mpfr_div(r8831688, r8831685, r8831687, MPFR_RNDN);
        return mpfr_get_d(r8831688, MPFR_RNDN);
}

static mpfr_t r8831689, r8831690, r8831691, r8831692, r8831693, r8831694, r8831695, r8831696, r8831697, r8831698, r8831699, r8831700, r8831701, r8831702, r8831703, r8831704, r8831705, r8831706, r8831707, r8831708, r8831709, r8831710, r8831711, r8831712, r8831713;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r8831689);
        mpfr_init_set_str(r8831690, "-0.028845995944721967", 10, MPFR_RNDN);
        mpfr_init(r8831691);
        mpfr_init_set_str(r8831692, "0.03301073152676202", 10, MPFR_RNDN);
        mpfr_init(r8831693);
        mpfr_init(r8831694);
        mpfr_init(r8831695);
        mpfr_init(r8831696);
        mpfr_init(r8831697);
        mpfr_init(r8831698);
        mpfr_init(r8831699);
        mpfr_init(r8831700);
        mpfr_init(r8831701);
        mpfr_init_set_str(r8831702, "2", 10, MPFR_RNDN);
        mpfr_init(r8831703);
        mpfr_init_set_str(r8831704, "9/40", 10, MPFR_RNDN);
        mpfr_init(r8831705);
        mpfr_init_set_str(r8831706, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r8831707, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r8831708, "4", 10, MPFR_RNDN);
        mpfr_init(r8831709);
        mpfr_init(r8831710);
        mpfr_init(r8831711);
        mpfr_init(r8831712);
        mpfr_init(r8831713);
}

double f_fm(double x) {
        mpfr_set_d(r8831689, x, MPFR_RNDN);
        ;
        mpfr_set_si(r8831691, mpfr_cmp(r8831689, r8831690) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8831693, mpfr_cmp(r8831689, r8831692) <= 0, MPFR_RNDN);
        mpfr_set_si(r8831694, !mpfr_get_si(r8831693, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r8831695, mpfr_get_si(r8831691, MPFR_RNDN) || mpfr_get_si(r8831694, MPFR_RNDN), MPFR_RNDN);
        mpfr_tan(r8831696, r8831689, MPFR_RNDN);
        mpfr_sub(r8831697, r8831689, r8831696, MPFR_RNDN);
        mpfr_div(r8831698, r8831689, r8831697, MPFR_RNDN);
        mpfr_sin(r8831699, r8831689, MPFR_RNDN);
        mpfr_div(r8831700, r8831699, r8831697, MPFR_RNDN);
        mpfr_sub(r8831701, r8831698, r8831700, MPFR_RNDN);
        ;
        mpfr_pow(r8831703, r8831689, r8831702, MPFR_RNDN);
        ;
        mpfr_mul(r8831705, r8831703, r8831704, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r8831709, r8831689, r8831708, MPFR_RNDN);
        mpfr_mul(r8831710, r8831707, r8831709, MPFR_RNDN);
        mpfr_add(r8831711, r8831706, r8831710, MPFR_RNDN);
        mpfr_sub(r8831712, r8831705, r8831711, MPFR_RNDN);
        if (mpfr_get_si(r8831695, MPFR_RNDN)) { mpfr_set(r8831713, r8831701, MPFR_RNDN); } else { mpfr_set(r8831713, r8831712, MPFR_RNDN); };
        return mpfr_get_d(r8831713, MPFR_RNDN);
}

static mpfr_t r8831714, r8831715, r8831716, r8831717, r8831718, r8831719, r8831720, r8831721, r8831722, r8831723, r8831724, r8831725, r8831726, r8831727, r8831728, r8831729, r8831730, r8831731, r8831732, r8831733, r8831734, r8831735, r8831736, r8831737, r8831738;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r8831714);
        mpfr_init_set_str(r8831715, "-0.028845995944721967", 10, MPFR_RNDN);
        mpfr_init(r8831716);
        mpfr_init_set_str(r8831717, "0.03301073152676202", 10, MPFR_RNDN);
        mpfr_init(r8831718);
        mpfr_init(r8831719);
        mpfr_init(r8831720);
        mpfr_init(r8831721);
        mpfr_init(r8831722);
        mpfr_init(r8831723);
        mpfr_init(r8831724);
        mpfr_init(r8831725);
        mpfr_init(r8831726);
        mpfr_init_set_str(r8831727, "2", 10, MPFR_RNDN);
        mpfr_init(r8831728);
        mpfr_init_set_str(r8831729, "9/40", 10, MPFR_RNDN);
        mpfr_init(r8831730);
        mpfr_init_set_str(r8831731, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r8831732, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r8831733, "4", 10, MPFR_RNDN);
        mpfr_init(r8831734);
        mpfr_init(r8831735);
        mpfr_init(r8831736);
        mpfr_init(r8831737);
        mpfr_init(r8831738);
}

double f_dm(double x) {
        mpfr_set_d(r8831714, x, MPFR_RNDN);
        ;
        mpfr_set_si(r8831716, mpfr_cmp(r8831714, r8831715) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8831718, mpfr_cmp(r8831714, r8831717) <= 0, MPFR_RNDN);
        mpfr_set_si(r8831719, !mpfr_get_si(r8831718, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r8831720, mpfr_get_si(r8831716, MPFR_RNDN) || mpfr_get_si(r8831719, MPFR_RNDN), MPFR_RNDN);
        mpfr_tan(r8831721, r8831714, MPFR_RNDN);
        mpfr_sub(r8831722, r8831714, r8831721, MPFR_RNDN);
        mpfr_div(r8831723, r8831714, r8831722, MPFR_RNDN);
        mpfr_sin(r8831724, r8831714, MPFR_RNDN);
        mpfr_div(r8831725, r8831724, r8831722, MPFR_RNDN);
        mpfr_sub(r8831726, r8831723, r8831725, MPFR_RNDN);
        ;
        mpfr_pow(r8831728, r8831714, r8831727, MPFR_RNDN);
        ;
        mpfr_mul(r8831730, r8831728, r8831729, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r8831734, r8831714, r8831733, MPFR_RNDN);
        mpfr_mul(r8831735, r8831732, r8831734, MPFR_RNDN);
        mpfr_add(r8831736, r8831731, r8831735, MPFR_RNDN);
        mpfr_sub(r8831737, r8831730, r8831736, MPFR_RNDN);
        if (mpfr_get_si(r8831720, MPFR_RNDN)) { mpfr_set(r8831738, r8831726, MPFR_RNDN); } else { mpfr_set(r8831738, r8831737, MPFR_RNDN); };
        return mpfr_get_d(r8831738, MPFR_RNDN);
}

