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

char *name = "2cos (problem 3.3.5)";

double f_if(float x, float eps) {
        float r4939881 = x;
        float r4939882 = eps;
        float r4939883 = r4939881 + r4939882;
        float r4939884 = cos(r4939883);
        float r4939885 = cos(r4939881);
        float r4939886 = r4939884 - r4939885;
        return r4939886;
}

double f_id(double x, double eps) {
        double r4939887 = x;
        double r4939888 = eps;
        double r4939889 = r4939887 + r4939888;
        double r4939890 = cos(r4939889);
        double r4939891 = cos(r4939887);
        double r4939892 = r4939890 - r4939891;
        return r4939892;
}


double f_of(float x, float eps) {
        float r4939893 = eps;
        float r4939894 = -4.695602164921309e-06f;
        bool r4939895 = r4939893 <= r4939894;
        float r4939896 = x;
        float r4939897 = cos(r4939896);
        float r4939898 = cos(r4939893);
        float r4939899 = r4939897 * r4939898;
        float r4939900 = sin(r4939896);
        float r4939901 = sin(r4939893);
        float r4939902 = r4939900 * r4939901;
        float r4939903 = r4939899 - r4939902;
        float r4939904 = r4939903 - r4939897;
        float r4939905 = 5.330769335723254e-08f;
        bool r4939906 = r4939893 <= r4939905;
        float r4939907 = -2.0f;
        float r4939908 = 2.0f;
        float r4939909 = r4939893 / r4939908;
        float r4939910 = sin(r4939909);
        float r4939911 = r4939896 + r4939893;
        float r4939912 = r4939911 + r4939896;
        float r4939913 = r4939912 / r4939908;
        float r4939914 = sin(r4939913);
        float r4939915 = r4939910 * r4939914;
        float r4939916 = r4939907 * r4939915;
        float r4939917 = r4939902 + r4939897;
        float r4939918 = r4939899 - r4939917;
        float r4939919 = r4939906 ? r4939916 : r4939918;
        float r4939920 = r4939895 ? r4939904 : r4939919;
        return r4939920;
}

double f_od(double x, double eps) {
        double r4939921 = eps;
        double r4939922 = -4.695602164921309e-06;
        bool r4939923 = r4939921 <= r4939922;
        double r4939924 = x;
        double r4939925 = cos(r4939924);
        double r4939926 = cos(r4939921);
        double r4939927 = r4939925 * r4939926;
        double r4939928 = sin(r4939924);
        double r4939929 = sin(r4939921);
        double r4939930 = r4939928 * r4939929;
        double r4939931 = r4939927 - r4939930;
        double r4939932 = r4939931 - r4939925;
        double r4939933 = 5.330769335723254e-08;
        bool r4939934 = r4939921 <= r4939933;
        double r4939935 = -2.0;
        double r4939936 = 2.0;
        double r4939937 = r4939921 / r4939936;
        double r4939938 = sin(r4939937);
        double r4939939 = r4939924 + r4939921;
        double r4939940 = r4939939 + r4939924;
        double r4939941 = r4939940 / r4939936;
        double r4939942 = sin(r4939941);
        double r4939943 = r4939938 * r4939942;
        double r4939944 = r4939935 * r4939943;
        double r4939945 = r4939930 + r4939925;
        double r4939946 = r4939927 - r4939945;
        double r4939947 = r4939934 ? r4939944 : r4939946;
        double r4939948 = r4939923 ? r4939932 : r4939947;
        return r4939948;
}

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 r4939949, r4939950, r4939951, r4939952, r4939953, r4939954;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2192);
        mpfr_init(r4939949);
        mpfr_init(r4939950);
        mpfr_init(r4939951);
        mpfr_init(r4939952);
        mpfr_init(r4939953);
        mpfr_init(r4939954);
}

double f_im(double x, double eps) {
        mpfr_set_d(r4939949, x, MPFR_RNDN);
        mpfr_set_d(r4939950, eps, MPFR_RNDN);
        mpfr_add(r4939951, r4939949, r4939950, MPFR_RNDN);
        mpfr_cos(r4939952, r4939951, MPFR_RNDN);
        mpfr_cos(r4939953, r4939949, MPFR_RNDN);
        mpfr_sub(r4939954, r4939952, r4939953, MPFR_RNDN);
        return mpfr_get_d(r4939954, MPFR_RNDN);
}

static mpfr_t r4939955, r4939956, r4939957, r4939958, r4939959, r4939960, r4939961, r4939962, r4939963, r4939964, r4939965, r4939966, r4939967, r4939968, r4939969, r4939970, r4939971, r4939972, r4939973, r4939974, r4939975, r4939976, r4939977, r4939978, r4939979, r4939980, r4939981, r4939982;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2192);
        mpfr_init(r4939955);
        mpfr_init_set_str(r4939956, "-4.695602164921309e-06", 10, MPFR_RNDN);
        mpfr_init(r4939957);
        mpfr_init(r4939958);
        mpfr_init(r4939959);
        mpfr_init(r4939960);
        mpfr_init(r4939961);
        mpfr_init(r4939962);
        mpfr_init(r4939963);
        mpfr_init(r4939964);
        mpfr_init(r4939965);
        mpfr_init(r4939966);
        mpfr_init_set_str(r4939967, "5.330769335723254e-08", 10, MPFR_RNDN);
        mpfr_init(r4939968);
        mpfr_init_set_str(r4939969, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r4939970, "2", 10, MPFR_RNDN);
        mpfr_init(r4939971);
        mpfr_init(r4939972);
        mpfr_init(r4939973);
        mpfr_init(r4939974);
        mpfr_init(r4939975);
        mpfr_init(r4939976);
        mpfr_init(r4939977);
        mpfr_init(r4939978);
        mpfr_init(r4939979);
        mpfr_init(r4939980);
        mpfr_init(r4939981);
        mpfr_init(r4939982);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r4939955, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r4939957, mpfr_cmp(r4939955, r4939956) <= 0, MPFR_RNDN);
        mpfr_set_d(r4939958, x, MPFR_RNDN);
        mpfr_cos(r4939959, r4939958, MPFR_RNDN);
        mpfr_cos(r4939960, r4939955, MPFR_RNDN);
        mpfr_mul(r4939961, r4939959, r4939960, MPFR_RNDN);
        mpfr_sin(r4939962, r4939958, MPFR_RNDN);
        mpfr_sin(r4939963, r4939955, MPFR_RNDN);
        mpfr_mul(r4939964, r4939962, r4939963, MPFR_RNDN);
        mpfr_sub(r4939965, r4939961, r4939964, MPFR_RNDN);
        mpfr_sub(r4939966, r4939965, r4939959, MPFR_RNDN);
        ;
        mpfr_set_si(r4939968, mpfr_cmp(r4939955, r4939967) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r4939971, r4939955, r4939970, MPFR_RNDN);
        mpfr_sin(r4939972, r4939971, MPFR_RNDN);
        mpfr_add(r4939973, r4939958, r4939955, MPFR_RNDN);
        mpfr_add(r4939974, r4939973, r4939958, MPFR_RNDN);
        mpfr_div(r4939975, r4939974, r4939970, MPFR_RNDN);
        mpfr_sin(r4939976, r4939975, MPFR_RNDN);
        mpfr_mul(r4939977, r4939972, r4939976, MPFR_RNDN);
        mpfr_mul(r4939978, r4939969, r4939977, MPFR_RNDN);
        mpfr_add(r4939979, r4939964, r4939959, MPFR_RNDN);
        mpfr_sub(r4939980, r4939961, r4939979, MPFR_RNDN);
        if (mpfr_get_si(r4939968, MPFR_RNDN)) { mpfr_set(r4939981, r4939978, MPFR_RNDN); } else { mpfr_set(r4939981, r4939980, MPFR_RNDN); };
        if (mpfr_get_si(r4939957, MPFR_RNDN)) { mpfr_set(r4939982, r4939966, MPFR_RNDN); } else { mpfr_set(r4939982, r4939981, MPFR_RNDN); };
        return mpfr_get_d(r4939982, MPFR_RNDN);
}

static mpfr_t r4939983, r4939984, r4939985, r4939986, r4939987, r4939988, r4939989, r4939990, r4939991, r4939992, r4939993, r4939994, r4939995, r4939996, r4939997, r4939998, r4939999, r4940000, r4940001, r4940002, r4940003, r4940004, r4940005, r4940006, r4940007, r4940008, r4940009, r4940010;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2192);
        mpfr_init(r4939983);
        mpfr_init_set_str(r4939984, "-4.695602164921309e-06", 10, MPFR_RNDN);
        mpfr_init(r4939985);
        mpfr_init(r4939986);
        mpfr_init(r4939987);
        mpfr_init(r4939988);
        mpfr_init(r4939989);
        mpfr_init(r4939990);
        mpfr_init(r4939991);
        mpfr_init(r4939992);
        mpfr_init(r4939993);
        mpfr_init(r4939994);
        mpfr_init_set_str(r4939995, "5.330769335723254e-08", 10, MPFR_RNDN);
        mpfr_init(r4939996);
        mpfr_init_set_str(r4939997, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r4939998, "2", 10, MPFR_RNDN);
        mpfr_init(r4939999);
        mpfr_init(r4940000);
        mpfr_init(r4940001);
        mpfr_init(r4940002);
        mpfr_init(r4940003);
        mpfr_init(r4940004);
        mpfr_init(r4940005);
        mpfr_init(r4940006);
        mpfr_init(r4940007);
        mpfr_init(r4940008);
        mpfr_init(r4940009);
        mpfr_init(r4940010);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r4939983, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r4939985, mpfr_cmp(r4939983, r4939984) <= 0, MPFR_RNDN);
        mpfr_set_d(r4939986, x, MPFR_RNDN);
        mpfr_cos(r4939987, r4939986, MPFR_RNDN);
        mpfr_cos(r4939988, r4939983, MPFR_RNDN);
        mpfr_mul(r4939989, r4939987, r4939988, MPFR_RNDN);
        mpfr_sin(r4939990, r4939986, MPFR_RNDN);
        mpfr_sin(r4939991, r4939983, MPFR_RNDN);
        mpfr_mul(r4939992, r4939990, r4939991, MPFR_RNDN);
        mpfr_sub(r4939993, r4939989, r4939992, MPFR_RNDN);
        mpfr_sub(r4939994, r4939993, r4939987, MPFR_RNDN);
        ;
        mpfr_set_si(r4939996, mpfr_cmp(r4939983, r4939995) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r4939999, r4939983, r4939998, MPFR_RNDN);
        mpfr_sin(r4940000, r4939999, MPFR_RNDN);
        mpfr_add(r4940001, r4939986, r4939983, MPFR_RNDN);
        mpfr_add(r4940002, r4940001, r4939986, MPFR_RNDN);
        mpfr_div(r4940003, r4940002, r4939998, MPFR_RNDN);
        mpfr_sin(r4940004, r4940003, MPFR_RNDN);
        mpfr_mul(r4940005, r4940000, r4940004, MPFR_RNDN);
        mpfr_mul(r4940006, r4939997, r4940005, MPFR_RNDN);
        mpfr_add(r4940007, r4939992, r4939987, MPFR_RNDN);
        mpfr_sub(r4940008, r4939989, r4940007, MPFR_RNDN);
        if (mpfr_get_si(r4939996, MPFR_RNDN)) { mpfr_set(r4940009, r4940006, MPFR_RNDN); } else { mpfr_set(r4940009, r4940008, MPFR_RNDN); };
        if (mpfr_get_si(r4939985, MPFR_RNDN)) { mpfr_set(r4940010, r4939994, MPFR_RNDN); } else { mpfr_set(r4940010, r4940009, MPFR_RNDN); };
        return mpfr_get_d(r4940010, MPFR_RNDN);
}

