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

char *name = "cos2 (problem 3.4.1)";

double f_if(float x) {
        float r6237219 = 1;
        float r6237220 = x;
        float r6237221 = cos(r6237220);
        float r6237222 = r6237219 - r6237221;
        float r6237223 = r6237220 * r6237220;
        float r6237224 = r6237222 / r6237223;
        return r6237224;
}

double f_id(double x) {
        double r6237225 = 1;
        double r6237226 = x;
        double r6237227 = cos(r6237226);
        double r6237228 = r6237225 - r6237227;
        double r6237229 = r6237226 * r6237226;
        double r6237230 = r6237228 / r6237229;
        return r6237230;
}


double f_of(float x) {
        float r6237231 = x;
        float r6237232 = -0.013032351641669214;
        bool r6237233 = r6237231 <= r6237232;
        float r6237234 = sin(r6237231);
        float r6237235 = r6237234 / r6237231;
        float r6237236 = 1;
        float r6237237 = cos(r6237231);
        float r6237238 = r6237236 + r6237237;
        float r6237239 = r6237238 / r6237235;
        float r6237240 = r6237235 / r6237239;
        float r6237241 = 0.00982517273317034;
        bool r6237242 = r6237231 <= r6237241;
        float r6237243 = 1/2;
        float r6237244 = 1/720;
        float r6237245 = 4;
        float r6237246 = pow(r6237231, r6237245);
        float r6237247 = r6237244 * r6237246;
        float r6237248 = r6237231 * r6237231;
        float r6237249 = 1/24;
        float r6237250 = r6237248 * r6237249;
        float r6237251 = r6237247 - r6237250;
        float r6237252 = r6237243 + r6237251;
        float r6237253 = r6237242 ? r6237252 : r6237240;
        float r6237254 = r6237233 ? r6237240 : r6237253;
        return r6237254;
}

double f_od(double x) {
        double r6237255 = x;
        double r6237256 = -0.013032351641669214;
        bool r6237257 = r6237255 <= r6237256;
        double r6237258 = sin(r6237255);
        double r6237259 = r6237258 / r6237255;
        double r6237260 = 1;
        double r6237261 = cos(r6237255);
        double r6237262 = r6237260 + r6237261;
        double r6237263 = r6237262 / r6237259;
        double r6237264 = r6237259 / r6237263;
        double r6237265 = 0.00982517273317034;
        bool r6237266 = r6237255 <= r6237265;
        double r6237267 = 1/2;
        double r6237268 = 1/720;
        double r6237269 = 4;
        double r6237270 = pow(r6237255, r6237269);
        double r6237271 = r6237268 * r6237270;
        double r6237272 = r6237255 * r6237255;
        double r6237273 = 1/24;
        double r6237274 = r6237272 * r6237273;
        double r6237275 = r6237271 - r6237274;
        double r6237276 = r6237267 + r6237275;
        double r6237277 = r6237266 ? r6237276 : r6237264;
        double r6237278 = r6237257 ? r6237264 : r6237277;
        return r6237278;
}

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 r6237279, r6237280, r6237281, r6237282, r6237283, r6237284;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r6237279, "1", 10, MPFR_RNDN);
        mpfr_init(r6237280);
        mpfr_init(r6237281);
        mpfr_init(r6237282);
        mpfr_init(r6237283);
        mpfr_init(r6237284);
}

double f_im(double x) {
        ;
        mpfr_set_d(r6237280, x, MPFR_RNDN);
        mpfr_cos(r6237281, r6237280, MPFR_RNDN);
        mpfr_sub(r6237282, r6237279, r6237281, MPFR_RNDN);
        mpfr_mul(r6237283, r6237280, r6237280, MPFR_RNDN);
        mpfr_div(r6237284, r6237282, r6237283, MPFR_RNDN);
        return mpfr_get_d(r6237284, MPFR_RNDN);
}

static mpfr_t r6237285, r6237286, r6237287, r6237288, r6237289, r6237290, r6237291, r6237292, r6237293, r6237294, r6237295, r6237296, r6237297, r6237298, r6237299, r6237300, r6237301, r6237302, r6237303, r6237304, r6237305, r6237306, r6237307, r6237308;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r6237285);
        mpfr_init_set_str(r6237286, "-0.013032351641669214", 10, MPFR_RNDN);
        mpfr_init(r6237287);
        mpfr_init(r6237288);
        mpfr_init(r6237289);
        mpfr_init_set_str(r6237290, "1", 10, MPFR_RNDN);
        mpfr_init(r6237291);
        mpfr_init(r6237292);
        mpfr_init(r6237293);
        mpfr_init(r6237294);
        mpfr_init_set_str(r6237295, "0.00982517273317034", 10, MPFR_RNDN);
        mpfr_init(r6237296);
        mpfr_init_set_str(r6237297, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r6237298, "1/720", 10, MPFR_RNDN);
        mpfr_init_set_str(r6237299, "4", 10, MPFR_RNDN);
        mpfr_init(r6237300);
        mpfr_init(r6237301);
        mpfr_init(r6237302);
        mpfr_init_set_str(r6237303, "1/24", 10, MPFR_RNDN);
        mpfr_init(r6237304);
        mpfr_init(r6237305);
        mpfr_init(r6237306);
        mpfr_init(r6237307);
        mpfr_init(r6237308);
}

double f_fm(double x) {
        mpfr_set_d(r6237285, x, MPFR_RNDN);
        ;
        mpfr_set_si(r6237287, mpfr_cmp(r6237285, r6237286) <= 0, MPFR_RNDN);
        mpfr_sin(r6237288, r6237285, MPFR_RNDN);
        mpfr_div(r6237289, r6237288, r6237285, MPFR_RNDN);
        ;
        mpfr_cos(r6237291, r6237285, MPFR_RNDN);
        mpfr_add(r6237292, r6237290, r6237291, MPFR_RNDN);
        mpfr_div(r6237293, r6237292, r6237289, MPFR_RNDN);
        mpfr_div(r6237294, r6237289, r6237293, MPFR_RNDN);
        ;
        mpfr_set_si(r6237296, mpfr_cmp(r6237285, r6237295) <= 0, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r6237300, r6237285, r6237299, MPFR_RNDN);
        mpfr_mul(r6237301, r6237298, r6237300, MPFR_RNDN);
        mpfr_mul(r6237302, r6237285, r6237285, MPFR_RNDN);
        ;
        mpfr_mul(r6237304, r6237302, r6237303, MPFR_RNDN);
        mpfr_sub(r6237305, r6237301, r6237304, MPFR_RNDN);
        mpfr_add(r6237306, r6237297, r6237305, MPFR_RNDN);
        if (mpfr_get_si(r6237296, MPFR_RNDN)) { mpfr_set(r6237307, r6237306, MPFR_RNDN); } else { mpfr_set(r6237307, r6237294, MPFR_RNDN); };
        if (mpfr_get_si(r6237287, MPFR_RNDN)) { mpfr_set(r6237308, r6237294, MPFR_RNDN); } else { mpfr_set(r6237308, r6237307, MPFR_RNDN); };
        return mpfr_get_d(r6237308, MPFR_RNDN);
}

static mpfr_t r6237309, r6237310, r6237311, r6237312, r6237313, r6237314, r6237315, r6237316, r6237317, r6237318, r6237319, r6237320, r6237321, r6237322, r6237323, r6237324, r6237325, r6237326, r6237327, r6237328, r6237329, r6237330, r6237331, r6237332;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r6237309);
        mpfr_init_set_str(r6237310, "-0.013032351641669214", 10, MPFR_RNDN);
        mpfr_init(r6237311);
        mpfr_init(r6237312);
        mpfr_init(r6237313);
        mpfr_init_set_str(r6237314, "1", 10, MPFR_RNDN);
        mpfr_init(r6237315);
        mpfr_init(r6237316);
        mpfr_init(r6237317);
        mpfr_init(r6237318);
        mpfr_init_set_str(r6237319, "0.00982517273317034", 10, MPFR_RNDN);
        mpfr_init(r6237320);
        mpfr_init_set_str(r6237321, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r6237322, "1/720", 10, MPFR_RNDN);
        mpfr_init_set_str(r6237323, "4", 10, MPFR_RNDN);
        mpfr_init(r6237324);
        mpfr_init(r6237325);
        mpfr_init(r6237326);
        mpfr_init_set_str(r6237327, "1/24", 10, MPFR_RNDN);
        mpfr_init(r6237328);
        mpfr_init(r6237329);
        mpfr_init(r6237330);
        mpfr_init(r6237331);
        mpfr_init(r6237332);
}

double f_dm(double x) {
        mpfr_set_d(r6237309, x, MPFR_RNDN);
        ;
        mpfr_set_si(r6237311, mpfr_cmp(r6237309, r6237310) <= 0, MPFR_RNDN);
        mpfr_sin(r6237312, r6237309, MPFR_RNDN);
        mpfr_div(r6237313, r6237312, r6237309, MPFR_RNDN);
        ;
        mpfr_cos(r6237315, r6237309, MPFR_RNDN);
        mpfr_add(r6237316, r6237314, r6237315, MPFR_RNDN);
        mpfr_div(r6237317, r6237316, r6237313, MPFR_RNDN);
        mpfr_div(r6237318, r6237313, r6237317, MPFR_RNDN);
        ;
        mpfr_set_si(r6237320, mpfr_cmp(r6237309, r6237319) <= 0, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r6237324, r6237309, r6237323, MPFR_RNDN);
        mpfr_mul(r6237325, r6237322, r6237324, MPFR_RNDN);
        mpfr_mul(r6237326, r6237309, r6237309, MPFR_RNDN);
        ;
        mpfr_mul(r6237328, r6237326, r6237327, MPFR_RNDN);
        mpfr_sub(r6237329, r6237325, r6237328, MPFR_RNDN);
        mpfr_add(r6237330, r6237321, r6237329, MPFR_RNDN);
        if (mpfr_get_si(r6237320, MPFR_RNDN)) { mpfr_set(r6237331, r6237330, MPFR_RNDN); } else { mpfr_set(r6237331, r6237318, MPFR_RNDN); };
        if (mpfr_get_si(r6237311, MPFR_RNDN)) { mpfr_set(r6237332, r6237318, MPFR_RNDN); } else { mpfr_set(r6237332, r6237331, MPFR_RNDN); };
        return mpfr_get_d(r6237332, MPFR_RNDN);
}

