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

char *name = "2cos (problem 3.3.5)";

double f_if(float x, float eps) {
        float r9440 = x;
        float r9441 = eps;
        float r9442 = r9440 + r9441;
        float r9443 = cos(r9442);
        float r9444 = cos(r9440);
        float r9445 = r9443 - r9444;
        return r9445;
}

double f_id(double x, double eps) {
        double r9446 = x;
        double r9447 = eps;
        double r9448 = r9446 + r9447;
        double r9449 = cos(r9448);
        double r9450 = cos(r9446);
        double r9451 = r9449 - r9450;
        return r9451;
}


double f_of(float x, float eps) {
        float r9452 = x;
        float r9453 = cos(r9452);
        float r9454 = eps;
        float r9455 = cos(r9454);
        float r9456 = r9453 * r9455;
        float r9457 = sin(r9452);
        float r9458 = sin(r9454);
        float r9459 = r9457 * r9458;
        float r9460 = r9456 - r9459;
        float r9461 = r9460 - r9453;
        float r9462 = -0.02386386001808989;
        bool r9463 = r9461 <= r9462;
        float r9464 = r9459 + r9453;
        float r9465 = r9456 - r9464;
        float r9466 = 0.012104264989223186;
        bool r9467 = r9461 <= r9466;
        float r9468 = -2;
        float r9469 = r9452 + r9452;
        float r9470 = r9469 + r9454;
        float r9471 = 2;
        float r9472 = r9470 / r9471;
        float r9473 = sin(r9472);
        float r9474 = r9454 / r9471;
        float r9475 = sin(r9474);
        float r9476 = r9473 * r9475;
        float r9477 = r9468 * r9476;
        float r9478 = r9467 ? r9477 : r9461;
        float r9479 = r9463 ? r9465 : r9478;
        return r9479;
}

double f_od(double x, double eps) {
        double r9480 = x;
        double r9481 = cos(r9480);
        double r9482 = eps;
        double r9483 = cos(r9482);
        double r9484 = r9481 * r9483;
        double r9485 = sin(r9480);
        double r9486 = sin(r9482);
        double r9487 = r9485 * r9486;
        double r9488 = r9484 - r9487;
        double r9489 = r9488 - r9481;
        double r9490 = -0.02386386001808989;
        bool r9491 = r9489 <= r9490;
        double r9492 = r9487 + r9481;
        double r9493 = r9484 - r9492;
        double r9494 = 0.012104264989223186;
        bool r9495 = r9489 <= r9494;
        double r9496 = -2;
        double r9497 = r9480 + r9480;
        double r9498 = r9497 + r9482;
        double r9499 = 2;
        double r9500 = r9498 / r9499;
        double r9501 = sin(r9500);
        double r9502 = r9482 / r9499;
        double r9503 = sin(r9502);
        double r9504 = r9501 * r9503;
        double r9505 = r9496 * r9504;
        double r9506 = r9495 ? r9505 : r9489;
        double r9507 = r9491 ? r9493 : r9506;
        return r9507;
}

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 r9508, r9509, r9510, r9511, r9512, r9513;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r9508);
        mpfr_init(r9509);
        mpfr_init(r9510);
        mpfr_init(r9511);
        mpfr_init(r9512);
        mpfr_init(r9513);
}

double f_im(double x, double eps) {
        mpfr_set_d(r9508, x, MPFR_RNDN);
        mpfr_set_d(r9509, eps, MPFR_RNDN);
        mpfr_add(r9510, r9508, r9509, MPFR_RNDN);
        mpfr_cos(r9511, r9510, MPFR_RNDN);
        mpfr_cos(r9512, r9508, MPFR_RNDN);
        mpfr_sub(r9513, r9511, r9512, MPFR_RNDN);
        return mpfr_get_d(r9513, MPFR_RNDN);
}

static mpfr_t r9514, r9515, r9516, r9517, r9518, r9519, r9520, r9521, r9522, r9523, r9524, r9525, r9526, r9527, r9528, r9529, r9530, r9531, r9532, r9533, r9534, r9535, r9536, r9537, r9538, r9539, r9540, r9541;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r9514);
        mpfr_init(r9515);
        mpfr_init(r9516);
        mpfr_init(r9517);
        mpfr_init(r9518);
        mpfr_init(r9519);
        mpfr_init(r9520);
        mpfr_init(r9521);
        mpfr_init(r9522);
        mpfr_init(r9523);
        mpfr_init_set_str(r9524, "-0.02386386001808989", 10, MPFR_RNDN);
        mpfr_init(r9525);
        mpfr_init(r9526);
        mpfr_init(r9527);
        mpfr_init_set_str(r9528, "0.012104264989223186", 10, MPFR_RNDN);
        mpfr_init(r9529);
        mpfr_init_set_str(r9530, "-2", 10, MPFR_RNDN);
        mpfr_init(r9531);
        mpfr_init(r9532);
        mpfr_init_set_str(r9533, "2", 10, MPFR_RNDN);
        mpfr_init(r9534);
        mpfr_init(r9535);
        mpfr_init(r9536);
        mpfr_init(r9537);
        mpfr_init(r9538);
        mpfr_init(r9539);
        mpfr_init(r9540);
        mpfr_init(r9541);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r9514, x, MPFR_RNDN);
        mpfr_cos(r9515, r9514, MPFR_RNDN);
        mpfr_set_d(r9516, eps, MPFR_RNDN);
        mpfr_cos(r9517, r9516, MPFR_RNDN);
        mpfr_mul(r9518, r9515, r9517, MPFR_RNDN);
        mpfr_sin(r9519, r9514, MPFR_RNDN);
        mpfr_sin(r9520, r9516, MPFR_RNDN);
        mpfr_mul(r9521, r9519, r9520, MPFR_RNDN);
        mpfr_sub(r9522, r9518, r9521, MPFR_RNDN);
        mpfr_sub(r9523, r9522, r9515, MPFR_RNDN);
        ;
        mpfr_set_si(r9525, mpfr_cmp(r9523, r9524) <= 0, MPFR_RNDN);
        mpfr_add(r9526, r9521, r9515, MPFR_RNDN);
        mpfr_sub(r9527, r9518, r9526, MPFR_RNDN);
        ;
        mpfr_set_si(r9529, mpfr_cmp(r9523, r9528) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r9531, r9514, r9514, MPFR_RNDN);
        mpfr_add(r9532, r9531, r9516, MPFR_RNDN);
        ;
        mpfr_div(r9534, r9532, r9533, MPFR_RNDN);
        mpfr_sin(r9535, r9534, MPFR_RNDN);
        mpfr_div(r9536, r9516, r9533, MPFR_RNDN);
        mpfr_sin(r9537, r9536, MPFR_RNDN);
        mpfr_mul(r9538, r9535, r9537, MPFR_RNDN);
        mpfr_mul(r9539, r9530, r9538, MPFR_RNDN);
        if (mpfr_get_si(r9529, MPFR_RNDN)) { mpfr_set(r9540, r9539, MPFR_RNDN); } else { mpfr_set(r9540, r9523, MPFR_RNDN); };
        if (mpfr_get_si(r9525, MPFR_RNDN)) { mpfr_set(r9541, r9527, MPFR_RNDN); } else { mpfr_set(r9541, r9540, MPFR_RNDN); };
        return mpfr_get_d(r9541, MPFR_RNDN);
}

static mpfr_t r9542, r9543, r9544, r9545, r9546, r9547, r9548, r9549, r9550, r9551, r9552, r9553, r9554, r9555, r9556, r9557, r9558, r9559, r9560, r9561, r9562, r9563, r9564, r9565, r9566, r9567, r9568, r9569;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r9542);
        mpfr_init(r9543);
        mpfr_init(r9544);
        mpfr_init(r9545);
        mpfr_init(r9546);
        mpfr_init(r9547);
        mpfr_init(r9548);
        mpfr_init(r9549);
        mpfr_init(r9550);
        mpfr_init(r9551);
        mpfr_init_set_str(r9552, "-0.02386386001808989", 10, MPFR_RNDN);
        mpfr_init(r9553);
        mpfr_init(r9554);
        mpfr_init(r9555);
        mpfr_init_set_str(r9556, "0.012104264989223186", 10, MPFR_RNDN);
        mpfr_init(r9557);
        mpfr_init_set_str(r9558, "-2", 10, MPFR_RNDN);
        mpfr_init(r9559);
        mpfr_init(r9560);
        mpfr_init_set_str(r9561, "2", 10, MPFR_RNDN);
        mpfr_init(r9562);
        mpfr_init(r9563);
        mpfr_init(r9564);
        mpfr_init(r9565);
        mpfr_init(r9566);
        mpfr_init(r9567);
        mpfr_init(r9568);
        mpfr_init(r9569);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r9542, x, MPFR_RNDN);
        mpfr_cos(r9543, r9542, MPFR_RNDN);
        mpfr_set_d(r9544, eps, MPFR_RNDN);
        mpfr_cos(r9545, r9544, MPFR_RNDN);
        mpfr_mul(r9546, r9543, r9545, MPFR_RNDN);
        mpfr_sin(r9547, r9542, MPFR_RNDN);
        mpfr_sin(r9548, r9544, MPFR_RNDN);
        mpfr_mul(r9549, r9547, r9548, MPFR_RNDN);
        mpfr_sub(r9550, r9546, r9549, MPFR_RNDN);
        mpfr_sub(r9551, r9550, r9543, MPFR_RNDN);
        ;
        mpfr_set_si(r9553, mpfr_cmp(r9551, r9552) <= 0, MPFR_RNDN);
        mpfr_add(r9554, r9549, r9543, MPFR_RNDN);
        mpfr_sub(r9555, r9546, r9554, MPFR_RNDN);
        ;
        mpfr_set_si(r9557, mpfr_cmp(r9551, r9556) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r9559, r9542, r9542, MPFR_RNDN);
        mpfr_add(r9560, r9559, r9544, MPFR_RNDN);
        ;
        mpfr_div(r9562, r9560, r9561, MPFR_RNDN);
        mpfr_sin(r9563, r9562, MPFR_RNDN);
        mpfr_div(r9564, r9544, r9561, MPFR_RNDN);
        mpfr_sin(r9565, r9564, MPFR_RNDN);
        mpfr_mul(r9566, r9563, r9565, MPFR_RNDN);
        mpfr_mul(r9567, r9558, r9566, MPFR_RNDN);
        if (mpfr_get_si(r9557, MPFR_RNDN)) { mpfr_set(r9568, r9567, MPFR_RNDN); } else { mpfr_set(r9568, r9551, MPFR_RNDN); };
        if (mpfr_get_si(r9553, MPFR_RNDN)) { mpfr_set(r9569, r9555, MPFR_RNDN); } else { mpfr_set(r9569, r9568, MPFR_RNDN); };
        return mpfr_get_d(r9569, MPFR_RNDN);
}

