#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 r36862 = x;
        float r36863 = eps;
        float r36864 = r36862 + r36863;
        float r36865 = cos(r36864);
        float r36866 = cos(r36862);
        float r36867 = r36865 - r36866;
        return r36867;
}

double f_id(double x, double eps) {
        double r36868 = x;
        double r36869 = eps;
        double r36870 = r36868 + r36869;
        double r36871 = cos(r36870);
        double r36872 = cos(r36868);
        double r36873 = r36871 - r36872;
        return r36873;
}


double f_of(float x, float eps) {
        float r36874 = eps;
        float r36875 = -4.937900603750566e-17;
        bool r36876 = r36874 <= r36875;
        float r36877 = x;
        float r36878 = cos(r36877);
        float r36879 = cos(r36874);
        float r36880 = r36878 * r36879;
        float r36881 = sin(r36877);
        float r36882 = sin(r36874);
        float r36883 = r36881 * r36882;
        float r36884 = r36880 - r36883;
        float r36885 = r36884 - r36878;
        float r36886 = 0.802860764679358;
        bool r36887 = r36874 <= r36886;
        float r36888 = -2;
        float r36889 = 2;
        float r36890 = r36874 / r36889;
        float r36891 = sin(r36890);
        float r36892 = r36877 + r36877;
        float r36893 = r36874 + r36892;
        float r36894 = r36893 / r36889;
        float r36895 = sin(r36894);
        float r36896 = r36891 * r36895;
        float r36897 = r36888 * r36896;
        float r36898 = r36887 ? r36897 : r36885;
        float r36899 = r36876 ? r36885 : r36898;
        return r36899;
}

double f_od(double x, double eps) {
        double r36900 = eps;
        double r36901 = -4.937900603750566e-17;
        bool r36902 = r36900 <= r36901;
        double r36903 = x;
        double r36904 = cos(r36903);
        double r36905 = cos(r36900);
        double r36906 = r36904 * r36905;
        double r36907 = sin(r36903);
        double r36908 = sin(r36900);
        double r36909 = r36907 * r36908;
        double r36910 = r36906 - r36909;
        double r36911 = r36910 - r36904;
        double r36912 = 0.802860764679358;
        bool r36913 = r36900 <= r36912;
        double r36914 = -2;
        double r36915 = 2;
        double r36916 = r36900 / r36915;
        double r36917 = sin(r36916);
        double r36918 = r36903 + r36903;
        double r36919 = r36900 + r36918;
        double r36920 = r36919 / r36915;
        double r36921 = sin(r36920);
        double r36922 = r36917 * r36921;
        double r36923 = r36914 * r36922;
        double r36924 = r36913 ? r36923 : r36911;
        double r36925 = r36902 ? r36911 : r36924;
        return r36925;
}

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 r36926, r36927, r36928, r36929, r36930, r36931;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r36926);
        mpfr_init(r36927);
        mpfr_init(r36928);
        mpfr_init(r36929);
        mpfr_init(r36930);
        mpfr_init(r36931);
}

double f_im(double x, double eps) {
        mpfr_set_d(r36926, x, MPFR_RNDN);
        mpfr_set_d(r36927, eps, MPFR_RNDN);
        mpfr_add(r36928, r36926, r36927, MPFR_RNDN);
        mpfr_cos(r36929, r36928, MPFR_RNDN);
        mpfr_cos(r36930, r36926, MPFR_RNDN);
        mpfr_sub(r36931, r36929, r36930, MPFR_RNDN);
        return mpfr_get_d(r36931, MPFR_RNDN);
}

static mpfr_t r36932, r36933, r36934, r36935, r36936, r36937, r36938, r36939, r36940, r36941, r36942, r36943, r36944, r36945, r36946, r36947, r36948, r36949, r36950, r36951, r36952, r36953, r36954, r36955, r36956, r36957;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r36932);
        mpfr_init_set_str(r36933, "-4.937900603750566e-17", 10, MPFR_RNDN);
        mpfr_init(r36934);
        mpfr_init(r36935);
        mpfr_init(r36936);
        mpfr_init(r36937);
        mpfr_init(r36938);
        mpfr_init(r36939);
        mpfr_init(r36940);
        mpfr_init(r36941);
        mpfr_init(r36942);
        mpfr_init(r36943);
        mpfr_init_set_str(r36944, "0.802860764679358", 10, MPFR_RNDN);
        mpfr_init(r36945);
        mpfr_init_set_str(r36946, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r36947, "2", 10, MPFR_RNDN);
        mpfr_init(r36948);
        mpfr_init(r36949);
        mpfr_init(r36950);
        mpfr_init(r36951);
        mpfr_init(r36952);
        mpfr_init(r36953);
        mpfr_init(r36954);
        mpfr_init(r36955);
        mpfr_init(r36956);
        mpfr_init(r36957);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r36932, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r36934, mpfr_cmp(r36932, r36933) <= 0, MPFR_RNDN);
        mpfr_set_d(r36935, x, MPFR_RNDN);
        mpfr_cos(r36936, r36935, MPFR_RNDN);
        mpfr_cos(r36937, r36932, MPFR_RNDN);
        mpfr_mul(r36938, r36936, r36937, MPFR_RNDN);
        mpfr_sin(r36939, r36935, MPFR_RNDN);
        mpfr_sin(r36940, r36932, MPFR_RNDN);
        mpfr_mul(r36941, r36939, r36940, MPFR_RNDN);
        mpfr_sub(r36942, r36938, r36941, MPFR_RNDN);
        mpfr_sub(r36943, r36942, r36936, MPFR_RNDN);
        ;
        mpfr_set_si(r36945, mpfr_cmp(r36932, r36944) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r36948, r36932, r36947, MPFR_RNDN);
        mpfr_sin(r36949, r36948, MPFR_RNDN);
        mpfr_add(r36950, r36935, r36935, MPFR_RNDN);
        mpfr_add(r36951, r36932, r36950, MPFR_RNDN);
        mpfr_div(r36952, r36951, r36947, MPFR_RNDN);
        mpfr_sin(r36953, r36952, MPFR_RNDN);
        mpfr_mul(r36954, r36949, r36953, MPFR_RNDN);
        mpfr_mul(r36955, r36946, r36954, MPFR_RNDN);
        if (mpfr_get_si(r36945, MPFR_RNDN)) { mpfr_set(r36956, r36955, MPFR_RNDN); } else { mpfr_set(r36956, r36943, MPFR_RNDN); };
        if (mpfr_get_si(r36934, MPFR_RNDN)) { mpfr_set(r36957, r36943, MPFR_RNDN); } else { mpfr_set(r36957, r36956, MPFR_RNDN); };
        return mpfr_get_d(r36957, MPFR_RNDN);
}

static mpfr_t r36958, r36959, r36960, r36961, r36962, r36963, r36964, r36965, r36966, r36967, r36968, r36969, r36970, r36971, r36972, r36973, r36974, r36975, r36976, r36977, r36978, r36979, r36980, r36981, r36982, r36983;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r36958);
        mpfr_init_set_str(r36959, "-4.937900603750566e-17", 10, MPFR_RNDN);
        mpfr_init(r36960);
        mpfr_init(r36961);
        mpfr_init(r36962);
        mpfr_init(r36963);
        mpfr_init(r36964);
        mpfr_init(r36965);
        mpfr_init(r36966);
        mpfr_init(r36967);
        mpfr_init(r36968);
        mpfr_init(r36969);
        mpfr_init_set_str(r36970, "0.802860764679358", 10, MPFR_RNDN);
        mpfr_init(r36971);
        mpfr_init_set_str(r36972, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r36973, "2", 10, MPFR_RNDN);
        mpfr_init(r36974);
        mpfr_init(r36975);
        mpfr_init(r36976);
        mpfr_init(r36977);
        mpfr_init(r36978);
        mpfr_init(r36979);
        mpfr_init(r36980);
        mpfr_init(r36981);
        mpfr_init(r36982);
        mpfr_init(r36983);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r36958, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r36960, mpfr_cmp(r36958, r36959) <= 0, MPFR_RNDN);
        mpfr_set_d(r36961, x, MPFR_RNDN);
        mpfr_cos(r36962, r36961, MPFR_RNDN);
        mpfr_cos(r36963, r36958, MPFR_RNDN);
        mpfr_mul(r36964, r36962, r36963, MPFR_RNDN);
        mpfr_sin(r36965, r36961, MPFR_RNDN);
        mpfr_sin(r36966, r36958, MPFR_RNDN);
        mpfr_mul(r36967, r36965, r36966, MPFR_RNDN);
        mpfr_sub(r36968, r36964, r36967, MPFR_RNDN);
        mpfr_sub(r36969, r36968, r36962, MPFR_RNDN);
        ;
        mpfr_set_si(r36971, mpfr_cmp(r36958, r36970) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r36974, r36958, r36973, MPFR_RNDN);
        mpfr_sin(r36975, r36974, MPFR_RNDN);
        mpfr_add(r36976, r36961, r36961, MPFR_RNDN);
        mpfr_add(r36977, r36958, r36976, MPFR_RNDN);
        mpfr_div(r36978, r36977, r36973, MPFR_RNDN);
        mpfr_sin(r36979, r36978, MPFR_RNDN);
        mpfr_mul(r36980, r36975, r36979, MPFR_RNDN);
        mpfr_mul(r36981, r36972, r36980, MPFR_RNDN);
        if (mpfr_get_si(r36971, MPFR_RNDN)) { mpfr_set(r36982, r36981, MPFR_RNDN); } else { mpfr_set(r36982, r36969, MPFR_RNDN); };
        if (mpfr_get_si(r36960, MPFR_RNDN)) { mpfr_set(r36983, r36969, MPFR_RNDN); } else { mpfr_set(r36983, r36982, MPFR_RNDN); };
        return mpfr_get_d(r36983, MPFR_RNDN);
}

