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

char *name = "NMSE problem 3.3.2";

double f_if(float x, float eps) {
        float r5354084 = x;
        float r5354085 = eps;
        float r5354086 = r5354084 + r5354085;
        float r5354087 = tan(r5354086);
        float r5354088 = tan(r5354084);
        float r5354089 = r5354087 - r5354088;
        return r5354089;
}

double f_id(double x, double eps) {
        double r5354090 = x;
        double r5354091 = eps;
        double r5354092 = r5354090 + r5354091;
        double r5354093 = tan(r5354092);
        double r5354094 = tan(r5354090);
        double r5354095 = r5354093 - r5354094;
        return r5354095;
}


double f_of(float x, float eps) {
        float r5354096 = eps;
        float r5354097 = -2.9959312647223546e-24f;
        bool r5354098 = r5354096 <= r5354097;
        float r5354099 = x;
        float r5354100 = cos(r5354099);
        float r5354101 = r5354099 + r5354096;
        float r5354102 = 1.0 / tan(r5354101);
        float r5354103 = cbrt(r5354102);
        float r5354104 = sin(r5354099);
        float r5354105 = cbrt(r5354104);
        float r5354106 = r5354103 * r5354105;
        float r5354107 = r5354106 * (r5354106 * r5354106);
        float r5354108 = r5354100 - r5354107;
        float r5354109 = r5354102 * r5354100;
        float r5354110 = r5354108 / r5354109;
        float r5354111 = 2.9920447415528193e-87f;
        bool r5354112 = r5354096 <= r5354111;
        float r5354113 = r5354096 * (r5354096 * r5354096);
        float r5354114 = r5354099 * r5354099;
        float r5354115 = r5354113 * r5354114;
        float r5354116 = r5354096 + r5354115;
        float r5354117 = r5354099 * (r5354099 * r5354099);
        float r5354118 = 4.0f;
        float r5354119 = pow(r5354096, r5354118);
        float r5354120 = r5354117 * r5354119;
        float r5354121 = r5354116 + r5354120;
        float r5354122 = r5354102 * (r5354102 * r5354102);
        float r5354123 = cbrt(r5354122);
        float r5354124 = r5354123 * r5354104;
        float r5354125 = r5354100 - r5354124;
        float r5354126 = r5354125 / r5354109;
        float r5354127 = r5354112 ? r5354121 : r5354126;
        float r5354128 = r5354098 ? r5354110 : r5354127;
        return r5354128;
}

double f_od(double x, double eps) {
        double r5354129 = eps;
        double r5354130 = -2.9959312647223546e-24;
        bool r5354131 = r5354129 <= r5354130;
        double r5354132 = x;
        double r5354133 = cos(r5354132);
        double r5354134 = r5354132 + r5354129;
        double r5354135 = 1.0 / tan(r5354134);
        double r5354136 = cbrt(r5354135);
        double r5354137 = sin(r5354132);
        double r5354138 = cbrt(r5354137);
        double r5354139 = r5354136 * r5354138;
        double r5354140 = r5354139 * (r5354139 * r5354139);
        double r5354141 = r5354133 - r5354140;
        double r5354142 = r5354135 * r5354133;
        double r5354143 = r5354141 / r5354142;
        double r5354144 = 2.9920447415528193e-87;
        bool r5354145 = r5354129 <= r5354144;
        double r5354146 = r5354129 * (r5354129 * r5354129);
        double r5354147 = r5354132 * r5354132;
        double r5354148 = r5354146 * r5354147;
        double r5354149 = r5354129 + r5354148;
        double r5354150 = r5354132 * (r5354132 * r5354132);
        double r5354151 = 4.0;
        double r5354152 = pow(r5354129, r5354151);
        double r5354153 = r5354150 * r5354152;
        double r5354154 = r5354149 + r5354153;
        double r5354155 = r5354135 * (r5354135 * r5354135);
        double r5354156 = cbrt(r5354155);
        double r5354157 = r5354156 * r5354137;
        double r5354158 = r5354133 - r5354157;
        double r5354159 = r5354158 / r5354142;
        double r5354160 = r5354145 ? r5354154 : r5354159;
        double r5354161 = r5354131 ? r5354143 : r5354160;
        return r5354161;
}

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 r5354162, r5354163, r5354164, r5354165, r5354166, r5354167;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r5354162);
        mpfr_init(r5354163);
        mpfr_init(r5354164);
        mpfr_init(r5354165);
        mpfr_init(r5354166);
        mpfr_init(r5354167);
}

double f_im(double x, double eps) {
        mpfr_set_d(r5354162, x, MPFR_RNDN);
        mpfr_set_d(r5354163, eps, MPFR_RNDN);
        mpfr_add(r5354164, r5354162, r5354163, MPFR_RNDN);
        mpfr_tan(r5354165, r5354164, MPFR_RNDN);
        mpfr_tan(r5354166, r5354162, MPFR_RNDN);
        mpfr_sub(r5354167, r5354165, r5354166, MPFR_RNDN);
        return mpfr_get_d(r5354167, MPFR_RNDN);
}

static mpfr_t r5354168, r5354169, r5354170, r5354171, r5354172, r5354173, r5354174, r5354175, r5354176, r5354177, r5354178, r5354179, r5354180, r5354181, r5354182, r5354183, r5354184, r5354185, r5354186, r5354187, r5354188, r5354189, r5354190, r5354191, r5354192, r5354193, r5354194, r5354195, r5354196, r5354197, r5354198, r5354199, r5354200;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5354168);
        mpfr_init_set_str(r5354169, "-2.9959312647223546e-24", 10, MPFR_RNDN);
        mpfr_init(r5354170);
        mpfr_init(r5354171);
        mpfr_init(r5354172);
        mpfr_init(r5354173);
        mpfr_init(r5354174);
        mpfr_init(r5354175);
        mpfr_init(r5354176);
        mpfr_init(r5354177);
        mpfr_init(r5354178);
        mpfr_init(r5354179);
        mpfr_init(r5354180);
        mpfr_init(r5354181);
        mpfr_init(r5354182);
        mpfr_init_set_str(r5354183, "2.9920447415528193e-87", 10, MPFR_RNDN);
        mpfr_init(r5354184);
        mpfr_init(r5354185);
        mpfr_init(r5354186);
        mpfr_init(r5354187);
        mpfr_init(r5354188);
        mpfr_init(r5354189);
        mpfr_init_set_str(r5354190, "4", 10, MPFR_RNDN);
        mpfr_init(r5354191);
        mpfr_init(r5354192);
        mpfr_init(r5354193);
        mpfr_init(r5354194);
        mpfr_init(r5354195);
        mpfr_init(r5354196);
        mpfr_init(r5354197);
        mpfr_init(r5354198);
        mpfr_init(r5354199);
        mpfr_init(r5354200);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r5354168, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r5354170, mpfr_cmp(r5354168, r5354169) <= 0, MPFR_RNDN);
        mpfr_set_d(r5354171, x, MPFR_RNDN);
        mpfr_cos(r5354172, r5354171, MPFR_RNDN);
        mpfr_add(r5354173, r5354171, r5354168, MPFR_RNDN);
        mpfr_cot(r5354174, r5354173, MPFR_RNDN);
        mpfr_cbrt(r5354175, r5354174, MPFR_RNDN);
        mpfr_sin(r5354176, r5354171, MPFR_RNDN);
        mpfr_cbrt(r5354177, r5354176, MPFR_RNDN);
        mpfr_mul(r5354178, r5354175, r5354177, MPFR_RNDN);
        mpfr_mul(r5354179, r5354178, r5354178, MPFR_RNDN); mpfr_mul(r5354179, r5354179, r5354178, MPFR_RNDN);
        mpfr_sub(r5354180, r5354172, r5354179, MPFR_RNDN);
        mpfr_mul(r5354181, r5354174, r5354172, MPFR_RNDN);
        mpfr_div(r5354182, r5354180, r5354181, MPFR_RNDN);
        ;
        mpfr_set_si(r5354184, mpfr_cmp(r5354168, r5354183) <= 0, MPFR_RNDN);
        mpfr_mul(r5354185, r5354168, r5354168, MPFR_RNDN); mpfr_mul(r5354185, r5354185, r5354168, MPFR_RNDN);
        mpfr_mul(r5354186, r5354171, r5354171, MPFR_RNDN);
        mpfr_mul(r5354187, r5354185, r5354186, MPFR_RNDN);
        mpfr_add(r5354188, r5354168, r5354187, MPFR_RNDN);
        mpfr_mul(r5354189, r5354171, r5354171, MPFR_RNDN); mpfr_mul(r5354189, r5354189, r5354171, MPFR_RNDN);
        ;
        mpfr_pow(r5354191, r5354168, r5354190, MPFR_RNDN);
        mpfr_mul(r5354192, r5354189, r5354191, MPFR_RNDN);
        mpfr_add(r5354193, r5354188, r5354192, MPFR_RNDN);
        mpfr_mul(r5354194, r5354174, r5354174, MPFR_RNDN); mpfr_mul(r5354194, r5354194, r5354174, MPFR_RNDN);
        mpfr_cbrt(r5354195, r5354194, MPFR_RNDN);
        mpfr_mul(r5354196, r5354195, r5354176, MPFR_RNDN);
        mpfr_sub(r5354197, r5354172, r5354196, MPFR_RNDN);
        mpfr_div(r5354198, r5354197, r5354181, MPFR_RNDN);
        if (mpfr_get_si(r5354184, MPFR_RNDN)) { mpfr_set(r5354199, r5354193, MPFR_RNDN); } else { mpfr_set(r5354199, r5354198, MPFR_RNDN); };
        if (mpfr_get_si(r5354170, MPFR_RNDN)) { mpfr_set(r5354200, r5354182, MPFR_RNDN); } else { mpfr_set(r5354200, r5354199, MPFR_RNDN); };
        return mpfr_get_d(r5354200, MPFR_RNDN);
}

static mpfr_t r5354201, r5354202, r5354203, r5354204, r5354205, r5354206, r5354207, r5354208, r5354209, r5354210, r5354211, r5354212, r5354213, r5354214, r5354215, r5354216, r5354217, r5354218, r5354219, r5354220, r5354221, r5354222, r5354223, r5354224, r5354225, r5354226, r5354227, r5354228, r5354229, r5354230, r5354231, r5354232, r5354233;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5354201);
        mpfr_init_set_str(r5354202, "-2.9959312647223546e-24", 10, MPFR_RNDN);
        mpfr_init(r5354203);
        mpfr_init(r5354204);
        mpfr_init(r5354205);
        mpfr_init(r5354206);
        mpfr_init(r5354207);
        mpfr_init(r5354208);
        mpfr_init(r5354209);
        mpfr_init(r5354210);
        mpfr_init(r5354211);
        mpfr_init(r5354212);
        mpfr_init(r5354213);
        mpfr_init(r5354214);
        mpfr_init(r5354215);
        mpfr_init_set_str(r5354216, "2.9920447415528193e-87", 10, MPFR_RNDN);
        mpfr_init(r5354217);
        mpfr_init(r5354218);
        mpfr_init(r5354219);
        mpfr_init(r5354220);
        mpfr_init(r5354221);
        mpfr_init(r5354222);
        mpfr_init_set_str(r5354223, "4", 10, MPFR_RNDN);
        mpfr_init(r5354224);
        mpfr_init(r5354225);
        mpfr_init(r5354226);
        mpfr_init(r5354227);
        mpfr_init(r5354228);
        mpfr_init(r5354229);
        mpfr_init(r5354230);
        mpfr_init(r5354231);
        mpfr_init(r5354232);
        mpfr_init(r5354233);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r5354201, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r5354203, mpfr_cmp(r5354201, r5354202) <= 0, MPFR_RNDN);
        mpfr_set_d(r5354204, x, MPFR_RNDN);
        mpfr_cos(r5354205, r5354204, MPFR_RNDN);
        mpfr_add(r5354206, r5354204, r5354201, MPFR_RNDN);
        mpfr_cot(r5354207, r5354206, MPFR_RNDN);
        mpfr_cbrt(r5354208, r5354207, MPFR_RNDN);
        mpfr_sin(r5354209, r5354204, MPFR_RNDN);
        mpfr_cbrt(r5354210, r5354209, MPFR_RNDN);
        mpfr_mul(r5354211, r5354208, r5354210, MPFR_RNDN);
        mpfr_mul(r5354212, r5354211, r5354211, MPFR_RNDN); mpfr_mul(r5354212, r5354212, r5354211, MPFR_RNDN);
        mpfr_sub(r5354213, r5354205, r5354212, MPFR_RNDN);
        mpfr_mul(r5354214, r5354207, r5354205, MPFR_RNDN);
        mpfr_div(r5354215, r5354213, r5354214, MPFR_RNDN);
        ;
        mpfr_set_si(r5354217, mpfr_cmp(r5354201, r5354216) <= 0, MPFR_RNDN);
        mpfr_mul(r5354218, r5354201, r5354201, MPFR_RNDN); mpfr_mul(r5354218, r5354218, r5354201, MPFR_RNDN);
        mpfr_mul(r5354219, r5354204, r5354204, MPFR_RNDN);
        mpfr_mul(r5354220, r5354218, r5354219, MPFR_RNDN);
        mpfr_add(r5354221, r5354201, r5354220, MPFR_RNDN);
        mpfr_mul(r5354222, r5354204, r5354204, MPFR_RNDN); mpfr_mul(r5354222, r5354222, r5354204, MPFR_RNDN);
        ;
        mpfr_pow(r5354224, r5354201, r5354223, MPFR_RNDN);
        mpfr_mul(r5354225, r5354222, r5354224, MPFR_RNDN);
        mpfr_add(r5354226, r5354221, r5354225, MPFR_RNDN);
        mpfr_mul(r5354227, r5354207, r5354207, MPFR_RNDN); mpfr_mul(r5354227, r5354227, r5354207, MPFR_RNDN);
        mpfr_cbrt(r5354228, r5354227, MPFR_RNDN);
        mpfr_mul(r5354229, r5354228, r5354209, MPFR_RNDN);
        mpfr_sub(r5354230, r5354205, r5354229, MPFR_RNDN);
        mpfr_div(r5354231, r5354230, r5354214, MPFR_RNDN);
        if (mpfr_get_si(r5354217, MPFR_RNDN)) { mpfr_set(r5354232, r5354226, MPFR_RNDN); } else { mpfr_set(r5354232, r5354231, MPFR_RNDN); };
        if (mpfr_get_si(r5354203, MPFR_RNDN)) { mpfr_set(r5354233, r5354215, MPFR_RNDN); } else { mpfr_set(r5354233, r5354232, MPFR_RNDN); };
        return mpfr_get_d(r5354233, MPFR_RNDN);
}

