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

char *name = "NMSE problem 3.3.5";

double f_if(float x, float eps) {
        float r15123 = x;
        float r15124 = eps;
        float r15125 = r15123 + r15124;
        float r15126 = cos(r15125);
        float r15127 = cos(r15123);
        float r15128 = r15126 - r15127;
        return r15128;
}

double f_id(double x, double eps) {
        double r15129 = x;
        double r15130 = eps;
        double r15131 = r15129 + r15130;
        double r15132 = cos(r15131);
        double r15133 = cos(r15129);
        double r15134 = r15132 - r15133;
        return r15134;
}


double f_of(float x, float eps) {
        float r15135 = eps;
        float r15136 = -4.919611593101614e-11f;
        bool r15137 = r15135 <= r15136;
        float r15138 = x;
        float r15139 = cos(r15138);
        float r15140 = cos(r15135);
        float r15141 = r15139 * r15140;
        float r15142 = sin(r15138);
        float r15143 = sin(r15135);
        float r15144 = r15142 * r15143;
        float r15145 = r15141 - r15144;
        float r15146 = r15145 * r15145;
        float r15147 = r15139 * r15139;
        float r15148 = r15146 - r15147;
        float r15149 = fma(r15140, r15139, r15139);
        float r15150 = r15143 * r15142;
        float r15151 = r15149 - r15150;
        float r15152 = r15148 / r15151;
        float r15153 = 4.702313191606855e-11f;
        bool r15154 = r15135 <= r15153;
        float r15155 = 0.1666666716337204f;
        float r15156 = r15135 * r15155;
        float r15157 = r15138 * (r15138 * r15138);
        float r15158 = r15156 * r15157;
        float r15159 = 0.5f;
        float r15160 = fma(r15159, r15135, r15138);
        float r15161 = r15135 * r15160;
        float r15162 = r15158 - r15161;
        float r15163 = r15154 ? r15162 : r15152;
        float r15164 = r15137 ? r15152 : r15163;
        return r15164;
}

double f_od(double x, double eps) {
        double r15165 = eps;
        double r15166 = -4.919611593101614e-11;
        bool r15167 = r15165 <= r15166;
        double r15168 = x;
        double r15169 = cos(r15168);
        double r15170 = cos(r15165);
        double r15171 = r15169 * r15170;
        double r15172 = sin(r15168);
        double r15173 = sin(r15165);
        double r15174 = r15172 * r15173;
        double r15175 = r15171 - r15174;
        double r15176 = r15175 * r15175;
        double r15177 = r15169 * r15169;
        double r15178 = r15176 - r15177;
        double r15179 = fma(r15170, r15169, r15169);
        double r15180 = r15173 * r15172;
        double r15181 = r15179 - r15180;
        double r15182 = r15178 / r15181;
        double r15183 = 4.702313191606855e-11;
        bool r15184 = r15165 <= r15183;
        double r15185 = 0.1666666716337204;
        double r15186 = r15165 * r15185;
        double r15187 = r15168 * (r15168 * r15168);
        double r15188 = r15186 * r15187;
        double r15189 = 0.5;
        double r15190 = fma(r15189, r15165, r15168);
        double r15191 = r15165 * r15190;
        double r15192 = r15188 - r15191;
        double r15193 = r15184 ? r15192 : r15182;
        double r15194 = r15167 ? r15182 : r15193;
        return r15194;
}

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 r15195, r15196, r15197, r15198, r15199, r15200;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r15195);
        mpfr_init(r15196);
        mpfr_init(r15197);
        mpfr_init(r15198);
        mpfr_init(r15199);
        mpfr_init(r15200);
}

double f_im(double x, double eps) {
        mpfr_set_d(r15195, x, MPFR_RNDN);
        mpfr_set_d(r15196, eps, MPFR_RNDN);
        mpfr_add(r15197, r15195, r15196, MPFR_RNDN);
        mpfr_cos(r15198, r15197, MPFR_RNDN);
        mpfr_cos(r15199, r15195, MPFR_RNDN);
        mpfr_sub(r15200, r15198, r15199, MPFR_RNDN);
        return mpfr_get_d(r15200, MPFR_RNDN);
}

static mpfr_t r15201, r15202, r15203, r15204, r15205, r15206, r15207, r15208, r15209, r15210, r15211, r15212, r15213, r15214, r15215, r15216, r15217, r15218, r15219, r15220, r15221, r15222, r15223, r15224, r15225, r15226, r15227, r15228, r15229, r15230;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r15201);
        mpfr_init_set_str(r15202, "-4.9196116f-11", 10, MPFR_RNDN);
        mpfr_init(r15203);
        mpfr_init(r15204);
        mpfr_init(r15205);
        mpfr_init(r15206);
        mpfr_init(r15207);
        mpfr_init(r15208);
        mpfr_init(r15209);
        mpfr_init(r15210);
        mpfr_init(r15211);
        mpfr_init(r15212);
        mpfr_init(r15213);
        mpfr_init(r15214);
        mpfr_init(r15215);
        mpfr_init(r15216);
        mpfr_init(r15217);
        mpfr_init(r15218);
        mpfr_init_set_str(r15219, "4.7023132f-11", 10, MPFR_RNDN);
        mpfr_init(r15220);
        mpfr_init_set_str(r15221, "1/6", 10, MPFR_RNDN);
        mpfr_init(r15222);
        mpfr_init(r15223);
        mpfr_init(r15224);
        mpfr_init_set_str(r15225, "1/2", 10, MPFR_RNDN);
        mpfr_init(r15226);
        mpfr_init(r15227);
        mpfr_init(r15228);
        mpfr_init(r15229);
        mpfr_init(r15230);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r15201, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r15203, mpfr_cmp(r15201, r15202) <= 0, MPFR_RNDN);
        mpfr_set_d(r15204, x, MPFR_RNDN);
        mpfr_cos(r15205, r15204, MPFR_RNDN);
        mpfr_cos(r15206, r15201, MPFR_RNDN);
        mpfr_mul(r15207, r15205, r15206, MPFR_RNDN);
        mpfr_sin(r15208, r15204, MPFR_RNDN);
        mpfr_sin(r15209, r15201, MPFR_RNDN);
        mpfr_mul(r15210, r15208, r15209, MPFR_RNDN);
        mpfr_sub(r15211, r15207, r15210, MPFR_RNDN);
        mpfr_sqr(r15212, r15211, MPFR_RNDN);
        mpfr_sqr(r15213, r15205, MPFR_RNDN);
        mpfr_sub(r15214, r15212, r15213, MPFR_RNDN);
        mpfr_fma(r15215, r15206, r15205, r15205, MPFR_RNDN);
        mpfr_mul(r15216, r15209, r15208, MPFR_RNDN);
        mpfr_sub(r15217, r15215, r15216, MPFR_RNDN);
        mpfr_div(r15218, r15214, r15217, MPFR_RNDN);
        ;
        mpfr_set_si(r15220, mpfr_cmp(r15201, r15219) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r15222, r15201, r15221, MPFR_RNDN);
        mpfr_mul(r15223, r15204, r15204, MPFR_RNDN); mpfr_mul(r15223, r15223, r15204, MPFR_RNDN);
        mpfr_mul(r15224, r15222, r15223, MPFR_RNDN);
        ;
        mpfr_fma(r15226, r15225, r15201, r15204, MPFR_RNDN);
        mpfr_mul(r15227, r15201, r15226, MPFR_RNDN);
        mpfr_sub(r15228, r15224, r15227, MPFR_RNDN);
        if (mpfr_get_si(r15220, MPFR_RNDN)) { mpfr_set(r15229, r15228, MPFR_RNDN); } else { mpfr_set(r15229, r15218, MPFR_RNDN); };
        if (mpfr_get_si(r15203, MPFR_RNDN)) { mpfr_set(r15230, r15218, MPFR_RNDN); } else { mpfr_set(r15230, r15229, MPFR_RNDN); };
        return mpfr_get_d(r15230, MPFR_RNDN);
}

static mpfr_t r15231, r15232, r15233, r15234, r15235, r15236, r15237, r15238, r15239, r15240, r15241, r15242, r15243, r15244, r15245, r15246, r15247, r15248, r15249, r15250, r15251, r15252, r15253, r15254, r15255, r15256, r15257, r15258, r15259, r15260;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r15231);
        mpfr_init_set_str(r15232, "-4.9196116f-11", 10, MPFR_RNDN);
        mpfr_init(r15233);
        mpfr_init(r15234);
        mpfr_init(r15235);
        mpfr_init(r15236);
        mpfr_init(r15237);
        mpfr_init(r15238);
        mpfr_init(r15239);
        mpfr_init(r15240);
        mpfr_init(r15241);
        mpfr_init(r15242);
        mpfr_init(r15243);
        mpfr_init(r15244);
        mpfr_init(r15245);
        mpfr_init(r15246);
        mpfr_init(r15247);
        mpfr_init(r15248);
        mpfr_init_set_str(r15249, "4.7023132f-11", 10, MPFR_RNDN);
        mpfr_init(r15250);
        mpfr_init_set_str(r15251, "1/6", 10, MPFR_RNDN);
        mpfr_init(r15252);
        mpfr_init(r15253);
        mpfr_init(r15254);
        mpfr_init_set_str(r15255, "1/2", 10, MPFR_RNDN);
        mpfr_init(r15256);
        mpfr_init(r15257);
        mpfr_init(r15258);
        mpfr_init(r15259);
        mpfr_init(r15260);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r15231, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r15233, mpfr_cmp(r15231, r15232) <= 0, MPFR_RNDN);
        mpfr_set_d(r15234, x, MPFR_RNDN);
        mpfr_cos(r15235, r15234, MPFR_RNDN);
        mpfr_cos(r15236, r15231, MPFR_RNDN);
        mpfr_mul(r15237, r15235, r15236, MPFR_RNDN);
        mpfr_sin(r15238, r15234, MPFR_RNDN);
        mpfr_sin(r15239, r15231, MPFR_RNDN);
        mpfr_mul(r15240, r15238, r15239, MPFR_RNDN);
        mpfr_sub(r15241, r15237, r15240, MPFR_RNDN);
        mpfr_sqr(r15242, r15241, MPFR_RNDN);
        mpfr_sqr(r15243, r15235, MPFR_RNDN);
        mpfr_sub(r15244, r15242, r15243, MPFR_RNDN);
        mpfr_fma(r15245, r15236, r15235, r15235, MPFR_RNDN);
        mpfr_mul(r15246, r15239, r15238, MPFR_RNDN);
        mpfr_sub(r15247, r15245, r15246, MPFR_RNDN);
        mpfr_div(r15248, r15244, r15247, MPFR_RNDN);
        ;
        mpfr_set_si(r15250, mpfr_cmp(r15231, r15249) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r15252, r15231, r15251, MPFR_RNDN);
        mpfr_mul(r15253, r15234, r15234, MPFR_RNDN); mpfr_mul(r15253, r15253, r15234, MPFR_RNDN);
        mpfr_mul(r15254, r15252, r15253, MPFR_RNDN);
        ;
        mpfr_fma(r15256, r15255, r15231, r15234, MPFR_RNDN);
        mpfr_mul(r15257, r15231, r15256, MPFR_RNDN);
        mpfr_sub(r15258, r15254, r15257, MPFR_RNDN);
        if (mpfr_get_si(r15250, MPFR_RNDN)) { mpfr_set(r15259, r15258, MPFR_RNDN); } else { mpfr_set(r15259, r15248, MPFR_RNDN); };
        if (mpfr_get_si(r15233, MPFR_RNDN)) { mpfr_set(r15260, r15248, MPFR_RNDN); } else { mpfr_set(r15260, r15259, MPFR_RNDN); };
        return mpfr_get_d(r15260, MPFR_RNDN);
}

