#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 r11872292 = x;
        float r11872293 = eps;
        float r11872294 = r11872292 + r11872293;
        float r11872295 = tan(r11872294);
        float r11872296 = tan(r11872292);
        float r11872297 = r11872295 - r11872296;
        return r11872297;
}

double f_id(double x, double eps) {
        double r11872298 = x;
        double r11872299 = eps;
        double r11872300 = r11872298 + r11872299;
        double r11872301 = tan(r11872300);
        double r11872302 = tan(r11872298);
        double r11872303 = r11872301 - r11872302;
        return r11872303;
}


double f_of(float x, float eps) {
        float r11872304 = x;
        float r11872305 = tan(r11872304);
        float r11872306 = eps;
        float r11872307 = tan(r11872306);
        float r11872308 = r11872305 + r11872307;
        float r11872309 = cbrt(r11872308);
        float r11872310 = r11872309 * r11872309;
        float r11872311 = r11872310 * r11872309;
        float r11872312 = 1;
        float r11872313 = r11872305 * r11872307;
        float r11872314 = r11872312 - r11872313;
        float r11872315 = r11872311 / r11872314;
        float r11872316 = r11872315 - r11872305;
        float r11872317 = -2.5012544119240587e-16;
        bool r11872318 = r11872316 <= r11872317;
        float r11872319 = r11872314 / r11872308;
        float r11872320 = r11872312 / r11872319;
        float r11872321 = r11872320 - r11872305;
        float r11872322 = 8.881784197001252e-16;
        bool r11872323 = r11872316 <= r11872322;
        float r11872324 = 3;
        float r11872325 = pow(r11872306, r11872324);
        float r11872326 = 2;
        float r11872327 = pow(r11872304, r11872326);
        float r11872328 = r11872325 * r11872327;
        float r11872329 = pow(r11872306, r11872326);
        float r11872330 = r11872329 * r11872304;
        float r11872331 = r11872306 + r11872330;
        float r11872332 = r11872328 + r11872331;
        float r11872333 = r11872305 * r11872305;
        float r11872334 = r11872307 * r11872307;
        float r11872335 = r11872333 - r11872334;
        float r11872336 = r11872305 - r11872307;
        float r11872337 = r11872314 * r11872336;
        float r11872338 = r11872335 / r11872337;
        float r11872339 = r11872338 - r11872305;
        float r11872340 = r11872323 ? r11872332 : r11872339;
        float r11872341 = r11872318 ? r11872321 : r11872340;
        return r11872341;
}

double f_od(double x, double eps) {
        double r11872342 = x;
        double r11872343 = tan(r11872342);
        double r11872344 = eps;
        double r11872345 = tan(r11872344);
        double r11872346 = r11872343 + r11872345;
        double r11872347 = cbrt(r11872346);
        double r11872348 = r11872347 * r11872347;
        double r11872349 = r11872348 * r11872347;
        double r11872350 = 1;
        double r11872351 = r11872343 * r11872345;
        double r11872352 = r11872350 - r11872351;
        double r11872353 = r11872349 / r11872352;
        double r11872354 = r11872353 - r11872343;
        double r11872355 = -2.5012544119240587e-16;
        bool r11872356 = r11872354 <= r11872355;
        double r11872357 = r11872352 / r11872346;
        double r11872358 = r11872350 / r11872357;
        double r11872359 = r11872358 - r11872343;
        double r11872360 = 8.881784197001252e-16;
        bool r11872361 = r11872354 <= r11872360;
        double r11872362 = 3;
        double r11872363 = pow(r11872344, r11872362);
        double r11872364 = 2;
        double r11872365 = pow(r11872342, r11872364);
        double r11872366 = r11872363 * r11872365;
        double r11872367 = pow(r11872344, r11872364);
        double r11872368 = r11872367 * r11872342;
        double r11872369 = r11872344 + r11872368;
        double r11872370 = r11872366 + r11872369;
        double r11872371 = r11872343 * r11872343;
        double r11872372 = r11872345 * r11872345;
        double r11872373 = r11872371 - r11872372;
        double r11872374 = r11872343 - r11872345;
        double r11872375 = r11872352 * r11872374;
        double r11872376 = r11872373 / r11872375;
        double r11872377 = r11872376 - r11872343;
        double r11872378 = r11872361 ? r11872370 : r11872377;
        double r11872379 = r11872356 ? r11872359 : r11872378;
        return r11872379;
}

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 r11872380, r11872381, r11872382, r11872383, r11872384, r11872385;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r11872380);
        mpfr_init(r11872381);
        mpfr_init(r11872382);
        mpfr_init(r11872383);
        mpfr_init(r11872384);
        mpfr_init(r11872385);
}

double f_im(double x, double eps) {
        mpfr_set_d(r11872380, x, MPFR_RNDN);
        mpfr_set_d(r11872381, eps, MPFR_RNDN);
        mpfr_add(r11872382, r11872380, r11872381, MPFR_RNDN);
        mpfr_tan(r11872383, r11872382, MPFR_RNDN);
        mpfr_tan(r11872384, r11872380, MPFR_RNDN);
        mpfr_sub(r11872385, r11872383, r11872384, MPFR_RNDN);
        return mpfr_get_d(r11872385, MPFR_RNDN);
}

static mpfr_t r11872386, r11872387, r11872388, r11872389, r11872390, r11872391, r11872392, r11872393, r11872394, r11872395, r11872396, r11872397, r11872398, r11872399, r11872400, r11872401, r11872402, r11872403, r11872404, r11872405, r11872406, r11872407, r11872408, r11872409, r11872410, r11872411, r11872412, r11872413, r11872414, r11872415, r11872416, r11872417, r11872418, r11872419, r11872420, r11872421, r11872422, r11872423;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r11872386);
        mpfr_init(r11872387);
        mpfr_init(r11872388);
        mpfr_init(r11872389);
        mpfr_init(r11872390);
        mpfr_init(r11872391);
        mpfr_init(r11872392);
        mpfr_init(r11872393);
        mpfr_init_set_str(r11872394, "1", 10, MPFR_RNDN);
        mpfr_init(r11872395);
        mpfr_init(r11872396);
        mpfr_init(r11872397);
        mpfr_init(r11872398);
        mpfr_init_set_str(r11872399, "-2.5012544119240587e-16", 10, MPFR_RNDN);
        mpfr_init(r11872400);
        mpfr_init(r11872401);
        mpfr_init(r11872402);
        mpfr_init(r11872403);
        mpfr_init_set_str(r11872404, "8.881784197001252e-16", 10, MPFR_RNDN);
        mpfr_init(r11872405);
        mpfr_init_set_str(r11872406, "3", 10, MPFR_RNDN);
        mpfr_init(r11872407);
        mpfr_init_set_str(r11872408, "2", 10, MPFR_RNDN);
        mpfr_init(r11872409);
        mpfr_init(r11872410);
        mpfr_init(r11872411);
        mpfr_init(r11872412);
        mpfr_init(r11872413);
        mpfr_init(r11872414);
        mpfr_init(r11872415);
        mpfr_init(r11872416);
        mpfr_init(r11872417);
        mpfr_init(r11872418);
        mpfr_init(r11872419);
        mpfr_init(r11872420);
        mpfr_init(r11872421);
        mpfr_init(r11872422);
        mpfr_init(r11872423);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r11872386, x, MPFR_RNDN);
        mpfr_tan(r11872387, r11872386, MPFR_RNDN);
        mpfr_set_d(r11872388, eps, MPFR_RNDN);
        mpfr_tan(r11872389, r11872388, MPFR_RNDN);
        mpfr_add(r11872390, r11872387, r11872389, MPFR_RNDN);
        mpfr_cbrt(r11872391, r11872390, MPFR_RNDN);
        mpfr_mul(r11872392, r11872391, r11872391, MPFR_RNDN);
        mpfr_mul(r11872393, r11872392, r11872391, MPFR_RNDN);
        ;
        mpfr_mul(r11872395, r11872387, r11872389, MPFR_RNDN);
        mpfr_sub(r11872396, r11872394, r11872395, MPFR_RNDN);
        mpfr_div(r11872397, r11872393, r11872396, MPFR_RNDN);
        mpfr_sub(r11872398, r11872397, r11872387, MPFR_RNDN);
        ;
        mpfr_set_si(r11872400, mpfr_cmp(r11872398, r11872399) <= 0, MPFR_RNDN);
        mpfr_div(r11872401, r11872396, r11872390, MPFR_RNDN);
        mpfr_div(r11872402, r11872394, r11872401, MPFR_RNDN);
        mpfr_sub(r11872403, r11872402, r11872387, MPFR_RNDN);
        ;
        mpfr_set_si(r11872405, mpfr_cmp(r11872398, r11872404) <= 0, MPFR_RNDN);
        ;
        mpfr_pow(r11872407, r11872388, r11872406, MPFR_RNDN);
        ;
        mpfr_pow(r11872409, r11872386, r11872408, MPFR_RNDN);
        mpfr_mul(r11872410, r11872407, r11872409, MPFR_RNDN);
        mpfr_pow(r11872411, r11872388, r11872408, MPFR_RNDN);
        mpfr_mul(r11872412, r11872411, r11872386, MPFR_RNDN);
        mpfr_add(r11872413, r11872388, r11872412, MPFR_RNDN);
        mpfr_add(r11872414, r11872410, r11872413, MPFR_RNDN);
        mpfr_mul(r11872415, r11872387, r11872387, MPFR_RNDN);
        mpfr_mul(r11872416, r11872389, r11872389, MPFR_RNDN);
        mpfr_sub(r11872417, r11872415, r11872416, MPFR_RNDN);
        mpfr_sub(r11872418, r11872387, r11872389, MPFR_RNDN);
        mpfr_mul(r11872419, r11872396, r11872418, MPFR_RNDN);
        mpfr_div(r11872420, r11872417, r11872419, MPFR_RNDN);
        mpfr_sub(r11872421, r11872420, r11872387, MPFR_RNDN);
        if (mpfr_get_si(r11872405, MPFR_RNDN)) { mpfr_set(r11872422, r11872414, MPFR_RNDN); } else { mpfr_set(r11872422, r11872421, MPFR_RNDN); };
        if (mpfr_get_si(r11872400, MPFR_RNDN)) { mpfr_set(r11872423, r11872403, MPFR_RNDN); } else { mpfr_set(r11872423, r11872422, MPFR_RNDN); };
        return mpfr_get_d(r11872423, MPFR_RNDN);
}

static mpfr_t r11872424, r11872425, r11872426, r11872427, r11872428, r11872429, r11872430, r11872431, r11872432, r11872433, r11872434, r11872435, r11872436, r11872437, r11872438, r11872439, r11872440, r11872441, r11872442, r11872443, r11872444, r11872445, r11872446, r11872447, r11872448, r11872449, r11872450, r11872451, r11872452, r11872453, r11872454, r11872455, r11872456, r11872457, r11872458, r11872459, r11872460, r11872461;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r11872424);
        mpfr_init(r11872425);
        mpfr_init(r11872426);
        mpfr_init(r11872427);
        mpfr_init(r11872428);
        mpfr_init(r11872429);
        mpfr_init(r11872430);
        mpfr_init(r11872431);
        mpfr_init_set_str(r11872432, "1", 10, MPFR_RNDN);
        mpfr_init(r11872433);
        mpfr_init(r11872434);
        mpfr_init(r11872435);
        mpfr_init(r11872436);
        mpfr_init_set_str(r11872437, "-2.5012544119240587e-16", 10, MPFR_RNDN);
        mpfr_init(r11872438);
        mpfr_init(r11872439);
        mpfr_init(r11872440);
        mpfr_init(r11872441);
        mpfr_init_set_str(r11872442, "8.881784197001252e-16", 10, MPFR_RNDN);
        mpfr_init(r11872443);
        mpfr_init_set_str(r11872444, "3", 10, MPFR_RNDN);
        mpfr_init(r11872445);
        mpfr_init_set_str(r11872446, "2", 10, MPFR_RNDN);
        mpfr_init(r11872447);
        mpfr_init(r11872448);
        mpfr_init(r11872449);
        mpfr_init(r11872450);
        mpfr_init(r11872451);
        mpfr_init(r11872452);
        mpfr_init(r11872453);
        mpfr_init(r11872454);
        mpfr_init(r11872455);
        mpfr_init(r11872456);
        mpfr_init(r11872457);
        mpfr_init(r11872458);
        mpfr_init(r11872459);
        mpfr_init(r11872460);
        mpfr_init(r11872461);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r11872424, x, MPFR_RNDN);
        mpfr_tan(r11872425, r11872424, MPFR_RNDN);
        mpfr_set_d(r11872426, eps, MPFR_RNDN);
        mpfr_tan(r11872427, r11872426, MPFR_RNDN);
        mpfr_add(r11872428, r11872425, r11872427, MPFR_RNDN);
        mpfr_cbrt(r11872429, r11872428, MPFR_RNDN);
        mpfr_mul(r11872430, r11872429, r11872429, MPFR_RNDN);
        mpfr_mul(r11872431, r11872430, r11872429, MPFR_RNDN);
        ;
        mpfr_mul(r11872433, r11872425, r11872427, MPFR_RNDN);
        mpfr_sub(r11872434, r11872432, r11872433, MPFR_RNDN);
        mpfr_div(r11872435, r11872431, r11872434, MPFR_RNDN);
        mpfr_sub(r11872436, r11872435, r11872425, MPFR_RNDN);
        ;
        mpfr_set_si(r11872438, mpfr_cmp(r11872436, r11872437) <= 0, MPFR_RNDN);
        mpfr_div(r11872439, r11872434, r11872428, MPFR_RNDN);
        mpfr_div(r11872440, r11872432, r11872439, MPFR_RNDN);
        mpfr_sub(r11872441, r11872440, r11872425, MPFR_RNDN);
        ;
        mpfr_set_si(r11872443, mpfr_cmp(r11872436, r11872442) <= 0, MPFR_RNDN);
        ;
        mpfr_pow(r11872445, r11872426, r11872444, MPFR_RNDN);
        ;
        mpfr_pow(r11872447, r11872424, r11872446, MPFR_RNDN);
        mpfr_mul(r11872448, r11872445, r11872447, MPFR_RNDN);
        mpfr_pow(r11872449, r11872426, r11872446, MPFR_RNDN);
        mpfr_mul(r11872450, r11872449, r11872424, MPFR_RNDN);
        mpfr_add(r11872451, r11872426, r11872450, MPFR_RNDN);
        mpfr_add(r11872452, r11872448, r11872451, MPFR_RNDN);
        mpfr_mul(r11872453, r11872425, r11872425, MPFR_RNDN);
        mpfr_mul(r11872454, r11872427, r11872427, MPFR_RNDN);
        mpfr_sub(r11872455, r11872453, r11872454, MPFR_RNDN);
        mpfr_sub(r11872456, r11872425, r11872427, MPFR_RNDN);
        mpfr_mul(r11872457, r11872434, r11872456, MPFR_RNDN);
        mpfr_div(r11872458, r11872455, r11872457, MPFR_RNDN);
        mpfr_sub(r11872459, r11872458, r11872425, MPFR_RNDN);
        if (mpfr_get_si(r11872443, MPFR_RNDN)) { mpfr_set(r11872460, r11872452, MPFR_RNDN); } else { mpfr_set(r11872460, r11872459, MPFR_RNDN); };
        if (mpfr_get_si(r11872438, MPFR_RNDN)) { mpfr_set(r11872461, r11872441, MPFR_RNDN); } else { mpfr_set(r11872461, r11872460, MPFR_RNDN); };
        return mpfr_get_d(r11872461, MPFR_RNDN);
}

