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

char *name = "2tan (problem 3.3.2)";

double f_if(float x, float eps) {
        float r4417489 = x;
        float r4417490 = eps;
        float r4417491 = r4417489 + r4417490;
        float r4417492 = tan(r4417491);
        float r4417493 = tan(r4417489);
        float r4417494 = r4417492 - r4417493;
        return r4417494;
}

double f_id(double x, double eps) {
        double r4417495 = x;
        double r4417496 = eps;
        double r4417497 = r4417495 + r4417496;
        double r4417498 = tan(r4417497);
        double r4417499 = tan(r4417495);
        double r4417500 = r4417498 - r4417499;
        return r4417500;
}


double f_of(float x, float eps) {
        float r4417501 = eps;
        float r4417502 = -7.762273209586751e-47;
        bool r4417503 = r4417501 <= r4417502;
        float r4417504 = tan(r4417501);
        float r4417505 = x;
        float r4417506 = tan(r4417505);
        float r4417507 = r4417504 + r4417506;
        float r4417508 = 1;
        float r4417509 = r4417506 * r4417504;
        float r4417510 = r4417508 + r4417509;
        float r4417511 = r4417507 * r4417510;
        float r4417512 = cos(r4417505);
        float r4417513 = r4417511 * r4417512;
        float r4417514 = r4417504 * r4417506;
        float r4417515 = r4417514 * r4417514;
        float r4417516 = r4417508 - r4417515;
        float r4417517 = sin(r4417505);
        float r4417518 = r4417516 * r4417517;
        float r4417519 = r4417513 - r4417518;
        float r4417520 = r4417516 * r4417512;
        float r4417521 = r4417519 / r4417520;
        float r4417522 = 6.465253545275874e-18;
        bool r4417523 = r4417501 <= r4417522;
        float r4417524 = 3;
        float r4417525 = pow(r4417501, r4417524);
        float r4417526 = 2;
        float r4417527 = pow(r4417505, r4417526);
        float r4417528 = r4417525 * r4417527;
        float r4417529 = pow(r4417501, r4417526);
        float r4417530 = r4417529 * r4417505;
        float r4417531 = r4417501 + r4417530;
        float r4417532 = r4417528 + r4417531;
        float r4417533 = pow(r4417509, r4417524);
        float r4417534 = r4417533 * r4417533;
        float r4417535 = cbrt(r4417534);
        float r4417536 = r4417508 - r4417535;
        float r4417537 = r4417507 / r4417536;
        float r4417538 = r4417537 * r4417510;
        float r4417539 = r4417538 - r4417506;
        float r4417540 = r4417523 ? r4417532 : r4417539;
        float r4417541 = r4417503 ? r4417521 : r4417540;
        return r4417541;
}

double f_od(double x, double eps) {
        double r4417542 = eps;
        double r4417543 = -7.762273209586751e-47;
        bool r4417544 = r4417542 <= r4417543;
        double r4417545 = tan(r4417542);
        double r4417546 = x;
        double r4417547 = tan(r4417546);
        double r4417548 = r4417545 + r4417547;
        double r4417549 = 1;
        double r4417550 = r4417547 * r4417545;
        double r4417551 = r4417549 + r4417550;
        double r4417552 = r4417548 * r4417551;
        double r4417553 = cos(r4417546);
        double r4417554 = r4417552 * r4417553;
        double r4417555 = r4417545 * r4417547;
        double r4417556 = r4417555 * r4417555;
        double r4417557 = r4417549 - r4417556;
        double r4417558 = sin(r4417546);
        double r4417559 = r4417557 * r4417558;
        double r4417560 = r4417554 - r4417559;
        double r4417561 = r4417557 * r4417553;
        double r4417562 = r4417560 / r4417561;
        double r4417563 = 6.465253545275874e-18;
        bool r4417564 = r4417542 <= r4417563;
        double r4417565 = 3;
        double r4417566 = pow(r4417542, r4417565);
        double r4417567 = 2;
        double r4417568 = pow(r4417546, r4417567);
        double r4417569 = r4417566 * r4417568;
        double r4417570 = pow(r4417542, r4417567);
        double r4417571 = r4417570 * r4417546;
        double r4417572 = r4417542 + r4417571;
        double r4417573 = r4417569 + r4417572;
        double r4417574 = pow(r4417550, r4417565);
        double r4417575 = r4417574 * r4417574;
        double r4417576 = cbrt(r4417575);
        double r4417577 = r4417549 - r4417576;
        double r4417578 = r4417548 / r4417577;
        double r4417579 = r4417578 * r4417551;
        double r4417580 = r4417579 - r4417547;
        double r4417581 = r4417564 ? r4417573 : r4417580;
        double r4417582 = r4417544 ? r4417562 : r4417581;
        return r4417582;
}

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 r4417583, r4417584, r4417585, r4417586, r4417587, r4417588;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r4417583);
        mpfr_init(r4417584);
        mpfr_init(r4417585);
        mpfr_init(r4417586);
        mpfr_init(r4417587);
        mpfr_init(r4417588);
}

double f_im(double x, double eps) {
        mpfr_set_d(r4417583, x, MPFR_RNDN);
        mpfr_set_d(r4417584, eps, MPFR_RNDN);
        mpfr_add(r4417585, r4417583, r4417584, MPFR_RNDN);
        mpfr_tan(r4417586, r4417585, MPFR_RNDN);
        mpfr_tan(r4417587, r4417583, MPFR_RNDN);
        mpfr_sub(r4417588, r4417586, r4417587, MPFR_RNDN);
        return mpfr_get_d(r4417588, MPFR_RNDN);
}

static mpfr_t r4417589, r4417590, r4417591, r4417592, r4417593, r4417594, r4417595, r4417596, r4417597, r4417598, r4417599, r4417600, r4417601, r4417602, r4417603, r4417604, r4417605, r4417606, r4417607, r4417608, r4417609, r4417610, r4417611, r4417612, r4417613, r4417614, r4417615, r4417616, r4417617, r4417618, r4417619, r4417620, r4417621, r4417622, r4417623, r4417624, r4417625, r4417626, r4417627, r4417628, r4417629;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r4417589);
        mpfr_init_set_str(r4417590, "-7.762273209586751e-47", 10, MPFR_RNDN);
        mpfr_init(r4417591);
        mpfr_init(r4417592);
        mpfr_init(r4417593);
        mpfr_init(r4417594);
        mpfr_init(r4417595);
        mpfr_init_set_str(r4417596, "1", 10, MPFR_RNDN);
        mpfr_init(r4417597);
        mpfr_init(r4417598);
        mpfr_init(r4417599);
        mpfr_init(r4417600);
        mpfr_init(r4417601);
        mpfr_init(r4417602);
        mpfr_init(r4417603);
        mpfr_init(r4417604);
        mpfr_init(r4417605);
        mpfr_init(r4417606);
        mpfr_init(r4417607);
        mpfr_init(r4417608);
        mpfr_init(r4417609);
        mpfr_init_set_str(r4417610, "6.465253545275874e-18", 10, MPFR_RNDN);
        mpfr_init(r4417611);
        mpfr_init_set_str(r4417612, "3", 10, MPFR_RNDN);
        mpfr_init(r4417613);
        mpfr_init_set_str(r4417614, "2", 10, MPFR_RNDN);
        mpfr_init(r4417615);
        mpfr_init(r4417616);
        mpfr_init(r4417617);
        mpfr_init(r4417618);
        mpfr_init(r4417619);
        mpfr_init(r4417620);
        mpfr_init(r4417621);
        mpfr_init(r4417622);
        mpfr_init(r4417623);
        mpfr_init(r4417624);
        mpfr_init(r4417625);
        mpfr_init(r4417626);
        mpfr_init(r4417627);
        mpfr_init(r4417628);
        mpfr_init(r4417629);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r4417589, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r4417591, mpfr_cmp(r4417589, r4417590) <= 0, MPFR_RNDN);
        mpfr_tan(r4417592, r4417589, MPFR_RNDN);
        mpfr_set_d(r4417593, x, MPFR_RNDN);
        mpfr_tan(r4417594, r4417593, MPFR_RNDN);
        mpfr_add(r4417595, r4417592, r4417594, MPFR_RNDN);
        ;
        mpfr_mul(r4417597, r4417594, r4417592, MPFR_RNDN);
        mpfr_add(r4417598, r4417596, r4417597, MPFR_RNDN);
        mpfr_mul(r4417599, r4417595, r4417598, MPFR_RNDN);
        mpfr_cos(r4417600, r4417593, MPFR_RNDN);
        mpfr_mul(r4417601, r4417599, r4417600, MPFR_RNDN);
        mpfr_mul(r4417602, r4417592, r4417594, MPFR_RNDN);
        mpfr_mul(r4417603, r4417602, r4417602, MPFR_RNDN);
        mpfr_sub(r4417604, r4417596, r4417603, MPFR_RNDN);
        mpfr_sin(r4417605, r4417593, MPFR_RNDN);
        mpfr_mul(r4417606, r4417604, r4417605, MPFR_RNDN);
        mpfr_sub(r4417607, r4417601, r4417606, MPFR_RNDN);
        mpfr_mul(r4417608, r4417604, r4417600, MPFR_RNDN);
        mpfr_div(r4417609, r4417607, r4417608, MPFR_RNDN);
        ;
        mpfr_set_si(r4417611, mpfr_cmp(r4417589, r4417610) <= 0, MPFR_RNDN);
        ;
        mpfr_pow(r4417613, r4417589, r4417612, MPFR_RNDN);
        ;
        mpfr_pow(r4417615, r4417593, r4417614, MPFR_RNDN);
        mpfr_mul(r4417616, r4417613, r4417615, MPFR_RNDN);
        mpfr_pow(r4417617, r4417589, r4417614, MPFR_RNDN);
        mpfr_mul(r4417618, r4417617, r4417593, MPFR_RNDN);
        mpfr_add(r4417619, r4417589, r4417618, MPFR_RNDN);
        mpfr_add(r4417620, r4417616, r4417619, MPFR_RNDN);
        mpfr_pow(r4417621, r4417597, r4417612, MPFR_RNDN);
        mpfr_mul(r4417622, r4417621, r4417621, MPFR_RNDN);
        mpfr_cbrt(r4417623, r4417622, MPFR_RNDN);
        mpfr_sub(r4417624, r4417596, r4417623, MPFR_RNDN);
        mpfr_div(r4417625, r4417595, r4417624, MPFR_RNDN);
        mpfr_mul(r4417626, r4417625, r4417598, MPFR_RNDN);
        mpfr_sub(r4417627, r4417626, r4417594, MPFR_RNDN);
        if (mpfr_get_si(r4417611, MPFR_RNDN)) { mpfr_set(r4417628, r4417620, MPFR_RNDN); } else { mpfr_set(r4417628, r4417627, MPFR_RNDN); };
        if (mpfr_get_si(r4417591, MPFR_RNDN)) { mpfr_set(r4417629, r4417609, MPFR_RNDN); } else { mpfr_set(r4417629, r4417628, MPFR_RNDN); };
        return mpfr_get_d(r4417629, MPFR_RNDN);
}

static mpfr_t r4417630, r4417631, r4417632, r4417633, r4417634, r4417635, r4417636, r4417637, r4417638, r4417639, r4417640, r4417641, r4417642, r4417643, r4417644, r4417645, r4417646, r4417647, r4417648, r4417649, r4417650, r4417651, r4417652, r4417653, r4417654, r4417655, r4417656, r4417657, r4417658, r4417659, r4417660, r4417661, r4417662, r4417663, r4417664, r4417665, r4417666, r4417667, r4417668, r4417669, r4417670;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r4417630);
        mpfr_init_set_str(r4417631, "-7.762273209586751e-47", 10, MPFR_RNDN);
        mpfr_init(r4417632);
        mpfr_init(r4417633);
        mpfr_init(r4417634);
        mpfr_init(r4417635);
        mpfr_init(r4417636);
        mpfr_init_set_str(r4417637, "1", 10, MPFR_RNDN);
        mpfr_init(r4417638);
        mpfr_init(r4417639);
        mpfr_init(r4417640);
        mpfr_init(r4417641);
        mpfr_init(r4417642);
        mpfr_init(r4417643);
        mpfr_init(r4417644);
        mpfr_init(r4417645);
        mpfr_init(r4417646);
        mpfr_init(r4417647);
        mpfr_init(r4417648);
        mpfr_init(r4417649);
        mpfr_init(r4417650);
        mpfr_init_set_str(r4417651, "6.465253545275874e-18", 10, MPFR_RNDN);
        mpfr_init(r4417652);
        mpfr_init_set_str(r4417653, "3", 10, MPFR_RNDN);
        mpfr_init(r4417654);
        mpfr_init_set_str(r4417655, "2", 10, MPFR_RNDN);
        mpfr_init(r4417656);
        mpfr_init(r4417657);
        mpfr_init(r4417658);
        mpfr_init(r4417659);
        mpfr_init(r4417660);
        mpfr_init(r4417661);
        mpfr_init(r4417662);
        mpfr_init(r4417663);
        mpfr_init(r4417664);
        mpfr_init(r4417665);
        mpfr_init(r4417666);
        mpfr_init(r4417667);
        mpfr_init(r4417668);
        mpfr_init(r4417669);
        mpfr_init(r4417670);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r4417630, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r4417632, mpfr_cmp(r4417630, r4417631) <= 0, MPFR_RNDN);
        mpfr_tan(r4417633, r4417630, MPFR_RNDN);
        mpfr_set_d(r4417634, x, MPFR_RNDN);
        mpfr_tan(r4417635, r4417634, MPFR_RNDN);
        mpfr_add(r4417636, r4417633, r4417635, MPFR_RNDN);
        ;
        mpfr_mul(r4417638, r4417635, r4417633, MPFR_RNDN);
        mpfr_add(r4417639, r4417637, r4417638, MPFR_RNDN);
        mpfr_mul(r4417640, r4417636, r4417639, MPFR_RNDN);
        mpfr_cos(r4417641, r4417634, MPFR_RNDN);
        mpfr_mul(r4417642, r4417640, r4417641, MPFR_RNDN);
        mpfr_mul(r4417643, r4417633, r4417635, MPFR_RNDN);
        mpfr_mul(r4417644, r4417643, r4417643, MPFR_RNDN);
        mpfr_sub(r4417645, r4417637, r4417644, MPFR_RNDN);
        mpfr_sin(r4417646, r4417634, MPFR_RNDN);
        mpfr_mul(r4417647, r4417645, r4417646, MPFR_RNDN);
        mpfr_sub(r4417648, r4417642, r4417647, MPFR_RNDN);
        mpfr_mul(r4417649, r4417645, r4417641, MPFR_RNDN);
        mpfr_div(r4417650, r4417648, r4417649, MPFR_RNDN);
        ;
        mpfr_set_si(r4417652, mpfr_cmp(r4417630, r4417651) <= 0, MPFR_RNDN);
        ;
        mpfr_pow(r4417654, r4417630, r4417653, MPFR_RNDN);
        ;
        mpfr_pow(r4417656, r4417634, r4417655, MPFR_RNDN);
        mpfr_mul(r4417657, r4417654, r4417656, MPFR_RNDN);
        mpfr_pow(r4417658, r4417630, r4417655, MPFR_RNDN);
        mpfr_mul(r4417659, r4417658, r4417634, MPFR_RNDN);
        mpfr_add(r4417660, r4417630, r4417659, MPFR_RNDN);
        mpfr_add(r4417661, r4417657, r4417660, MPFR_RNDN);
        mpfr_pow(r4417662, r4417638, r4417653, MPFR_RNDN);
        mpfr_mul(r4417663, r4417662, r4417662, MPFR_RNDN);
        mpfr_cbrt(r4417664, r4417663, MPFR_RNDN);
        mpfr_sub(r4417665, r4417637, r4417664, MPFR_RNDN);
        mpfr_div(r4417666, r4417636, r4417665, MPFR_RNDN);
        mpfr_mul(r4417667, r4417666, r4417639, MPFR_RNDN);
        mpfr_sub(r4417668, r4417667, r4417635, MPFR_RNDN);
        if (mpfr_get_si(r4417652, MPFR_RNDN)) { mpfr_set(r4417669, r4417661, MPFR_RNDN); } else { mpfr_set(r4417669, r4417668, MPFR_RNDN); };
        if (mpfr_get_si(r4417632, MPFR_RNDN)) { mpfr_set(r4417670, r4417650, MPFR_RNDN); } else { mpfr_set(r4417670, r4417669, MPFR_RNDN); };
        return mpfr_get_d(r4417670, MPFR_RNDN);
}

