#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 r26103 = x;
        float r26104 = eps;
        float r26105 = r26103 + r26104;
        float r26106 = cos(r26105);
        float r26107 = cos(r26103);
        float r26108 = r26106 - r26107;
        return r26108;
}

double f_id(double x, double eps) {
        double r26109 = x;
        double r26110 = eps;
        double r26111 = r26109 + r26110;
        double r26112 = cos(r26111);
        double r26113 = cos(r26109);
        double r26114 = r26112 - r26113;
        return r26114;
}


double f_of(float x, float eps) {
        float r26115 = eps;
        float r26116 = -1.4194207403981303e-05;
        bool r26117 = r26115 <= r26116;
        float r26118 = x;
        float r26119 = cos(r26118);
        float r26120 = cos(r26115);
        float r26121 = r26119 * r26120;
        float r26122 = sin(r26115);
        float r26123 = sin(r26118);
        float r26124 = fma(r26122, r26123, r26119);
        float r26125 = r26121 - r26124;
        float r26126 = 2.6713101620310196e-06;
        bool r26127 = r26115 <= r26126;
        float r26128 = -2;
        float r26129 = 2;
        float r26130 = r26115 / r26129;
        float r26131 = sin(r26130);
        float r26132 = r26115 + r26118;
        float r26133 = r26118 + r26132;
        float r26134 = r26133 / r26129;
        float r26135 = sin(r26134);
        float r26136 = r26131 * r26135;
        float r26137 = expm1(r26136);
        float r26138 = log1p(r26137);
        float r26139 = r26128 * r26138;
        float r26140 = r26123 * r26122;
        float r26141 = r26121 - r26140;
        float r26142 = r26141 - r26119;
        float r26143 = r26127 ? r26139 : r26142;
        float r26144 = r26117 ? r26125 : r26143;
        return r26144;
}

double f_od(double x, double eps) {
        double r26145 = eps;
        double r26146 = -1.4194207403981303e-05;
        bool r26147 = r26145 <= r26146;
        double r26148 = x;
        double r26149 = cos(r26148);
        double r26150 = cos(r26145);
        double r26151 = r26149 * r26150;
        double r26152 = sin(r26145);
        double r26153 = sin(r26148);
        double r26154 = fma(r26152, r26153, r26149);
        double r26155 = r26151 - r26154;
        double r26156 = 2.6713101620310196e-06;
        bool r26157 = r26145 <= r26156;
        double r26158 = -2;
        double r26159 = 2;
        double r26160 = r26145 / r26159;
        double r26161 = sin(r26160);
        double r26162 = r26145 + r26148;
        double r26163 = r26148 + r26162;
        double r26164 = r26163 / r26159;
        double r26165 = sin(r26164);
        double r26166 = r26161 * r26165;
        double r26167 = expm1(r26166);
        double r26168 = log1p(r26167);
        double r26169 = r26158 * r26168;
        double r26170 = r26153 * r26152;
        double r26171 = r26151 - r26170;
        double r26172 = r26171 - r26149;
        double r26173 = r26157 ? r26169 : r26172;
        double r26174 = r26147 ? r26155 : r26173;
        return r26174;
}

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 r26175, r26176, r26177, r26178, r26179, r26180;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r26175);
        mpfr_init(r26176);
        mpfr_init(r26177);
        mpfr_init(r26178);
        mpfr_init(r26179);
        mpfr_init(r26180);
}

double f_im(double x, double eps) {
        mpfr_set_d(r26175, x, MPFR_RNDN);
        mpfr_set_d(r26176, eps, MPFR_RNDN);
        mpfr_add(r26177, r26175, r26176, MPFR_RNDN);
        mpfr_cos(r26178, r26177, MPFR_RNDN);
        mpfr_cos(r26179, r26175, MPFR_RNDN);
        mpfr_sub(r26180, r26178, r26179, MPFR_RNDN);
        return mpfr_get_d(r26180, MPFR_RNDN);
}

static mpfr_t r26181, r26182, r26183, r26184, r26185, r26186, r26187, r26188, r26189, r26190, r26191, r26192, r26193, r26194, r26195, r26196, r26197, r26198, r26199, r26200, r26201, r26202, r26203, r26204, r26205, r26206, r26207, r26208, r26209, r26210;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r26181);
        mpfr_init_set_str(r26182, "-1.4194207403981303e-05", 10, MPFR_RNDN);
        mpfr_init(r26183);
        mpfr_init(r26184);
        mpfr_init(r26185);
        mpfr_init(r26186);
        mpfr_init(r26187);
        mpfr_init(r26188);
        mpfr_init(r26189);
        mpfr_init(r26190);
        mpfr_init(r26191);
        mpfr_init_set_str(r26192, "2.6713101620310196e-06", 10, MPFR_RNDN);
        mpfr_init(r26193);
        mpfr_init_set_str(r26194, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r26195, "2", 10, MPFR_RNDN);
        mpfr_init(r26196);
        mpfr_init(r26197);
        mpfr_init(r26198);
        mpfr_init(r26199);
        mpfr_init(r26200);
        mpfr_init(r26201);
        mpfr_init(r26202);
        mpfr_init(r26203);
        mpfr_init(r26204);
        mpfr_init(r26205);
        mpfr_init(r26206);
        mpfr_init(r26207);
        mpfr_init(r26208);
        mpfr_init(r26209);
        mpfr_init(r26210);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r26181, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r26183, mpfr_cmp(r26181, r26182) <= 0, MPFR_RNDN);
        mpfr_set_d(r26184, x, MPFR_RNDN);
        mpfr_cos(r26185, r26184, MPFR_RNDN);
        mpfr_cos(r26186, r26181, MPFR_RNDN);
        mpfr_mul(r26187, r26185, r26186, MPFR_RNDN);
        mpfr_sin(r26188, r26181, MPFR_RNDN);
        mpfr_sin(r26189, r26184, MPFR_RNDN);
        mpfr_fma(r26190, r26188, r26189, r26185, MPFR_RNDN);
        mpfr_sub(r26191, r26187, r26190, MPFR_RNDN);
        ;
        mpfr_set_si(r26193, mpfr_cmp(r26181, r26192) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r26196, r26181, r26195, MPFR_RNDN);
        mpfr_sin(r26197, r26196, MPFR_RNDN);
        mpfr_add(r26198, r26181, r26184, MPFR_RNDN);
        mpfr_add(r26199, r26184, r26198, MPFR_RNDN);
        mpfr_div(r26200, r26199, r26195, MPFR_RNDN);
        mpfr_sin(r26201, r26200, MPFR_RNDN);
        mpfr_mul(r26202, r26197, r26201, MPFR_RNDN);
        mpfr_expm1(r26203, r26202, MPFR_RNDN);
        mpfr_log1p(r26204, r26203, MPFR_RNDN);
        mpfr_mul(r26205, r26194, r26204, MPFR_RNDN);
        mpfr_mul(r26206, r26189, r26188, MPFR_RNDN);
        mpfr_sub(r26207, r26187, r26206, MPFR_RNDN);
        mpfr_sub(r26208, r26207, r26185, MPFR_RNDN);
        if (mpfr_get_si(r26193, MPFR_RNDN)) { mpfr_set(r26209, r26205, MPFR_RNDN); } else { mpfr_set(r26209, r26208, MPFR_RNDN); };
        if (mpfr_get_si(r26183, MPFR_RNDN)) { mpfr_set(r26210, r26191, MPFR_RNDN); } else { mpfr_set(r26210, r26209, MPFR_RNDN); };
        return mpfr_get_d(r26210, MPFR_RNDN);
}

static mpfr_t r26211, r26212, r26213, r26214, r26215, r26216, r26217, r26218, r26219, r26220, r26221, r26222, r26223, r26224, r26225, r26226, r26227, r26228, r26229, r26230, r26231, r26232, r26233, r26234, r26235, r26236, r26237, r26238, r26239, r26240;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r26211);
        mpfr_init_set_str(r26212, "-1.4194207403981303e-05", 10, MPFR_RNDN);
        mpfr_init(r26213);
        mpfr_init(r26214);
        mpfr_init(r26215);
        mpfr_init(r26216);
        mpfr_init(r26217);
        mpfr_init(r26218);
        mpfr_init(r26219);
        mpfr_init(r26220);
        mpfr_init(r26221);
        mpfr_init_set_str(r26222, "2.6713101620310196e-06", 10, MPFR_RNDN);
        mpfr_init(r26223);
        mpfr_init_set_str(r26224, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r26225, "2", 10, MPFR_RNDN);
        mpfr_init(r26226);
        mpfr_init(r26227);
        mpfr_init(r26228);
        mpfr_init(r26229);
        mpfr_init(r26230);
        mpfr_init(r26231);
        mpfr_init(r26232);
        mpfr_init(r26233);
        mpfr_init(r26234);
        mpfr_init(r26235);
        mpfr_init(r26236);
        mpfr_init(r26237);
        mpfr_init(r26238);
        mpfr_init(r26239);
        mpfr_init(r26240);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r26211, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r26213, mpfr_cmp(r26211, r26212) <= 0, MPFR_RNDN);
        mpfr_set_d(r26214, x, MPFR_RNDN);
        mpfr_cos(r26215, r26214, MPFR_RNDN);
        mpfr_cos(r26216, r26211, MPFR_RNDN);
        mpfr_mul(r26217, r26215, r26216, MPFR_RNDN);
        mpfr_sin(r26218, r26211, MPFR_RNDN);
        mpfr_sin(r26219, r26214, MPFR_RNDN);
        mpfr_fma(r26220, r26218, r26219, r26215, MPFR_RNDN);
        mpfr_sub(r26221, r26217, r26220, MPFR_RNDN);
        ;
        mpfr_set_si(r26223, mpfr_cmp(r26211, r26222) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r26226, r26211, r26225, MPFR_RNDN);
        mpfr_sin(r26227, r26226, MPFR_RNDN);
        mpfr_add(r26228, r26211, r26214, MPFR_RNDN);
        mpfr_add(r26229, r26214, r26228, MPFR_RNDN);
        mpfr_div(r26230, r26229, r26225, MPFR_RNDN);
        mpfr_sin(r26231, r26230, MPFR_RNDN);
        mpfr_mul(r26232, r26227, r26231, MPFR_RNDN);
        mpfr_expm1(r26233, r26232, MPFR_RNDN);
        mpfr_log1p(r26234, r26233, MPFR_RNDN);
        mpfr_mul(r26235, r26224, r26234, MPFR_RNDN);
        mpfr_mul(r26236, r26219, r26218, MPFR_RNDN);
        mpfr_sub(r26237, r26217, r26236, MPFR_RNDN);
        mpfr_sub(r26238, r26237, r26215, MPFR_RNDN);
        if (mpfr_get_si(r26223, MPFR_RNDN)) { mpfr_set(r26239, r26235, MPFR_RNDN); } else { mpfr_set(r26239, r26238, MPFR_RNDN); };
        if (mpfr_get_si(r26213, MPFR_RNDN)) { mpfr_set(r26240, r26221, MPFR_RNDN); } else { mpfr_set(r26240, r26239, MPFR_RNDN); };
        return mpfr_get_d(r26240, MPFR_RNDN);
}

