#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 r33133 = x;
        float r33134 = eps;
        float r33135 = r33133 + r33134;
        float r33136 = cos(r33135);
        float r33137 = cos(r33133);
        float r33138 = r33136 - r33137;
        return r33138;
}

double f_id(double x, double eps) {
        double r33139 = x;
        double r33140 = eps;
        double r33141 = r33139 + r33140;
        double r33142 = cos(r33141);
        double r33143 = cos(r33139);
        double r33144 = r33142 - r33143;
        return r33144;
}


double f_of(float x, float eps) {
        float r33145 = eps;
        float r33146 = -1.2150886558136826e-11f;
        bool r33147 = r33145 <= r33146;
        float r33148 = x;
        float r33149 = cos(r33148);
        float r33150 = cos(r33145);
        float r33151 = r33149 * r33150;
        float r33152 = sin(r33148);
        float r33153 = sin(r33145);
        float r33154 = r33152 * r33153;
        float r33155 = r33151 - r33154;
        float r33156 = r33155 - r33149;
        float r33157 = 1.4591773572605082e-06f;
        bool r33158 = r33145 <= r33157;
        float r33159 = -2.0f;
        float r33160 = 2.0f;
        float r33161 = r33145 / r33160;
        float r33162 = sin(r33161);
        float r33163 = r33148 + r33145;
        float r33164 = r33163 + r33148;
        float r33165 = r33164 / r33160;
        float r33166 = sin(r33165);
        float r33167 = r33162 * r33166;
        float r33168 = r33159 * r33167;
        float r33169 = r33158 ? r33168 : r33156;
        float r33170 = r33147 ? r33156 : r33169;
        return r33170;
}

double f_od(double x, double eps) {
        double r33171 = eps;
        double r33172 = -1.2150886558136826e-11;
        bool r33173 = r33171 <= r33172;
        double r33174 = x;
        double r33175 = cos(r33174);
        double r33176 = cos(r33171);
        double r33177 = r33175 * r33176;
        double r33178 = sin(r33174);
        double r33179 = sin(r33171);
        double r33180 = r33178 * r33179;
        double r33181 = r33177 - r33180;
        double r33182 = r33181 - r33175;
        double r33183 = 1.4591773572605082e-06;
        bool r33184 = r33171 <= r33183;
        double r33185 = -2.0;
        double r33186 = 2.0;
        double r33187 = r33171 / r33186;
        double r33188 = sin(r33187);
        double r33189 = r33174 + r33171;
        double r33190 = r33189 + r33174;
        double r33191 = r33190 / r33186;
        double r33192 = sin(r33191);
        double r33193 = r33188 * r33192;
        double r33194 = r33185 * r33193;
        double r33195 = r33184 ? r33194 : r33182;
        double r33196 = r33173 ? r33182 : r33195;
        return r33196;
}

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 r33197, r33198, r33199, r33200, r33201, r33202;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r33197);
        mpfr_init(r33198);
        mpfr_init(r33199);
        mpfr_init(r33200);
        mpfr_init(r33201);
        mpfr_init(r33202);
}

double f_im(double x, double eps) {
        mpfr_set_d(r33197, x, MPFR_RNDN);
        mpfr_set_d(r33198, eps, MPFR_RNDN);
        mpfr_add(r33199, r33197, r33198, MPFR_RNDN);
        mpfr_cos(r33200, r33199, MPFR_RNDN);
        mpfr_cos(r33201, r33197, MPFR_RNDN);
        mpfr_sub(r33202, r33200, r33201, MPFR_RNDN);
        return mpfr_get_d(r33202, MPFR_RNDN);
}

static mpfr_t r33203, r33204, r33205, r33206, r33207, r33208, r33209, r33210, r33211, r33212, r33213, r33214, r33215, r33216, r33217, r33218, r33219, r33220, r33221, r33222, r33223, r33224, r33225, r33226, r33227, r33228;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r33203);
        mpfr_init_set_str(r33204, "-1.2150886558136826e-11", 10, MPFR_RNDN);
        mpfr_init(r33205);
        mpfr_init(r33206);
        mpfr_init(r33207);
        mpfr_init(r33208);
        mpfr_init(r33209);
        mpfr_init(r33210);
        mpfr_init(r33211);
        mpfr_init(r33212);
        mpfr_init(r33213);
        mpfr_init(r33214);
        mpfr_init_set_str(r33215, "1.4591773572605082e-06", 10, MPFR_RNDN);
        mpfr_init(r33216);
        mpfr_init_set_str(r33217, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r33218, "2", 10, MPFR_RNDN);
        mpfr_init(r33219);
        mpfr_init(r33220);
        mpfr_init(r33221);
        mpfr_init(r33222);
        mpfr_init(r33223);
        mpfr_init(r33224);
        mpfr_init(r33225);
        mpfr_init(r33226);
        mpfr_init(r33227);
        mpfr_init(r33228);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r33203, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r33205, mpfr_cmp(r33203, r33204) <= 0, MPFR_RNDN);
        mpfr_set_d(r33206, x, MPFR_RNDN);
        mpfr_cos(r33207, r33206, MPFR_RNDN);
        mpfr_cos(r33208, r33203, MPFR_RNDN);
        mpfr_mul(r33209, r33207, r33208, MPFR_RNDN);
        mpfr_sin(r33210, r33206, MPFR_RNDN);
        mpfr_sin(r33211, r33203, MPFR_RNDN);
        mpfr_mul(r33212, r33210, r33211, MPFR_RNDN);
        mpfr_sub(r33213, r33209, r33212, MPFR_RNDN);
        mpfr_sub(r33214, r33213, r33207, MPFR_RNDN);
        ;
        mpfr_set_si(r33216, mpfr_cmp(r33203, r33215) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r33219, r33203, r33218, MPFR_RNDN);
        mpfr_sin(r33220, r33219, MPFR_RNDN);
        mpfr_add(r33221, r33206, r33203, MPFR_RNDN);
        mpfr_add(r33222, r33221, r33206, MPFR_RNDN);
        mpfr_div(r33223, r33222, r33218, MPFR_RNDN);
        mpfr_sin(r33224, r33223, MPFR_RNDN);
        mpfr_mul(r33225, r33220, r33224, MPFR_RNDN);
        mpfr_mul(r33226, r33217, r33225, MPFR_RNDN);
        if (mpfr_get_si(r33216, MPFR_RNDN)) { mpfr_set(r33227, r33226, MPFR_RNDN); } else { mpfr_set(r33227, r33214, MPFR_RNDN); };
        if (mpfr_get_si(r33205, MPFR_RNDN)) { mpfr_set(r33228, r33214, MPFR_RNDN); } else { mpfr_set(r33228, r33227, MPFR_RNDN); };
        return mpfr_get_d(r33228, MPFR_RNDN);
}

static mpfr_t r33229, r33230, r33231, r33232, r33233, r33234, r33235, r33236, r33237, r33238, r33239, r33240, r33241, r33242, r33243, r33244, r33245, r33246, r33247, r33248, r33249, r33250, r33251, r33252, r33253, r33254;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r33229);
        mpfr_init_set_str(r33230, "-1.2150886558136826e-11", 10, MPFR_RNDN);
        mpfr_init(r33231);
        mpfr_init(r33232);
        mpfr_init(r33233);
        mpfr_init(r33234);
        mpfr_init(r33235);
        mpfr_init(r33236);
        mpfr_init(r33237);
        mpfr_init(r33238);
        mpfr_init(r33239);
        mpfr_init(r33240);
        mpfr_init_set_str(r33241, "1.4591773572605082e-06", 10, MPFR_RNDN);
        mpfr_init(r33242);
        mpfr_init_set_str(r33243, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r33244, "2", 10, MPFR_RNDN);
        mpfr_init(r33245);
        mpfr_init(r33246);
        mpfr_init(r33247);
        mpfr_init(r33248);
        mpfr_init(r33249);
        mpfr_init(r33250);
        mpfr_init(r33251);
        mpfr_init(r33252);
        mpfr_init(r33253);
        mpfr_init(r33254);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r33229, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r33231, mpfr_cmp(r33229, r33230) <= 0, MPFR_RNDN);
        mpfr_set_d(r33232, x, MPFR_RNDN);
        mpfr_cos(r33233, r33232, MPFR_RNDN);
        mpfr_cos(r33234, r33229, MPFR_RNDN);
        mpfr_mul(r33235, r33233, r33234, MPFR_RNDN);
        mpfr_sin(r33236, r33232, MPFR_RNDN);
        mpfr_sin(r33237, r33229, MPFR_RNDN);
        mpfr_mul(r33238, r33236, r33237, MPFR_RNDN);
        mpfr_sub(r33239, r33235, r33238, MPFR_RNDN);
        mpfr_sub(r33240, r33239, r33233, MPFR_RNDN);
        ;
        mpfr_set_si(r33242, mpfr_cmp(r33229, r33241) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r33245, r33229, r33244, MPFR_RNDN);
        mpfr_sin(r33246, r33245, MPFR_RNDN);
        mpfr_add(r33247, r33232, r33229, MPFR_RNDN);
        mpfr_add(r33248, r33247, r33232, MPFR_RNDN);
        mpfr_div(r33249, r33248, r33244, MPFR_RNDN);
        mpfr_sin(r33250, r33249, MPFR_RNDN);
        mpfr_mul(r33251, r33246, r33250, MPFR_RNDN);
        mpfr_mul(r33252, r33243, r33251, MPFR_RNDN);
        if (mpfr_get_si(r33242, MPFR_RNDN)) { mpfr_set(r33253, r33252, MPFR_RNDN); } else { mpfr_set(r33253, r33240, MPFR_RNDN); };
        if (mpfr_get_si(r33231, MPFR_RNDN)) { mpfr_set(r33254, r33240, MPFR_RNDN); } else { mpfr_set(r33254, r33253, MPFR_RNDN); };
        return mpfr_get_d(r33254, MPFR_RNDN);
}

