#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 r6216131 = x;
        float r6216132 = eps;
        float r6216133 = r6216131 + r6216132;
        float r6216134 = tan(r6216133);
        float r6216135 = tan(r6216131);
        float r6216136 = r6216134 - r6216135;
        return r6216136;
}

double f_id(double x, double eps) {
        double r6216137 = x;
        double r6216138 = eps;
        double r6216139 = r6216137 + r6216138;
        double r6216140 = tan(r6216139);
        double r6216141 = tan(r6216137);
        double r6216142 = r6216140 - r6216141;
        return r6216142;
}


double f_of(float x, float eps) {
        float r6216143 = eps;
        float r6216144 = -2.3620489864739888e-40;
        bool r6216145 = r6216143 <= r6216144;
        float r6216146 = x;
        float r6216147 = tan(r6216146);
        float r6216148 = tan(r6216143);
        float r6216149 = r6216147 + r6216148;
        float r6216150 = 1;
        float r6216151 = r6216147 * r6216148;
        float r6216152 = r6216150 - r6216151;
        float r6216153 = r6216149 / r6216152;
        float r6216154 = sin(r6216146);
        float r6216155 = cos(r6216146);
        float r6216156 = r6216154 / r6216155;
        float r6216157 = r6216156 / r6216149;
        float r6216158 = r6216157 * r6216149;
        float r6216159 = r6216153 - r6216158;
        float r6216160 = 1.5059506191485345e-46;
        bool r6216161 = r6216143 <= r6216160;
        float r6216162 = r6216146 * r6216146;
        float r6216163 = r6216143 * r6216143;
        float r6216164 = r6216162 * r6216163;
        float r6216165 = r6216146 * r6216143;
        float r6216166 = r6216165 + r6216150;
        float r6216167 = r6216164 + r6216166;
        float r6216168 = r6216143 * r6216167;
        float r6216169 = r6216153 - r6216156;
        float r6216170 = r6216161 ? r6216168 : r6216169;
        float r6216171 = r6216145 ? r6216159 : r6216170;
        return r6216171;
}

double f_od(double x, double eps) {
        double r6216172 = eps;
        double r6216173 = -2.3620489864739888e-40;
        bool r6216174 = r6216172 <= r6216173;
        double r6216175 = x;
        double r6216176 = tan(r6216175);
        double r6216177 = tan(r6216172);
        double r6216178 = r6216176 + r6216177;
        double r6216179 = 1;
        double r6216180 = r6216176 * r6216177;
        double r6216181 = r6216179 - r6216180;
        double r6216182 = r6216178 / r6216181;
        double r6216183 = sin(r6216175);
        double r6216184 = cos(r6216175);
        double r6216185 = r6216183 / r6216184;
        double r6216186 = r6216185 / r6216178;
        double r6216187 = r6216186 * r6216178;
        double r6216188 = r6216182 - r6216187;
        double r6216189 = 1.5059506191485345e-46;
        bool r6216190 = r6216172 <= r6216189;
        double r6216191 = r6216175 * r6216175;
        double r6216192 = r6216172 * r6216172;
        double r6216193 = r6216191 * r6216192;
        double r6216194 = r6216175 * r6216172;
        double r6216195 = r6216194 + r6216179;
        double r6216196 = r6216193 + r6216195;
        double r6216197 = r6216172 * r6216196;
        double r6216198 = r6216182 - r6216185;
        double r6216199 = r6216190 ? r6216197 : r6216198;
        double r6216200 = r6216174 ? r6216188 : r6216199;
        return r6216200;
}

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 r6216201, r6216202, r6216203, r6216204, r6216205, r6216206;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r6216201);
        mpfr_init(r6216202);
        mpfr_init(r6216203);
        mpfr_init(r6216204);
        mpfr_init(r6216205);
        mpfr_init(r6216206);
}

double f_im(double x, double eps) {
        mpfr_set_d(r6216201, x, MPFR_RNDN);
        mpfr_set_d(r6216202, eps, MPFR_RNDN);
        mpfr_add(r6216203, r6216201, r6216202, MPFR_RNDN);
        mpfr_tan(r6216204, r6216203, MPFR_RNDN);
        mpfr_tan(r6216205, r6216201, MPFR_RNDN);
        mpfr_sub(r6216206, r6216204, r6216205, MPFR_RNDN);
        return mpfr_get_d(r6216206, MPFR_RNDN);
}

static mpfr_t r6216207, r6216208, r6216209, r6216210, r6216211, r6216212, r6216213, r6216214, r6216215, r6216216, r6216217, r6216218, r6216219, r6216220, r6216221, r6216222, r6216223, r6216224, r6216225, r6216226, r6216227, r6216228, r6216229, r6216230, r6216231, r6216232, r6216233, r6216234, r6216235;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r6216207);
        mpfr_init_set_str(r6216208, "-2.3620489864739888e-40", 10, MPFR_RNDN);
        mpfr_init(r6216209);
        mpfr_init(r6216210);
        mpfr_init(r6216211);
        mpfr_init(r6216212);
        mpfr_init(r6216213);
        mpfr_init_set_str(r6216214, "1", 10, MPFR_RNDN);
        mpfr_init(r6216215);
        mpfr_init(r6216216);
        mpfr_init(r6216217);
        mpfr_init(r6216218);
        mpfr_init(r6216219);
        mpfr_init(r6216220);
        mpfr_init(r6216221);
        mpfr_init(r6216222);
        mpfr_init(r6216223);
        mpfr_init_set_str(r6216224, "1.5059506191485345e-46", 10, MPFR_RNDN);
        mpfr_init(r6216225);
        mpfr_init(r6216226);
        mpfr_init(r6216227);
        mpfr_init(r6216228);
        mpfr_init(r6216229);
        mpfr_init(r6216230);
        mpfr_init(r6216231);
        mpfr_init(r6216232);
        mpfr_init(r6216233);
        mpfr_init(r6216234);
        mpfr_init(r6216235);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r6216207, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r6216209, mpfr_cmp(r6216207, r6216208) <= 0, MPFR_RNDN);
        mpfr_set_d(r6216210, x, MPFR_RNDN);
        mpfr_tan(r6216211, r6216210, MPFR_RNDN);
        mpfr_tan(r6216212, r6216207, MPFR_RNDN);
        mpfr_add(r6216213, r6216211, r6216212, MPFR_RNDN);
        ;
        mpfr_mul(r6216215, r6216211, r6216212, MPFR_RNDN);
        mpfr_sub(r6216216, r6216214, r6216215, MPFR_RNDN);
        mpfr_div(r6216217, r6216213, r6216216, MPFR_RNDN);
        mpfr_sin(r6216218, r6216210, MPFR_RNDN);
        mpfr_cos(r6216219, r6216210, MPFR_RNDN);
        mpfr_div(r6216220, r6216218, r6216219, MPFR_RNDN);
        mpfr_div(r6216221, r6216220, r6216213, MPFR_RNDN);
        mpfr_mul(r6216222, r6216221, r6216213, MPFR_RNDN);
        mpfr_sub(r6216223, r6216217, r6216222, MPFR_RNDN);
        ;
        mpfr_set_si(r6216225, mpfr_cmp(r6216207, r6216224) <= 0, MPFR_RNDN);
        mpfr_mul(r6216226, r6216210, r6216210, MPFR_RNDN);
        mpfr_mul(r6216227, r6216207, r6216207, MPFR_RNDN);
        mpfr_mul(r6216228, r6216226, r6216227, MPFR_RNDN);
        mpfr_mul(r6216229, r6216210, r6216207, MPFR_RNDN);
        mpfr_add(r6216230, r6216229, r6216214, MPFR_RNDN);
        mpfr_add(r6216231, r6216228, r6216230, MPFR_RNDN);
        mpfr_mul(r6216232, r6216207, r6216231, MPFR_RNDN);
        mpfr_sub(r6216233, r6216217, r6216220, MPFR_RNDN);
        if (mpfr_get_si(r6216225, MPFR_RNDN)) { mpfr_set(r6216234, r6216232, MPFR_RNDN); } else { mpfr_set(r6216234, r6216233, MPFR_RNDN); };
        if (mpfr_get_si(r6216209, MPFR_RNDN)) { mpfr_set(r6216235, r6216223, MPFR_RNDN); } else { mpfr_set(r6216235, r6216234, MPFR_RNDN); };
        return mpfr_get_d(r6216235, MPFR_RNDN);
}

static mpfr_t r6216236, r6216237, r6216238, r6216239, r6216240, r6216241, r6216242, r6216243, r6216244, r6216245, r6216246, r6216247, r6216248, r6216249, r6216250, r6216251, r6216252, r6216253, r6216254, r6216255, r6216256, r6216257, r6216258, r6216259, r6216260, r6216261, r6216262, r6216263, r6216264;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r6216236);
        mpfr_init_set_str(r6216237, "-2.3620489864739888e-40", 10, MPFR_RNDN);
        mpfr_init(r6216238);
        mpfr_init(r6216239);
        mpfr_init(r6216240);
        mpfr_init(r6216241);
        mpfr_init(r6216242);
        mpfr_init_set_str(r6216243, "1", 10, MPFR_RNDN);
        mpfr_init(r6216244);
        mpfr_init(r6216245);
        mpfr_init(r6216246);
        mpfr_init(r6216247);
        mpfr_init(r6216248);
        mpfr_init(r6216249);
        mpfr_init(r6216250);
        mpfr_init(r6216251);
        mpfr_init(r6216252);
        mpfr_init_set_str(r6216253, "1.5059506191485345e-46", 10, MPFR_RNDN);
        mpfr_init(r6216254);
        mpfr_init(r6216255);
        mpfr_init(r6216256);
        mpfr_init(r6216257);
        mpfr_init(r6216258);
        mpfr_init(r6216259);
        mpfr_init(r6216260);
        mpfr_init(r6216261);
        mpfr_init(r6216262);
        mpfr_init(r6216263);
        mpfr_init(r6216264);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r6216236, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r6216238, mpfr_cmp(r6216236, r6216237) <= 0, MPFR_RNDN);
        mpfr_set_d(r6216239, x, MPFR_RNDN);
        mpfr_tan(r6216240, r6216239, MPFR_RNDN);
        mpfr_tan(r6216241, r6216236, MPFR_RNDN);
        mpfr_add(r6216242, r6216240, r6216241, MPFR_RNDN);
        ;
        mpfr_mul(r6216244, r6216240, r6216241, MPFR_RNDN);
        mpfr_sub(r6216245, r6216243, r6216244, MPFR_RNDN);
        mpfr_div(r6216246, r6216242, r6216245, MPFR_RNDN);
        mpfr_sin(r6216247, r6216239, MPFR_RNDN);
        mpfr_cos(r6216248, r6216239, MPFR_RNDN);
        mpfr_div(r6216249, r6216247, r6216248, MPFR_RNDN);
        mpfr_div(r6216250, r6216249, r6216242, MPFR_RNDN);
        mpfr_mul(r6216251, r6216250, r6216242, MPFR_RNDN);
        mpfr_sub(r6216252, r6216246, r6216251, MPFR_RNDN);
        ;
        mpfr_set_si(r6216254, mpfr_cmp(r6216236, r6216253) <= 0, MPFR_RNDN);
        mpfr_mul(r6216255, r6216239, r6216239, MPFR_RNDN);
        mpfr_mul(r6216256, r6216236, r6216236, MPFR_RNDN);
        mpfr_mul(r6216257, r6216255, r6216256, MPFR_RNDN);
        mpfr_mul(r6216258, r6216239, r6216236, MPFR_RNDN);
        mpfr_add(r6216259, r6216258, r6216243, MPFR_RNDN);
        mpfr_add(r6216260, r6216257, r6216259, MPFR_RNDN);
        mpfr_mul(r6216261, r6216236, r6216260, MPFR_RNDN);
        mpfr_sub(r6216262, r6216246, r6216249, MPFR_RNDN);
        if (mpfr_get_si(r6216254, MPFR_RNDN)) { mpfr_set(r6216263, r6216261, MPFR_RNDN); } else { mpfr_set(r6216263, r6216262, MPFR_RNDN); };
        if (mpfr_get_si(r6216238, MPFR_RNDN)) { mpfr_set(r6216264, r6216252, MPFR_RNDN); } else { mpfr_set(r6216264, r6216263, MPFR_RNDN); };
        return mpfr_get_d(r6216264, MPFR_RNDN);
}

