#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 r14865 = x;
        float r14866 = eps;
        float r14867 = r14865 + r14866;
        float r14868 = cos(r14867);
        float r14869 = cos(r14865);
        float r14870 = r14868 - r14869;
        return r14870;
}

double f_id(double x, double eps) {
        double r14871 = x;
        double r14872 = eps;
        double r14873 = r14871 + r14872;
        double r14874 = cos(r14873);
        double r14875 = cos(r14871);
        double r14876 = r14874 - r14875;
        return r14876;
}


double f_of(float x, float eps) {
        float r14877 = eps;
        float r14878 = -1.3296779497386022e-08f;
        bool r14879 = r14877 <= r14878;
        float r14880 = cos(r14877);
        float r14881 = x;
        float r14882 = cos(r14881);
        float r14883 = r14880 * r14882;
        float r14884 = r14883 * (r14883 * r14883);
        float r14885 = sin(r14877);
        float r14886 = sin(r14881);
        float r14887 = r14885 * r14886;
        float r14888 = r14887 + r14882;
        float r14889 = r14888 * (r14888 * r14888);
        float r14890 = r14884 - r14889;
        float r14891 = r14883 * r14883;
        float r14892 = r14886 * r14885;
        float r14893 = r14892 + r14882;
        float r14894 = r14883 + r14893;
        float r14895 = r14894 * r14893;
        float r14896 = r14891 + r14895;
        float r14897 = r14890 / r14896;
        float r14898 = 7.134416671297405e-12f;
        bool r14899 = r14877 <= r14898;
        float r14900 = 0.16666666666666666f;
        float r14901 = r14877 * r14900;
        float r14902 = r14881 * (r14881 * r14881);
        float r14903 = r14901 * r14902;
        float r14904 = 0.5f;
        float r14905 = r14904 * r14877;
        float r14906 = r14905 + r14881;
        float r14907 = r14877 * r14906;
        float r14908 = r14903 - r14907;
        float r14909 = r14899 ? r14908 : r14897;
        float r14910 = r14879 ? r14897 : r14909;
        return r14910;
}

double f_od(double x, double eps) {
        double r14911 = eps;
        double r14912 = -1.3296779497386022e-08;
        bool r14913 = r14911 <= r14912;
        double r14914 = cos(r14911);
        double r14915 = x;
        double r14916 = cos(r14915);
        double r14917 = r14914 * r14916;
        double r14918 = r14917 * (r14917 * r14917);
        double r14919 = sin(r14911);
        double r14920 = sin(r14915);
        double r14921 = r14919 * r14920;
        double r14922 = r14921 + r14916;
        double r14923 = r14922 * (r14922 * r14922);
        double r14924 = r14918 - r14923;
        double r14925 = r14917 * r14917;
        double r14926 = r14920 * r14919;
        double r14927 = r14926 + r14916;
        double r14928 = r14917 + r14927;
        double r14929 = r14928 * r14927;
        double r14930 = r14925 + r14929;
        double r14931 = r14924 / r14930;
        double r14932 = 7.134416671297405e-12;
        bool r14933 = r14911 <= r14932;
        double r14934 = 0.16666666666666666;
        double r14935 = r14911 * r14934;
        double r14936 = r14915 * (r14915 * r14915);
        double r14937 = r14935 * r14936;
        double r14938 = 0.5;
        double r14939 = r14938 * r14911;
        double r14940 = r14939 + r14915;
        double r14941 = r14911 * r14940;
        double r14942 = r14937 - r14941;
        double r14943 = r14933 ? r14942 : r14931;
        double r14944 = r14913 ? r14931 : r14943;
        return r14944;
}

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 r14945, r14946, r14947, r14948, r14949, r14950;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r14945);
        mpfr_init(r14946);
        mpfr_init(r14947);
        mpfr_init(r14948);
        mpfr_init(r14949);
        mpfr_init(r14950);
}

double f_im(double x, double eps) {
        mpfr_set_d(r14945, x, MPFR_RNDN);
        mpfr_set_d(r14946, eps, MPFR_RNDN);
        mpfr_add(r14947, r14945, r14946, MPFR_RNDN);
        mpfr_cos(r14948, r14947, MPFR_RNDN);
        mpfr_cos(r14949, r14945, MPFR_RNDN);
        mpfr_sub(r14950, r14948, r14949, MPFR_RNDN);
        return mpfr_get_d(r14950, MPFR_RNDN);
}

static mpfr_t r14951, r14952, r14953, r14954, r14955, r14956, r14957, r14958, r14959, r14960, r14961, r14962, r14963, r14964, r14965, r14966, r14967, r14968, r14969, r14970, r14971, r14972, r14973, r14974, r14975, r14976, r14977, r14978, r14979, r14980, r14981, r14982, r14983, r14984;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14951);
        mpfr_init_set_str(r14952, "-1.3296779497386022e-08", 10, MPFR_RNDN);
        mpfr_init(r14953);
        mpfr_init(r14954);
        mpfr_init(r14955);
        mpfr_init(r14956);
        mpfr_init(r14957);
        mpfr_init(r14958);
        mpfr_init(r14959);
        mpfr_init(r14960);
        mpfr_init(r14961);
        mpfr_init(r14962);
        mpfr_init(r14963);
        mpfr_init(r14964);
        mpfr_init(r14965);
        mpfr_init(r14966);
        mpfr_init(r14967);
        mpfr_init(r14968);
        mpfr_init(r14969);
        mpfr_init(r14970);
        mpfr_init(r14971);
        mpfr_init_set_str(r14972, "7.134416671297405e-12", 10, MPFR_RNDN);
        mpfr_init(r14973);
        mpfr_init_set_str(r14974, "1/6", 10, MPFR_RNDN);
        mpfr_init(r14975);
        mpfr_init(r14976);
        mpfr_init(r14977);
        mpfr_init_set_str(r14978, "1/2", 10, MPFR_RNDN);
        mpfr_init(r14979);
        mpfr_init(r14980);
        mpfr_init(r14981);
        mpfr_init(r14982);
        mpfr_init(r14983);
        mpfr_init(r14984);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r14951, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r14953, mpfr_cmp(r14951, r14952) <= 0, MPFR_RNDN);
        mpfr_cos(r14954, r14951, MPFR_RNDN);
        mpfr_set_d(r14955, x, MPFR_RNDN);
        mpfr_cos(r14956, r14955, MPFR_RNDN);
        mpfr_mul(r14957, r14954, r14956, MPFR_RNDN);
        mpfr_mul(r14958, r14957, r14957, MPFR_RNDN); mpfr_mul(r14958, r14958, r14957, MPFR_RNDN);
        mpfr_sin(r14959, r14951, MPFR_RNDN);
        mpfr_sin(r14960, r14955, MPFR_RNDN);
        mpfr_mul(r14961, r14959, r14960, MPFR_RNDN);
        mpfr_add(r14962, r14961, r14956, MPFR_RNDN);
        mpfr_mul(r14963, r14962, r14962, MPFR_RNDN); mpfr_mul(r14963, r14963, r14962, MPFR_RNDN);
        mpfr_sub(r14964, r14958, r14963, MPFR_RNDN);
        mpfr_sqr(r14965, r14957, MPFR_RNDN);
        mpfr_mul(r14966, r14960, r14959, MPFR_RNDN);
        mpfr_add(r14967, r14966, r14956, MPFR_RNDN);
        mpfr_add(r14968, r14957, r14967, MPFR_RNDN);
        mpfr_mul(r14969, r14968, r14967, MPFR_RNDN);
        mpfr_add(r14970, r14965, r14969, MPFR_RNDN);
        mpfr_div(r14971, r14964, r14970, MPFR_RNDN);
        ;
        mpfr_set_si(r14973, mpfr_cmp(r14951, r14972) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r14975, r14951, r14974, MPFR_RNDN);
        mpfr_mul(r14976, r14955, r14955, MPFR_RNDN); mpfr_mul(r14976, r14976, r14955, MPFR_RNDN);
        mpfr_mul(r14977, r14975, r14976, MPFR_RNDN);
        ;
        mpfr_mul(r14979, r14978, r14951, MPFR_RNDN);
        mpfr_add(r14980, r14979, r14955, MPFR_RNDN);
        mpfr_mul(r14981, r14951, r14980, MPFR_RNDN);
        mpfr_sub(r14982, r14977, r14981, MPFR_RNDN);
        if (mpfr_get_si(r14973, MPFR_RNDN)) { mpfr_set(r14983, r14982, MPFR_RNDN); } else { mpfr_set(r14983, r14971, MPFR_RNDN); };
        if (mpfr_get_si(r14953, MPFR_RNDN)) { mpfr_set(r14984, r14971, MPFR_RNDN); } else { mpfr_set(r14984, r14983, MPFR_RNDN); };
        return mpfr_get_d(r14984, MPFR_RNDN);
}

static mpfr_t r14985, r14986, r14987, r14988, r14989, r14990, r14991, r14992, r14993, r14994, r14995, r14996, r14997, r14998, r14999, r15000, r15001, r15002, r15003, r15004, r15005, r15006, r15007, r15008, r15009, r15010, r15011, r15012, r15013, r15014, r15015, r15016, r15017, r15018;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r14985);
        mpfr_init_set_str(r14986, "-1.3296779497386022e-08", 10, MPFR_RNDN);
        mpfr_init(r14987);
        mpfr_init(r14988);
        mpfr_init(r14989);
        mpfr_init(r14990);
        mpfr_init(r14991);
        mpfr_init(r14992);
        mpfr_init(r14993);
        mpfr_init(r14994);
        mpfr_init(r14995);
        mpfr_init(r14996);
        mpfr_init(r14997);
        mpfr_init(r14998);
        mpfr_init(r14999);
        mpfr_init(r15000);
        mpfr_init(r15001);
        mpfr_init(r15002);
        mpfr_init(r15003);
        mpfr_init(r15004);
        mpfr_init(r15005);
        mpfr_init_set_str(r15006, "7.134416671297405e-12", 10, MPFR_RNDN);
        mpfr_init(r15007);
        mpfr_init_set_str(r15008, "1/6", 10, MPFR_RNDN);
        mpfr_init(r15009);
        mpfr_init(r15010);
        mpfr_init(r15011);
        mpfr_init_set_str(r15012, "1/2", 10, MPFR_RNDN);
        mpfr_init(r15013);
        mpfr_init(r15014);
        mpfr_init(r15015);
        mpfr_init(r15016);
        mpfr_init(r15017);
        mpfr_init(r15018);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r14985, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r14987, mpfr_cmp(r14985, r14986) <= 0, MPFR_RNDN);
        mpfr_cos(r14988, r14985, MPFR_RNDN);
        mpfr_set_d(r14989, x, MPFR_RNDN);
        mpfr_cos(r14990, r14989, MPFR_RNDN);
        mpfr_mul(r14991, r14988, r14990, MPFR_RNDN);
        mpfr_mul(r14992, r14991, r14991, MPFR_RNDN); mpfr_mul(r14992, r14992, r14991, MPFR_RNDN);
        mpfr_sin(r14993, r14985, MPFR_RNDN);
        mpfr_sin(r14994, r14989, MPFR_RNDN);
        mpfr_mul(r14995, r14993, r14994, MPFR_RNDN);
        mpfr_add(r14996, r14995, r14990, MPFR_RNDN);
        mpfr_mul(r14997, r14996, r14996, MPFR_RNDN); mpfr_mul(r14997, r14997, r14996, MPFR_RNDN);
        mpfr_sub(r14998, r14992, r14997, MPFR_RNDN);
        mpfr_sqr(r14999, r14991, MPFR_RNDN);
        mpfr_mul(r15000, r14994, r14993, MPFR_RNDN);
        mpfr_add(r15001, r15000, r14990, MPFR_RNDN);
        mpfr_add(r15002, r14991, r15001, MPFR_RNDN);
        mpfr_mul(r15003, r15002, r15001, MPFR_RNDN);
        mpfr_add(r15004, r14999, r15003, MPFR_RNDN);
        mpfr_div(r15005, r14998, r15004, MPFR_RNDN);
        ;
        mpfr_set_si(r15007, mpfr_cmp(r14985, r15006) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r15009, r14985, r15008, MPFR_RNDN);
        mpfr_mul(r15010, r14989, r14989, MPFR_RNDN); mpfr_mul(r15010, r15010, r14989, MPFR_RNDN);
        mpfr_mul(r15011, r15009, r15010, MPFR_RNDN);
        ;
        mpfr_mul(r15013, r15012, r14985, MPFR_RNDN);
        mpfr_add(r15014, r15013, r14989, MPFR_RNDN);
        mpfr_mul(r15015, r14985, r15014, MPFR_RNDN);
        mpfr_sub(r15016, r15011, r15015, MPFR_RNDN);
        if (mpfr_get_si(r15007, MPFR_RNDN)) { mpfr_set(r15017, r15016, MPFR_RNDN); } else { mpfr_set(r15017, r15005, MPFR_RNDN); };
        if (mpfr_get_si(r14987, MPFR_RNDN)) { mpfr_set(r15018, r15005, MPFR_RNDN); } else { mpfr_set(r15018, r15017, MPFR_RNDN); };
        return mpfr_get_d(r15018, MPFR_RNDN);
}

