#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 r5182149 = x;
        float r5182150 = eps;
        float r5182151 = r5182149 + r5182150;
        float r5182152 = tan(r5182151);
        float r5182153 = tan(r5182149);
        float r5182154 = r5182152 - r5182153;
        return r5182154;
}

double f_id(double x, double eps) {
        double r5182155 = x;
        double r5182156 = eps;
        double r5182157 = r5182155 + r5182156;
        double r5182158 = tan(r5182157);
        double r5182159 = tan(r5182155);
        double r5182160 = r5182158 - r5182159;
        return r5182160;
}


double f_of(float x, float eps) {
        float r5182161 = eps;
        float r5182162 = -5.668771810976152e-19f;
        bool r5182163 = r5182161 <= r5182162;
        float r5182164 = tan(r5182161);
        float r5182165 = x;
        float r5182166 = tan(r5182165);
        float r5182167 = r5182164 + r5182166;
        float r5182168 = 1.0f;
        float r5182169 = r5182164 * r5182166;
        float r5182170 = r5182169 * (r5182169 * r5182169);
        float r5182171 = r5182168 - r5182170;
        float r5182172 = r5182167 / r5182171;
        float r5182173 = r5182168 * r5182168;
        float r5182174 = r5182173 * r5182173;
        float r5182175 = r5182166 * r5182164;
        float r5182176 = r5182175 * r5182175;
        float r5182177 = r5182168 * r5182175;
        float r5182178 = r5182176 + r5182177;
        float r5182179 = r5182178 * r5182178;
        float r5182180 = r5182174 - r5182179;
        float r5182181 = r5182172 * r5182180;
        float r5182182 = cos(r5182165);
        float r5182183 = r5182181 * r5182182;
        float r5182184 = r5182173 - r5182178;
        float r5182185 = sin(r5182165);
        float r5182186 = r5182184 * r5182185;
        float r5182187 = r5182183 - r5182186;
        float r5182188 = r5182168 - r5182175;
        float r5182189 = r5182188 - r5182176;
        float r5182190 = r5182189 * r5182182;
        float r5182191 = r5182187 / r5182190;
        float r5182192 = 4.867988538927033e-42f;
        bool r5182193 = r5182161 <= r5182192;
        float r5182194 = r5182165 * (r5182165 * r5182165);
        float r5182195 = 4.0f;
        float r5182196 = pow(r5182161, r5182195);
        float r5182197 = r5182194 * r5182196;
        float r5182198 = r5182161 * (r5182161 * r5182161);
        float r5182199 = r5182165 * r5182165;
        float r5182200 = r5182198 * r5182199;
        float r5182201 = r5182197 + r5182200;
        float r5182202 = r5182201 + r5182161;
        float r5182203 = r5182166 + r5182164;
        float r5182204 = r5182203 * r5182182;
        float r5182205 = r5182188 * r5182185;
        float r5182206 = r5182204 - r5182205;
        float r5182207 = r5182188 * r5182182;
        float r5182208 = r5182206 / r5182207;
        float r5182209 = r5182193 ? r5182202 : r5182208;
        float r5182210 = r5182163 ? r5182191 : r5182209;
        return r5182210;
}

double f_od(double x, double eps) {
        double r5182211 = eps;
        double r5182212 = -5.668771810976152e-19;
        bool r5182213 = r5182211 <= r5182212;
        double r5182214 = tan(r5182211);
        double r5182215 = x;
        double r5182216 = tan(r5182215);
        double r5182217 = r5182214 + r5182216;
        double r5182218 = 1.0;
        double r5182219 = r5182214 * r5182216;
        double r5182220 = r5182219 * (r5182219 * r5182219);
        double r5182221 = r5182218 - r5182220;
        double r5182222 = r5182217 / r5182221;
        double r5182223 = r5182218 * r5182218;
        double r5182224 = r5182223 * r5182223;
        double r5182225 = r5182216 * r5182214;
        double r5182226 = r5182225 * r5182225;
        double r5182227 = r5182218 * r5182225;
        double r5182228 = r5182226 + r5182227;
        double r5182229 = r5182228 * r5182228;
        double r5182230 = r5182224 - r5182229;
        double r5182231 = r5182222 * r5182230;
        double r5182232 = cos(r5182215);
        double r5182233 = r5182231 * r5182232;
        double r5182234 = r5182223 - r5182228;
        double r5182235 = sin(r5182215);
        double r5182236 = r5182234 * r5182235;
        double r5182237 = r5182233 - r5182236;
        double r5182238 = r5182218 - r5182225;
        double r5182239 = r5182238 - r5182226;
        double r5182240 = r5182239 * r5182232;
        double r5182241 = r5182237 / r5182240;
        double r5182242 = 4.867988538927033e-42;
        bool r5182243 = r5182211 <= r5182242;
        double r5182244 = r5182215 * (r5182215 * r5182215);
        double r5182245 = 4.0;
        double r5182246 = pow(r5182211, r5182245);
        double r5182247 = r5182244 * r5182246;
        double r5182248 = r5182211 * (r5182211 * r5182211);
        double r5182249 = r5182215 * r5182215;
        double r5182250 = r5182248 * r5182249;
        double r5182251 = r5182247 + r5182250;
        double r5182252 = r5182251 + r5182211;
        double r5182253 = r5182216 + r5182214;
        double r5182254 = r5182253 * r5182232;
        double r5182255 = r5182238 * r5182235;
        double r5182256 = r5182254 - r5182255;
        double r5182257 = r5182238 * r5182232;
        double r5182258 = r5182256 / r5182257;
        double r5182259 = r5182243 ? r5182252 : r5182258;
        double r5182260 = r5182213 ? r5182241 : r5182259;
        return r5182260;
}

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 r5182261, r5182262, r5182263, r5182264, r5182265, r5182266;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r5182261);
        mpfr_init(r5182262);
        mpfr_init(r5182263);
        mpfr_init(r5182264);
        mpfr_init(r5182265);
        mpfr_init(r5182266);
}

double f_im(double x, double eps) {
        mpfr_set_d(r5182261, x, MPFR_RNDN);
        mpfr_set_d(r5182262, eps, MPFR_RNDN);
        mpfr_add(r5182263, r5182261, r5182262, MPFR_RNDN);
        mpfr_tan(r5182264, r5182263, MPFR_RNDN);
        mpfr_tan(r5182265, r5182261, MPFR_RNDN);
        mpfr_sub(r5182266, r5182264, r5182265, MPFR_RNDN);
        return mpfr_get_d(r5182266, MPFR_RNDN);
}

static mpfr_t r5182267, r5182268, r5182269, r5182270, r5182271, r5182272, r5182273, r5182274, r5182275, r5182276, r5182277, r5182278, r5182279, r5182280, r5182281, r5182282, r5182283, r5182284, r5182285, r5182286, r5182287, r5182288, r5182289, r5182290, r5182291, r5182292, r5182293, r5182294, r5182295, r5182296, r5182297, r5182298, r5182299, r5182300, r5182301, r5182302, r5182303, r5182304, r5182305, r5182306, r5182307, r5182308, r5182309, r5182310, r5182311, r5182312, r5182313, r5182314, r5182315, r5182316;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r5182267);
        mpfr_init_set_str(r5182268, "-5.668771810976152e-19", 10, MPFR_RNDN);
        mpfr_init(r5182269);
        mpfr_init(r5182270);
        mpfr_init(r5182271);
        mpfr_init(r5182272);
        mpfr_init(r5182273);
        mpfr_init_set_str(r5182274, "1", 10, MPFR_RNDN);
        mpfr_init(r5182275);
        mpfr_init(r5182276);
        mpfr_init(r5182277);
        mpfr_init(r5182278);
        mpfr_init(r5182279);
        mpfr_init(r5182280);
        mpfr_init(r5182281);
        mpfr_init(r5182282);
        mpfr_init(r5182283);
        mpfr_init(r5182284);
        mpfr_init(r5182285);
        mpfr_init(r5182286);
        mpfr_init(r5182287);
        mpfr_init(r5182288);
        mpfr_init(r5182289);
        mpfr_init(r5182290);
        mpfr_init(r5182291);
        mpfr_init(r5182292);
        mpfr_init(r5182293);
        mpfr_init(r5182294);
        mpfr_init(r5182295);
        mpfr_init(r5182296);
        mpfr_init(r5182297);
        mpfr_init_set_str(r5182298, "4.867988538927033e-42", 10, MPFR_RNDN);
        mpfr_init(r5182299);
        mpfr_init(r5182300);
        mpfr_init_set_str(r5182301, "4", 10, MPFR_RNDN);
        mpfr_init(r5182302);
        mpfr_init(r5182303);
        mpfr_init(r5182304);
        mpfr_init(r5182305);
        mpfr_init(r5182306);
        mpfr_init(r5182307);
        mpfr_init(r5182308);
        mpfr_init(r5182309);
        mpfr_init(r5182310);
        mpfr_init(r5182311);
        mpfr_init(r5182312);
        mpfr_init(r5182313);
        mpfr_init(r5182314);
        mpfr_init(r5182315);
        mpfr_init(r5182316);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r5182267, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r5182269, mpfr_cmp(r5182267, r5182268) <= 0, MPFR_RNDN);
        mpfr_tan(r5182270, r5182267, MPFR_RNDN);
        mpfr_set_d(r5182271, x, MPFR_RNDN);
        mpfr_tan(r5182272, r5182271, MPFR_RNDN);
        mpfr_add(r5182273, r5182270, r5182272, MPFR_RNDN);
        ;
        mpfr_mul(r5182275, r5182270, r5182272, MPFR_RNDN);
        mpfr_mul(r5182276, r5182275, r5182275, MPFR_RNDN); mpfr_mul(r5182276, r5182276, r5182275, MPFR_RNDN);
        mpfr_sub(r5182277, r5182274, r5182276, MPFR_RNDN);
        mpfr_div(r5182278, r5182273, r5182277, MPFR_RNDN);
        mpfr_sqr(r5182279, r5182274, MPFR_RNDN);
        mpfr_sqr(r5182280, r5182279, MPFR_RNDN);
        mpfr_mul(r5182281, r5182272, r5182270, MPFR_RNDN);
        mpfr_sqr(r5182282, r5182281, MPFR_RNDN);
        mpfr_mul(r5182283, r5182274, r5182281, MPFR_RNDN);
        mpfr_add(r5182284, r5182282, r5182283, MPFR_RNDN);
        mpfr_sqr(r5182285, r5182284, MPFR_RNDN);
        mpfr_sub(r5182286, r5182280, r5182285, MPFR_RNDN);
        mpfr_mul(r5182287, r5182278, r5182286, MPFR_RNDN);
        mpfr_cos(r5182288, r5182271, MPFR_RNDN);
        mpfr_mul(r5182289, r5182287, r5182288, MPFR_RNDN);
        mpfr_sub(r5182290, r5182279, r5182284, MPFR_RNDN);
        mpfr_sin(r5182291, r5182271, MPFR_RNDN);
        mpfr_mul(r5182292, r5182290, r5182291, MPFR_RNDN);
        mpfr_sub(r5182293, r5182289, r5182292, MPFR_RNDN);
        mpfr_sub(r5182294, r5182274, r5182281, MPFR_RNDN);
        mpfr_sub(r5182295, r5182294, r5182282, MPFR_RNDN);
        mpfr_mul(r5182296, r5182295, r5182288, MPFR_RNDN);
        mpfr_div(r5182297, r5182293, r5182296, MPFR_RNDN);
        ;
        mpfr_set_si(r5182299, mpfr_cmp(r5182267, r5182298) <= 0, MPFR_RNDN);
        mpfr_mul(r5182300, r5182271, r5182271, MPFR_RNDN); mpfr_mul(r5182300, r5182300, r5182271, MPFR_RNDN);
        ;
        mpfr_pow(r5182302, r5182267, r5182301, MPFR_RNDN);
        mpfr_mul(r5182303, r5182300, r5182302, MPFR_RNDN);
        mpfr_mul(r5182304, r5182267, r5182267, MPFR_RNDN); mpfr_mul(r5182304, r5182304, r5182267, MPFR_RNDN);
        mpfr_mul(r5182305, r5182271, r5182271, MPFR_RNDN);
        mpfr_mul(r5182306, r5182304, r5182305, MPFR_RNDN);
        mpfr_add(r5182307, r5182303, r5182306, MPFR_RNDN);
        mpfr_add(r5182308, r5182307, r5182267, MPFR_RNDN);
        mpfr_add(r5182309, r5182272, r5182270, MPFR_RNDN);
        mpfr_mul(r5182310, r5182309, r5182288, MPFR_RNDN);
        mpfr_mul(r5182311, r5182294, r5182291, MPFR_RNDN);
        mpfr_sub(r5182312, r5182310, r5182311, MPFR_RNDN);
        mpfr_mul(r5182313, r5182294, r5182288, MPFR_RNDN);
        mpfr_div(r5182314, r5182312, r5182313, MPFR_RNDN);
        if (mpfr_get_si(r5182299, MPFR_RNDN)) { mpfr_set(r5182315, r5182308, MPFR_RNDN); } else { mpfr_set(r5182315, r5182314, MPFR_RNDN); };
        if (mpfr_get_si(r5182269, MPFR_RNDN)) { mpfr_set(r5182316, r5182297, MPFR_RNDN); } else { mpfr_set(r5182316, r5182315, MPFR_RNDN); };
        return mpfr_get_d(r5182316, MPFR_RNDN);
}

static mpfr_t r5182317, r5182318, r5182319, r5182320, r5182321, r5182322, r5182323, r5182324, r5182325, r5182326, r5182327, r5182328, r5182329, r5182330, r5182331, r5182332, r5182333, r5182334, r5182335, r5182336, r5182337, r5182338, r5182339, r5182340, r5182341, r5182342, r5182343, r5182344, r5182345, r5182346, r5182347, r5182348, r5182349, r5182350, r5182351, r5182352, r5182353, r5182354, r5182355, r5182356, r5182357, r5182358, r5182359, r5182360, r5182361, r5182362, r5182363, r5182364, r5182365, r5182366;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r5182317);
        mpfr_init_set_str(r5182318, "-5.668771810976152e-19", 10, MPFR_RNDN);
        mpfr_init(r5182319);
        mpfr_init(r5182320);
        mpfr_init(r5182321);
        mpfr_init(r5182322);
        mpfr_init(r5182323);
        mpfr_init_set_str(r5182324, "1", 10, MPFR_RNDN);
        mpfr_init(r5182325);
        mpfr_init(r5182326);
        mpfr_init(r5182327);
        mpfr_init(r5182328);
        mpfr_init(r5182329);
        mpfr_init(r5182330);
        mpfr_init(r5182331);
        mpfr_init(r5182332);
        mpfr_init(r5182333);
        mpfr_init(r5182334);
        mpfr_init(r5182335);
        mpfr_init(r5182336);
        mpfr_init(r5182337);
        mpfr_init(r5182338);
        mpfr_init(r5182339);
        mpfr_init(r5182340);
        mpfr_init(r5182341);
        mpfr_init(r5182342);
        mpfr_init(r5182343);
        mpfr_init(r5182344);
        mpfr_init(r5182345);
        mpfr_init(r5182346);
        mpfr_init(r5182347);
        mpfr_init_set_str(r5182348, "4.867988538927033e-42", 10, MPFR_RNDN);
        mpfr_init(r5182349);
        mpfr_init(r5182350);
        mpfr_init_set_str(r5182351, "4", 10, MPFR_RNDN);
        mpfr_init(r5182352);
        mpfr_init(r5182353);
        mpfr_init(r5182354);
        mpfr_init(r5182355);
        mpfr_init(r5182356);
        mpfr_init(r5182357);
        mpfr_init(r5182358);
        mpfr_init(r5182359);
        mpfr_init(r5182360);
        mpfr_init(r5182361);
        mpfr_init(r5182362);
        mpfr_init(r5182363);
        mpfr_init(r5182364);
        mpfr_init(r5182365);
        mpfr_init(r5182366);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r5182317, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r5182319, mpfr_cmp(r5182317, r5182318) <= 0, MPFR_RNDN);
        mpfr_tan(r5182320, r5182317, MPFR_RNDN);
        mpfr_set_d(r5182321, x, MPFR_RNDN);
        mpfr_tan(r5182322, r5182321, MPFR_RNDN);
        mpfr_add(r5182323, r5182320, r5182322, MPFR_RNDN);
        ;
        mpfr_mul(r5182325, r5182320, r5182322, MPFR_RNDN);
        mpfr_mul(r5182326, r5182325, r5182325, MPFR_RNDN); mpfr_mul(r5182326, r5182326, r5182325, MPFR_RNDN);
        mpfr_sub(r5182327, r5182324, r5182326, MPFR_RNDN);
        mpfr_div(r5182328, r5182323, r5182327, MPFR_RNDN);
        mpfr_sqr(r5182329, r5182324, MPFR_RNDN);
        mpfr_sqr(r5182330, r5182329, MPFR_RNDN);
        mpfr_mul(r5182331, r5182322, r5182320, MPFR_RNDN);
        mpfr_sqr(r5182332, r5182331, MPFR_RNDN);
        mpfr_mul(r5182333, r5182324, r5182331, MPFR_RNDN);
        mpfr_add(r5182334, r5182332, r5182333, MPFR_RNDN);
        mpfr_sqr(r5182335, r5182334, MPFR_RNDN);
        mpfr_sub(r5182336, r5182330, r5182335, MPFR_RNDN);
        mpfr_mul(r5182337, r5182328, r5182336, MPFR_RNDN);
        mpfr_cos(r5182338, r5182321, MPFR_RNDN);
        mpfr_mul(r5182339, r5182337, r5182338, MPFR_RNDN);
        mpfr_sub(r5182340, r5182329, r5182334, MPFR_RNDN);
        mpfr_sin(r5182341, r5182321, MPFR_RNDN);
        mpfr_mul(r5182342, r5182340, r5182341, MPFR_RNDN);
        mpfr_sub(r5182343, r5182339, r5182342, MPFR_RNDN);
        mpfr_sub(r5182344, r5182324, r5182331, MPFR_RNDN);
        mpfr_sub(r5182345, r5182344, r5182332, MPFR_RNDN);
        mpfr_mul(r5182346, r5182345, r5182338, MPFR_RNDN);
        mpfr_div(r5182347, r5182343, r5182346, MPFR_RNDN);
        ;
        mpfr_set_si(r5182349, mpfr_cmp(r5182317, r5182348) <= 0, MPFR_RNDN);
        mpfr_mul(r5182350, r5182321, r5182321, MPFR_RNDN); mpfr_mul(r5182350, r5182350, r5182321, MPFR_RNDN);
        ;
        mpfr_pow(r5182352, r5182317, r5182351, MPFR_RNDN);
        mpfr_mul(r5182353, r5182350, r5182352, MPFR_RNDN);
        mpfr_mul(r5182354, r5182317, r5182317, MPFR_RNDN); mpfr_mul(r5182354, r5182354, r5182317, MPFR_RNDN);
        mpfr_mul(r5182355, r5182321, r5182321, MPFR_RNDN);
        mpfr_mul(r5182356, r5182354, r5182355, MPFR_RNDN);
        mpfr_add(r5182357, r5182353, r5182356, MPFR_RNDN);
        mpfr_add(r5182358, r5182357, r5182317, MPFR_RNDN);
        mpfr_add(r5182359, r5182322, r5182320, MPFR_RNDN);
        mpfr_mul(r5182360, r5182359, r5182338, MPFR_RNDN);
        mpfr_mul(r5182361, r5182344, r5182341, MPFR_RNDN);
        mpfr_sub(r5182362, r5182360, r5182361, MPFR_RNDN);
        mpfr_mul(r5182363, r5182344, r5182338, MPFR_RNDN);
        mpfr_div(r5182364, r5182362, r5182363, MPFR_RNDN);
        if (mpfr_get_si(r5182349, MPFR_RNDN)) { mpfr_set(r5182365, r5182358, MPFR_RNDN); } else { mpfr_set(r5182365, r5182364, MPFR_RNDN); };
        if (mpfr_get_si(r5182319, MPFR_RNDN)) { mpfr_set(r5182366, r5182347, MPFR_RNDN); } else { mpfr_set(r5182366, r5182365, MPFR_RNDN); };
        return mpfr_get_d(r5182366, MPFR_RNDN);
}

