#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 r27103 = x;
        float r27104 = eps;
        float r27105 = r27103 + r27104;
        float r27106 = tan(r27105);
        float r27107 = tan(r27103);
        float r27108 = r27106 - r27107;
        return r27108;
}

double f_id(double x, double eps) {
        double r27109 = x;
        double r27110 = eps;
        double r27111 = r27109 + r27110;
        double r27112 = tan(r27111);
        double r27113 = tan(r27109);
        double r27114 = r27112 - r27113;
        return r27114;
}


double f_of(float x, float eps) {
        float r27115 = x;
        float r27116 = eps;
        float r27117 = 2;
        float r27118 = pow(r27116, r27117);
        float r27119 = r27115 * r27118;
        float r27120 = 3;
        float r27121 = pow(r27116, r27120);
        float r27122 = pow(r27115, r27117);
        float r27123 = r27121 * r27122;
        float r27124 = r27119 + r27123;
        float r27125 = r27124 + r27116;
        float r27126 = -1.2455945272111048e-13;
        bool r27127 = r27125 <= r27126;
        float r27128 = 1.3012109729505754e-42;
        bool r27129 = r27125 <= r27128;
        float r27130 = !r27129;
        bool r27131 = r27127 || r27130;
        float r27132 = tan(r27115);
        float r27133 = tan(r27116);
        float r27134 = r27132 + r27133;
        float r27135 = 1;
        float r27136 = sin(r27116);
        float r27137 = sin(r27115);
        float r27138 = r27136 * r27137;
        float r27139 = r27133 * r27137;
        float r27140 = r27138 * r27139;
        float r27141 = cos(r27115);
        float r27142 = cos(r27116);
        float r27143 = r27141 * r27142;
        float r27144 = r27141 * r27143;
        float r27145 = r27140 / r27144;
        float r27146 = r27135 - r27145;
        float r27147 = r27134 / r27146;
        float r27148 = r27133 * r27132;
        float r27149 = r27135 + r27148;
        float r27150 = r27147 * r27149;
        float r27151 = r27150 - r27132;
        float r27152 = r27131 ? r27151 : r27125;
        return r27152;
}

double f_od(double x, double eps) {
        double r27153 = x;
        double r27154 = eps;
        double r27155 = 2;
        double r27156 = pow(r27154, r27155);
        double r27157 = r27153 * r27156;
        double r27158 = 3;
        double r27159 = pow(r27154, r27158);
        double r27160 = pow(r27153, r27155);
        double r27161 = r27159 * r27160;
        double r27162 = r27157 + r27161;
        double r27163 = r27162 + r27154;
        double r27164 = -1.2455945272111048e-13;
        bool r27165 = r27163 <= r27164;
        double r27166 = 1.3012109729505754e-42;
        bool r27167 = r27163 <= r27166;
        double r27168 = !r27167;
        bool r27169 = r27165 || r27168;
        double r27170 = tan(r27153);
        double r27171 = tan(r27154);
        double r27172 = r27170 + r27171;
        double r27173 = 1;
        double r27174 = sin(r27154);
        double r27175 = sin(r27153);
        double r27176 = r27174 * r27175;
        double r27177 = r27171 * r27175;
        double r27178 = r27176 * r27177;
        double r27179 = cos(r27153);
        double r27180 = cos(r27154);
        double r27181 = r27179 * r27180;
        double r27182 = r27179 * r27181;
        double r27183 = r27178 / r27182;
        double r27184 = r27173 - r27183;
        double r27185 = r27172 / r27184;
        double r27186 = r27171 * r27170;
        double r27187 = r27173 + r27186;
        double r27188 = r27185 * r27187;
        double r27189 = r27188 - r27170;
        double r27190 = r27169 ? r27189 : r27163;
        return r27190;
}

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 r27191, r27192, r27193, r27194, r27195, r27196;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27191);
        mpfr_init(r27192);
        mpfr_init(r27193);
        mpfr_init(r27194);
        mpfr_init(r27195);
        mpfr_init(r27196);
}

double f_im(double x, double eps) {
        mpfr_set_d(r27191, x, MPFR_RNDN);
        mpfr_set_d(r27192, eps, MPFR_RNDN);
        mpfr_add(r27193, r27191, r27192, MPFR_RNDN);
        mpfr_tan(r27194, r27193, MPFR_RNDN);
        mpfr_tan(r27195, r27191, MPFR_RNDN);
        mpfr_sub(r27196, r27194, r27195, MPFR_RNDN);
        return mpfr_get_d(r27196, MPFR_RNDN);
}

static mpfr_t r27197, r27198, r27199, r27200, r27201, r27202, r27203, r27204, r27205, r27206, r27207, r27208, r27209, r27210, r27211, r27212, r27213, r27214, r27215, r27216, r27217, r27218, r27219, r27220, r27221, r27222, r27223, r27224, r27225, r27226, r27227, r27228, r27229, r27230, r27231, r27232, r27233, r27234;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27197);
        mpfr_init(r27198);
        mpfr_init_set_str(r27199, "2", 10, MPFR_RNDN);
        mpfr_init(r27200);
        mpfr_init(r27201);
        mpfr_init_set_str(r27202, "3", 10, MPFR_RNDN);
        mpfr_init(r27203);
        mpfr_init(r27204);
        mpfr_init(r27205);
        mpfr_init(r27206);
        mpfr_init(r27207);
        mpfr_init_set_str(r27208, "-1.2455945272111048e-13", 10, MPFR_RNDN);
        mpfr_init(r27209);
        mpfr_init_set_str(r27210, "1.3012109729505754e-42", 10, MPFR_RNDN);
        mpfr_init(r27211);
        mpfr_init(r27212);
        mpfr_init(r27213);
        mpfr_init(r27214);
        mpfr_init(r27215);
        mpfr_init(r27216);
        mpfr_init_set_str(r27217, "1", 10, MPFR_RNDN);
        mpfr_init(r27218);
        mpfr_init(r27219);
        mpfr_init(r27220);
        mpfr_init(r27221);
        mpfr_init(r27222);
        mpfr_init(r27223);
        mpfr_init(r27224);
        mpfr_init(r27225);
        mpfr_init(r27226);
        mpfr_init(r27227);
        mpfr_init(r27228);
        mpfr_init(r27229);
        mpfr_init(r27230);
        mpfr_init(r27231);
        mpfr_init(r27232);
        mpfr_init(r27233);
        mpfr_init(r27234);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r27197, x, MPFR_RNDN);
        mpfr_set_d(r27198, eps, MPFR_RNDN);
        ;
        mpfr_pow(r27200, r27198, r27199, MPFR_RNDN);
        mpfr_mul(r27201, r27197, r27200, MPFR_RNDN);
        ;
        mpfr_pow(r27203, r27198, r27202, MPFR_RNDN);
        mpfr_pow(r27204, r27197, r27199, MPFR_RNDN);
        mpfr_mul(r27205, r27203, r27204, MPFR_RNDN);
        mpfr_add(r27206, r27201, r27205, MPFR_RNDN);
        mpfr_add(r27207, r27206, r27198, MPFR_RNDN);
        ;
        mpfr_set_si(r27209, mpfr_cmp(r27207, r27208) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r27211, mpfr_cmp(r27207, r27210) <= 0, MPFR_RNDN);
        mpfr_set_si(r27212, !mpfr_get_si(r27211, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r27213, mpfr_get_si(r27209, MPFR_RNDN) || mpfr_get_si(r27212, MPFR_RNDN), MPFR_RNDN);
        mpfr_tan(r27214, r27197, MPFR_RNDN);
        mpfr_tan(r27215, r27198, MPFR_RNDN);
        mpfr_add(r27216, r27214, r27215, MPFR_RNDN);
        ;
        mpfr_sin(r27218, r27198, MPFR_RNDN);
        mpfr_sin(r27219, r27197, MPFR_RNDN);
        mpfr_mul(r27220, r27218, r27219, MPFR_RNDN);
        mpfr_mul(r27221, r27215, r27219, MPFR_RNDN);
        mpfr_mul(r27222, r27220, r27221, MPFR_RNDN);
        mpfr_cos(r27223, r27197, MPFR_RNDN);
        mpfr_cos(r27224, r27198, MPFR_RNDN);
        mpfr_mul(r27225, r27223, r27224, MPFR_RNDN);
        mpfr_mul(r27226, r27223, r27225, MPFR_RNDN);
        mpfr_div(r27227, r27222, r27226, MPFR_RNDN);
        mpfr_sub(r27228, r27217, r27227, MPFR_RNDN);
        mpfr_div(r27229, r27216, r27228, MPFR_RNDN);
        mpfr_mul(r27230, r27215, r27214, MPFR_RNDN);
        mpfr_add(r27231, r27217, r27230, MPFR_RNDN);
        mpfr_mul(r27232, r27229, r27231, MPFR_RNDN);
        mpfr_sub(r27233, r27232, r27214, MPFR_RNDN);
        if (mpfr_get_si(r27213, MPFR_RNDN)) { mpfr_set(r27234, r27233, MPFR_RNDN); } else { mpfr_set(r27234, r27207, MPFR_RNDN); };
        return mpfr_get_d(r27234, MPFR_RNDN);
}

static mpfr_t r27235, r27236, r27237, r27238, r27239, r27240, r27241, r27242, r27243, r27244, r27245, r27246, r27247, r27248, r27249, r27250, r27251, r27252, r27253, r27254, r27255, r27256, r27257, r27258, r27259, r27260, r27261, r27262, r27263, r27264, r27265, r27266, r27267, r27268, r27269, r27270, r27271, r27272;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27235);
        mpfr_init(r27236);
        mpfr_init_set_str(r27237, "2", 10, MPFR_RNDN);
        mpfr_init(r27238);
        mpfr_init(r27239);
        mpfr_init_set_str(r27240, "3", 10, MPFR_RNDN);
        mpfr_init(r27241);
        mpfr_init(r27242);
        mpfr_init(r27243);
        mpfr_init(r27244);
        mpfr_init(r27245);
        mpfr_init_set_str(r27246, "-1.2455945272111048e-13", 10, MPFR_RNDN);
        mpfr_init(r27247);
        mpfr_init_set_str(r27248, "1.3012109729505754e-42", 10, MPFR_RNDN);
        mpfr_init(r27249);
        mpfr_init(r27250);
        mpfr_init(r27251);
        mpfr_init(r27252);
        mpfr_init(r27253);
        mpfr_init(r27254);
        mpfr_init_set_str(r27255, "1", 10, MPFR_RNDN);
        mpfr_init(r27256);
        mpfr_init(r27257);
        mpfr_init(r27258);
        mpfr_init(r27259);
        mpfr_init(r27260);
        mpfr_init(r27261);
        mpfr_init(r27262);
        mpfr_init(r27263);
        mpfr_init(r27264);
        mpfr_init(r27265);
        mpfr_init(r27266);
        mpfr_init(r27267);
        mpfr_init(r27268);
        mpfr_init(r27269);
        mpfr_init(r27270);
        mpfr_init(r27271);
        mpfr_init(r27272);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r27235, x, MPFR_RNDN);
        mpfr_set_d(r27236, eps, MPFR_RNDN);
        ;
        mpfr_pow(r27238, r27236, r27237, MPFR_RNDN);
        mpfr_mul(r27239, r27235, r27238, MPFR_RNDN);
        ;
        mpfr_pow(r27241, r27236, r27240, MPFR_RNDN);
        mpfr_pow(r27242, r27235, r27237, MPFR_RNDN);
        mpfr_mul(r27243, r27241, r27242, MPFR_RNDN);
        mpfr_add(r27244, r27239, r27243, MPFR_RNDN);
        mpfr_add(r27245, r27244, r27236, MPFR_RNDN);
        ;
        mpfr_set_si(r27247, mpfr_cmp(r27245, r27246) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r27249, mpfr_cmp(r27245, r27248) <= 0, MPFR_RNDN);
        mpfr_set_si(r27250, !mpfr_get_si(r27249, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r27251, mpfr_get_si(r27247, MPFR_RNDN) || mpfr_get_si(r27250, MPFR_RNDN), MPFR_RNDN);
        mpfr_tan(r27252, r27235, MPFR_RNDN);
        mpfr_tan(r27253, r27236, MPFR_RNDN);
        mpfr_add(r27254, r27252, r27253, MPFR_RNDN);
        ;
        mpfr_sin(r27256, r27236, MPFR_RNDN);
        mpfr_sin(r27257, r27235, MPFR_RNDN);
        mpfr_mul(r27258, r27256, r27257, MPFR_RNDN);
        mpfr_mul(r27259, r27253, r27257, MPFR_RNDN);
        mpfr_mul(r27260, r27258, r27259, MPFR_RNDN);
        mpfr_cos(r27261, r27235, MPFR_RNDN);
        mpfr_cos(r27262, r27236, MPFR_RNDN);
        mpfr_mul(r27263, r27261, r27262, MPFR_RNDN);
        mpfr_mul(r27264, r27261, r27263, MPFR_RNDN);
        mpfr_div(r27265, r27260, r27264, MPFR_RNDN);
        mpfr_sub(r27266, r27255, r27265, MPFR_RNDN);
        mpfr_div(r27267, r27254, r27266, MPFR_RNDN);
        mpfr_mul(r27268, r27253, r27252, MPFR_RNDN);
        mpfr_add(r27269, r27255, r27268, MPFR_RNDN);
        mpfr_mul(r27270, r27267, r27269, MPFR_RNDN);
        mpfr_sub(r27271, r27270, r27252, MPFR_RNDN);
        if (mpfr_get_si(r27251, MPFR_RNDN)) { mpfr_set(r27272, r27271, MPFR_RNDN); } else { mpfr_set(r27272, r27245, MPFR_RNDN); };
        return mpfr_get_d(r27272, MPFR_RNDN);
}

