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

char *name = "NMSE problem 3.4.1";

double f_if(float x) {
        float r26057 = 1.0f;
        float r26058 = x;
        float r26059 = cos(r26058);
        float r26060 = r26057 - r26059;
        float r26061 = r26058 * r26058;
        float r26062 = r26060 / r26061;
        return r26062;
}

double f_id(double x) {
        double r26063 = 1.0;
        double r26064 = x;
        double r26065 = cos(r26064);
        double r26066 = r26063 - r26065;
        double r26067 = r26064 * r26064;
        double r26068 = r26066 / r26067;
        return r26068;
}


double f_of(float x) {
        float r26069 = x;
        float r26070 = -6.667433711053936e-08f;
        bool r26071 = r26069 <= r26070;
        float r26072 = 1.0f;
        float r26073 = r26072 / r26069;
        float r26074 = cos(r26069);
        float r26075 = r26072 - r26074;
        float r26076 = log(r26075);
        float r26077 = exp(r26076);
        float r26078 = r26077 / r26069;
        float r26079 = r26073 * r26078;
        float r26080 = 1183236732512159.2f;
        bool r26081 = r26069 <= r26080;
        float r26082 = 0.5f;
        float r26083 = 0.001388888888888889f;
        float r26084 = 4.0f;
        float r26085 = pow(r26069, r26084);
        float r26086 = r26083 * r26085;
        float r26087 = r26082 + r26086;
        float r26088 = 0.041666666666666664f;
        float r26089 = r26069 * r26069;
        float r26090 = r26088 * r26089;
        float r26091 = r26087 - r26090;
        float r26092 = r26081 ? r26091 : r26079;
        float r26093 = r26071 ? r26079 : r26092;
        return r26093;
}

double f_od(double x) {
        double r26094 = x;
        double r26095 = -6.667433711053936e-08;
        bool r26096 = r26094 <= r26095;
        double r26097 = 1.0;
        double r26098 = r26097 / r26094;
        double r26099 = cos(r26094);
        double r26100 = r26097 - r26099;
        double r26101 = log(r26100);
        double r26102 = exp(r26101);
        double r26103 = r26102 / r26094;
        double r26104 = r26098 * r26103;
        double r26105 = 1183236732512159.2;
        bool r26106 = r26094 <= r26105;
        double r26107 = 0.5;
        double r26108 = 0.001388888888888889;
        double r26109 = 4.0;
        double r26110 = pow(r26094, r26109);
        double r26111 = r26108 * r26110;
        double r26112 = r26107 + r26111;
        double r26113 = 0.041666666666666664;
        double r26114 = r26094 * r26094;
        double r26115 = r26113 * r26114;
        double r26116 = r26112 - r26115;
        double r26117 = r26106 ? r26116 : r26104;
        double r26118 = r26096 ? r26104 : r26117;
        return r26118;
}

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 r26119, r26120, r26121, r26122, r26123, r26124;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r26119, "1", 10, MPFR_RNDN);
        mpfr_init(r26120);
        mpfr_init(r26121);
        mpfr_init(r26122);
        mpfr_init(r26123);
        mpfr_init(r26124);
}

double f_im(double x) {
        ;
        mpfr_set_d(r26120, x, MPFR_RNDN);
        mpfr_cos(r26121, r26120, MPFR_RNDN);
        mpfr_sub(r26122, r26119, r26121, MPFR_RNDN);
        mpfr_mul(r26123, r26120, r26120, MPFR_RNDN);
        mpfr_div(r26124, r26122, r26123, MPFR_RNDN);
        return mpfr_get_d(r26124, MPFR_RNDN);
}

static mpfr_t r26125, r26126, r26127, r26128, r26129, r26130, r26131, r26132, r26133, r26134, r26135, r26136, r26137, r26138, r26139, r26140, r26141, r26142, r26143, r26144, r26145, r26146, r26147, r26148, r26149;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r26125);
        mpfr_init_set_str(r26126, "-6.667433711053936e-08", 10, MPFR_RNDN);
        mpfr_init(r26127);
        mpfr_init_set_str(r26128, "1", 10, MPFR_RNDN);
        mpfr_init(r26129);
        mpfr_init(r26130);
        mpfr_init(r26131);
        mpfr_init(r26132);
        mpfr_init(r26133);
        mpfr_init(r26134);
        mpfr_init(r26135);
        mpfr_init_set_str(r26136, "1183236732512159.2", 10, MPFR_RNDN);
        mpfr_init(r26137);
        mpfr_init_set_str(r26138, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r26139, "1/720", 10, MPFR_RNDN);
        mpfr_init_set_str(r26140, "4", 10, MPFR_RNDN);
        mpfr_init(r26141);
        mpfr_init(r26142);
        mpfr_init(r26143);
        mpfr_init_set_str(r26144, "1/24", 10, MPFR_RNDN);
        mpfr_init(r26145);
        mpfr_init(r26146);
        mpfr_init(r26147);
        mpfr_init(r26148);
        mpfr_init(r26149);
}

double f_fm(double x) {
        mpfr_set_d(r26125, x, MPFR_RNDN);
        ;
        mpfr_set_si(r26127, mpfr_cmp(r26125, r26126) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r26129, r26128, r26125, MPFR_RNDN);
        mpfr_cos(r26130, r26125, MPFR_RNDN);
        mpfr_sub(r26131, r26128, r26130, MPFR_RNDN);
        mpfr_log(r26132, r26131, MPFR_RNDN);
        mpfr_exp(r26133, r26132, MPFR_RNDN);
        mpfr_div(r26134, r26133, r26125, MPFR_RNDN);
        mpfr_mul(r26135, r26129, r26134, MPFR_RNDN);
        ;
        mpfr_set_si(r26137, mpfr_cmp(r26125, r26136) <= 0, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r26141, r26125, r26140, MPFR_RNDN);
        mpfr_mul(r26142, r26139, r26141, MPFR_RNDN);
        mpfr_add(r26143, r26138, r26142, MPFR_RNDN);
        ;
        mpfr_sqr(r26145, r26125, MPFR_RNDN);
        mpfr_mul(r26146, r26144, r26145, MPFR_RNDN);
        mpfr_sub(r26147, r26143, r26146, MPFR_RNDN);
        if (mpfr_get_si(r26137, MPFR_RNDN)) { mpfr_set(r26148, r26147, MPFR_RNDN); } else { mpfr_set(r26148, r26135, MPFR_RNDN); };
        if (mpfr_get_si(r26127, MPFR_RNDN)) { mpfr_set(r26149, r26135, MPFR_RNDN); } else { mpfr_set(r26149, r26148, MPFR_RNDN); };
        return mpfr_get_d(r26149, MPFR_RNDN);
}

static mpfr_t r26150, r26151, r26152, r26153, r26154, r26155, r26156, r26157, r26158, r26159, r26160, r26161, r26162, r26163, r26164, r26165, r26166, r26167, r26168, r26169, r26170, r26171, r26172, r26173, r26174;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r26150);
        mpfr_init_set_str(r26151, "-6.667433711053936e-08", 10, MPFR_RNDN);
        mpfr_init(r26152);
        mpfr_init_set_str(r26153, "1", 10, MPFR_RNDN);
        mpfr_init(r26154);
        mpfr_init(r26155);
        mpfr_init(r26156);
        mpfr_init(r26157);
        mpfr_init(r26158);
        mpfr_init(r26159);
        mpfr_init(r26160);
        mpfr_init_set_str(r26161, "1183236732512159.2", 10, MPFR_RNDN);
        mpfr_init(r26162);
        mpfr_init_set_str(r26163, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r26164, "1/720", 10, MPFR_RNDN);
        mpfr_init_set_str(r26165, "4", 10, MPFR_RNDN);
        mpfr_init(r26166);
        mpfr_init(r26167);
        mpfr_init(r26168);
        mpfr_init_set_str(r26169, "1/24", 10, MPFR_RNDN);
        mpfr_init(r26170);
        mpfr_init(r26171);
        mpfr_init(r26172);
        mpfr_init(r26173);
        mpfr_init(r26174);
}

double f_dm(double x) {
        mpfr_set_d(r26150, x, MPFR_RNDN);
        ;
        mpfr_set_si(r26152, mpfr_cmp(r26150, r26151) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r26154, r26153, r26150, MPFR_RNDN);
        mpfr_cos(r26155, r26150, MPFR_RNDN);
        mpfr_sub(r26156, r26153, r26155, MPFR_RNDN);
        mpfr_log(r26157, r26156, MPFR_RNDN);
        mpfr_exp(r26158, r26157, MPFR_RNDN);
        mpfr_div(r26159, r26158, r26150, MPFR_RNDN);
        mpfr_mul(r26160, r26154, r26159, MPFR_RNDN);
        ;
        mpfr_set_si(r26162, mpfr_cmp(r26150, r26161) <= 0, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r26166, r26150, r26165, MPFR_RNDN);
        mpfr_mul(r26167, r26164, r26166, MPFR_RNDN);
        mpfr_add(r26168, r26163, r26167, MPFR_RNDN);
        ;
        mpfr_sqr(r26170, r26150, MPFR_RNDN);
        mpfr_mul(r26171, r26169, r26170, MPFR_RNDN);
        mpfr_sub(r26172, r26168, r26171, MPFR_RNDN);
        if (mpfr_get_si(r26162, MPFR_RNDN)) { mpfr_set(r26173, r26172, MPFR_RNDN); } else { mpfr_set(r26173, r26160, MPFR_RNDN); };
        if (mpfr_get_si(r26152, MPFR_RNDN)) { mpfr_set(r26174, r26160, MPFR_RNDN); } else { mpfr_set(r26174, r26173, MPFR_RNDN); };
        return mpfr_get_d(r26174, MPFR_RNDN);
}

