#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 r5318716 = x;
        float r5318717 = eps;
        float r5318718 = r5318716 + r5318717;
        float r5318719 = cos(r5318718);
        float r5318720 = cos(r5318716);
        float r5318721 = r5318719 - r5318720;
        return r5318721;
}

double f_id(double x, double eps) {
        double r5318722 = x;
        double r5318723 = eps;
        double r5318724 = r5318722 + r5318723;
        double r5318725 = cos(r5318724);
        double r5318726 = cos(r5318722);
        double r5318727 = r5318725 - r5318726;
        return r5318727;
}


double f_of(float x, float eps) {
        float r5318728 = eps;
        float r5318729 = -3.4500988550242373e-23f;
        bool r5318730 = r5318728 <= r5318729;
        float r5318731 = x;
        float r5318732 = cos(r5318731);
        float r5318733 = cos(r5318728);
        float r5318734 = r5318732 * r5318733;
        float r5318735 = sin(r5318731);
        float r5318736 = sin(r5318728);
        float r5318737 = r5318735 * r5318736;
        float r5318738 = exp(r5318737);
        float r5318739 = log(r5318738);
        float r5318740 = r5318739 + r5318732;
        float r5318741 = r5318734 - r5318740;
        float r5318742 = 0.4439134345824553f;
        bool r5318743 = r5318728 <= r5318742;
        float r5318744 = 0.16666666666666666f;
        float r5318745 = r5318728 * r5318744;
        float r5318746 = r5318731 * (r5318731 * r5318731);
        float r5318747 = r5318745 * r5318746;
        float r5318748 = 0.5f;
        float r5318749 = r5318728 * r5318748;
        float r5318750 = r5318749 + r5318731;
        float r5318751 = r5318728 * r5318750;
        float r5318752 = r5318747 - r5318751;
        float r5318753 = r5318737 * (r5318737 * r5318737);
        float r5318754 = cbrt(r5318753);
        float r5318755 = r5318754 + r5318732;
        float r5318756 = r5318734 - r5318755;
        float r5318757 = r5318743 ? r5318752 : r5318756;
        float r5318758 = r5318730 ? r5318741 : r5318757;
        return r5318758;
}

double f_od(double x, double eps) {
        double r5318759 = eps;
        double r5318760 = -3.4500988550242373e-23;
        bool r5318761 = r5318759 <= r5318760;
        double r5318762 = x;
        double r5318763 = cos(r5318762);
        double r5318764 = cos(r5318759);
        double r5318765 = r5318763 * r5318764;
        double r5318766 = sin(r5318762);
        double r5318767 = sin(r5318759);
        double r5318768 = r5318766 * r5318767;
        double r5318769 = exp(r5318768);
        double r5318770 = log(r5318769);
        double r5318771 = r5318770 + r5318763;
        double r5318772 = r5318765 - r5318771;
        double r5318773 = 0.4439134345824553;
        bool r5318774 = r5318759 <= r5318773;
        double r5318775 = 0.16666666666666666;
        double r5318776 = r5318759 * r5318775;
        double r5318777 = r5318762 * (r5318762 * r5318762);
        double r5318778 = r5318776 * r5318777;
        double r5318779 = 0.5;
        double r5318780 = r5318759 * r5318779;
        double r5318781 = r5318780 + r5318762;
        double r5318782 = r5318759 * r5318781;
        double r5318783 = r5318778 - r5318782;
        double r5318784 = r5318768 * (r5318768 * r5318768);
        double r5318785 = cbrt(r5318784);
        double r5318786 = r5318785 + r5318763;
        double r5318787 = r5318765 - r5318786;
        double r5318788 = r5318774 ? r5318783 : r5318787;
        double r5318789 = r5318761 ? r5318772 : r5318788;
        return r5318789;
}

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 r5318790, r5318791, r5318792, r5318793, r5318794, r5318795;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r5318790);
        mpfr_init(r5318791);
        mpfr_init(r5318792);
        mpfr_init(r5318793);
        mpfr_init(r5318794);
        mpfr_init(r5318795);
}

double f_im(double x, double eps) {
        mpfr_set_d(r5318790, x, MPFR_RNDN);
        mpfr_set_d(r5318791, eps, MPFR_RNDN);
        mpfr_add(r5318792, r5318790, r5318791, MPFR_RNDN);
        mpfr_cos(r5318793, r5318792, MPFR_RNDN);
        mpfr_cos(r5318794, r5318790, MPFR_RNDN);
        mpfr_sub(r5318795, r5318793, r5318794, MPFR_RNDN);
        return mpfr_get_d(r5318795, MPFR_RNDN);
}

static mpfr_t r5318796, r5318797, r5318798, r5318799, r5318800, r5318801, r5318802, r5318803, r5318804, r5318805, r5318806, r5318807, r5318808, r5318809, r5318810, r5318811, r5318812, r5318813, r5318814, r5318815, r5318816, r5318817, r5318818, r5318819, r5318820, r5318821, r5318822, r5318823, r5318824, r5318825, r5318826;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5318796);
        mpfr_init_set_str(r5318797, "-3.4500988550242373e-23", 10, MPFR_RNDN);
        mpfr_init(r5318798);
        mpfr_init(r5318799);
        mpfr_init(r5318800);
        mpfr_init(r5318801);
        mpfr_init(r5318802);
        mpfr_init(r5318803);
        mpfr_init(r5318804);
        mpfr_init(r5318805);
        mpfr_init(r5318806);
        mpfr_init(r5318807);
        mpfr_init(r5318808);
        mpfr_init(r5318809);
        mpfr_init_set_str(r5318810, "0.4439134345824553", 10, MPFR_RNDN);
        mpfr_init(r5318811);
        mpfr_init_set_str(r5318812, "1/6", 10, MPFR_RNDN);
        mpfr_init(r5318813);
        mpfr_init(r5318814);
        mpfr_init(r5318815);
        mpfr_init_set_str(r5318816, "1/2", 10, MPFR_RNDN);
        mpfr_init(r5318817);
        mpfr_init(r5318818);
        mpfr_init(r5318819);
        mpfr_init(r5318820);
        mpfr_init(r5318821);
        mpfr_init(r5318822);
        mpfr_init(r5318823);
        mpfr_init(r5318824);
        mpfr_init(r5318825);
        mpfr_init(r5318826);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r5318796, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r5318798, mpfr_cmp(r5318796, r5318797) <= 0, MPFR_RNDN);
        mpfr_set_d(r5318799, x, MPFR_RNDN);
        mpfr_cos(r5318800, r5318799, MPFR_RNDN);
        mpfr_cos(r5318801, r5318796, MPFR_RNDN);
        mpfr_mul(r5318802, r5318800, r5318801, MPFR_RNDN);
        mpfr_sin(r5318803, r5318799, MPFR_RNDN);
        mpfr_sin(r5318804, r5318796, MPFR_RNDN);
        mpfr_mul(r5318805, r5318803, r5318804, MPFR_RNDN);
        mpfr_exp(r5318806, r5318805, MPFR_RNDN);
        mpfr_log(r5318807, r5318806, MPFR_RNDN);
        mpfr_add(r5318808, r5318807, r5318800, MPFR_RNDN);
        mpfr_sub(r5318809, r5318802, r5318808, MPFR_RNDN);
        ;
        mpfr_set_si(r5318811, mpfr_cmp(r5318796, r5318810) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r5318813, r5318796, r5318812, MPFR_RNDN);
        mpfr_mul(r5318814, r5318799, r5318799, MPFR_RNDN); mpfr_mul(r5318814, r5318814, r5318799, MPFR_RNDN);
        mpfr_mul(r5318815, r5318813, r5318814, MPFR_RNDN);
        ;
        mpfr_mul(r5318817, r5318796, r5318816, MPFR_RNDN);
        mpfr_add(r5318818, r5318817, r5318799, MPFR_RNDN);
        mpfr_mul(r5318819, r5318796, r5318818, MPFR_RNDN);
        mpfr_sub(r5318820, r5318815, r5318819, MPFR_RNDN);
        mpfr_mul(r5318821, r5318805, r5318805, MPFR_RNDN); mpfr_mul(r5318821, r5318821, r5318805, MPFR_RNDN);
        mpfr_cbrt(r5318822, r5318821, MPFR_RNDN);
        mpfr_add(r5318823, r5318822, r5318800, MPFR_RNDN);
        mpfr_sub(r5318824, r5318802, r5318823, MPFR_RNDN);
        if (mpfr_get_si(r5318811, MPFR_RNDN)) { mpfr_set(r5318825, r5318820, MPFR_RNDN); } else { mpfr_set(r5318825, r5318824, MPFR_RNDN); };
        if (mpfr_get_si(r5318798, MPFR_RNDN)) { mpfr_set(r5318826, r5318809, MPFR_RNDN); } else { mpfr_set(r5318826, r5318825, MPFR_RNDN); };
        return mpfr_get_d(r5318826, MPFR_RNDN);
}

static mpfr_t r5318827, r5318828, r5318829, r5318830, r5318831, r5318832, r5318833, r5318834, r5318835, r5318836, r5318837, r5318838, r5318839, r5318840, r5318841, r5318842, r5318843, r5318844, r5318845, r5318846, r5318847, r5318848, r5318849, r5318850, r5318851, r5318852, r5318853, r5318854, r5318855, r5318856, r5318857;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r5318827);
        mpfr_init_set_str(r5318828, "-3.4500988550242373e-23", 10, MPFR_RNDN);
        mpfr_init(r5318829);
        mpfr_init(r5318830);
        mpfr_init(r5318831);
        mpfr_init(r5318832);
        mpfr_init(r5318833);
        mpfr_init(r5318834);
        mpfr_init(r5318835);
        mpfr_init(r5318836);
        mpfr_init(r5318837);
        mpfr_init(r5318838);
        mpfr_init(r5318839);
        mpfr_init(r5318840);
        mpfr_init_set_str(r5318841, "0.4439134345824553", 10, MPFR_RNDN);
        mpfr_init(r5318842);
        mpfr_init_set_str(r5318843, "1/6", 10, MPFR_RNDN);
        mpfr_init(r5318844);
        mpfr_init(r5318845);
        mpfr_init(r5318846);
        mpfr_init_set_str(r5318847, "1/2", 10, MPFR_RNDN);
        mpfr_init(r5318848);
        mpfr_init(r5318849);
        mpfr_init(r5318850);
        mpfr_init(r5318851);
        mpfr_init(r5318852);
        mpfr_init(r5318853);
        mpfr_init(r5318854);
        mpfr_init(r5318855);
        mpfr_init(r5318856);
        mpfr_init(r5318857);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r5318827, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r5318829, mpfr_cmp(r5318827, r5318828) <= 0, MPFR_RNDN);
        mpfr_set_d(r5318830, x, MPFR_RNDN);
        mpfr_cos(r5318831, r5318830, MPFR_RNDN);
        mpfr_cos(r5318832, r5318827, MPFR_RNDN);
        mpfr_mul(r5318833, r5318831, r5318832, MPFR_RNDN);
        mpfr_sin(r5318834, r5318830, MPFR_RNDN);
        mpfr_sin(r5318835, r5318827, MPFR_RNDN);
        mpfr_mul(r5318836, r5318834, r5318835, MPFR_RNDN);
        mpfr_exp(r5318837, r5318836, MPFR_RNDN);
        mpfr_log(r5318838, r5318837, MPFR_RNDN);
        mpfr_add(r5318839, r5318838, r5318831, MPFR_RNDN);
        mpfr_sub(r5318840, r5318833, r5318839, MPFR_RNDN);
        ;
        mpfr_set_si(r5318842, mpfr_cmp(r5318827, r5318841) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r5318844, r5318827, r5318843, MPFR_RNDN);
        mpfr_mul(r5318845, r5318830, r5318830, MPFR_RNDN); mpfr_mul(r5318845, r5318845, r5318830, MPFR_RNDN);
        mpfr_mul(r5318846, r5318844, r5318845, MPFR_RNDN);
        ;
        mpfr_mul(r5318848, r5318827, r5318847, MPFR_RNDN);
        mpfr_add(r5318849, r5318848, r5318830, MPFR_RNDN);
        mpfr_mul(r5318850, r5318827, r5318849, MPFR_RNDN);
        mpfr_sub(r5318851, r5318846, r5318850, MPFR_RNDN);
        mpfr_mul(r5318852, r5318836, r5318836, MPFR_RNDN); mpfr_mul(r5318852, r5318852, r5318836, MPFR_RNDN);
        mpfr_cbrt(r5318853, r5318852, MPFR_RNDN);
        mpfr_add(r5318854, r5318853, r5318831, MPFR_RNDN);
        mpfr_sub(r5318855, r5318833, r5318854, MPFR_RNDN);
        if (mpfr_get_si(r5318842, MPFR_RNDN)) { mpfr_set(r5318856, r5318851, MPFR_RNDN); } else { mpfr_set(r5318856, r5318855, MPFR_RNDN); };
        if (mpfr_get_si(r5318829, MPFR_RNDN)) { mpfr_set(r5318857, r5318840, MPFR_RNDN); } else { mpfr_set(r5318857, r5318856, MPFR_RNDN); };
        return mpfr_get_d(r5318857, MPFR_RNDN);
}

