#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 r36985 = x;
        float r36986 = eps;
        float r36987 = r36985 + r36986;
        float r36988 = cos(r36987);
        float r36989 = cos(r36985);
        float r36990 = r36988 - r36989;
        return r36990;
}

double f_id(double x, double eps) {
        double r36991 = x;
        double r36992 = eps;
        double r36993 = r36991 + r36992;
        double r36994 = cos(r36993);
        double r36995 = cos(r36991);
        double r36996 = r36994 - r36995;
        return r36996;
}


double f_of(float x, float eps) {
        float r36997 = eps;
        float r36998 = -0.00013580674868090203;
        bool r36999 = r36997 <= r36998;
        float r37000 = x;
        float r37001 = cos(r37000);
        float r37002 = cos(r36997);
        float r37003 = r37001 * r37002;
        float r37004 = sin(r37000);
        float r37005 = sin(r36997);
        float r37006 = r37004 * r37005;
        float r37007 = r37003 - r37006;
        float r37008 = r37007 - r37001;
        float r37009 = 0.00039206272042066707;
        bool r37010 = r36997 <= r37009;
        float r37011 = -2;
        float r37012 = 2;
        float r37013 = r36997 / r37012;
        float r37014 = sin(r37013);
        float r37015 = r37000 + r37000;
        float r37016 = r36997 + r37015;
        float r37017 = r37016 / r37012;
        float r37018 = sin(r37017);
        float r37019 = r37014 * r37018;
        float r37020 = r37011 * r37019;
        float r37021 = r37010 ? r37020 : r37008;
        float r37022 = r36999 ? r37008 : r37021;
        return r37022;
}

double f_od(double x, double eps) {
        double r37023 = eps;
        double r37024 = -0.00013580674868090203;
        bool r37025 = r37023 <= r37024;
        double r37026 = x;
        double r37027 = cos(r37026);
        double r37028 = cos(r37023);
        double r37029 = r37027 * r37028;
        double r37030 = sin(r37026);
        double r37031 = sin(r37023);
        double r37032 = r37030 * r37031;
        double r37033 = r37029 - r37032;
        double r37034 = r37033 - r37027;
        double r37035 = 0.00039206272042066707;
        bool r37036 = r37023 <= r37035;
        double r37037 = -2;
        double r37038 = 2;
        double r37039 = r37023 / r37038;
        double r37040 = sin(r37039);
        double r37041 = r37026 + r37026;
        double r37042 = r37023 + r37041;
        double r37043 = r37042 / r37038;
        double r37044 = sin(r37043);
        double r37045 = r37040 * r37044;
        double r37046 = r37037 * r37045;
        double r37047 = r37036 ? r37046 : r37034;
        double r37048 = r37025 ? r37034 : r37047;
        return r37048;
}

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 r37049, r37050, r37051, r37052, r37053, r37054;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r37049);
        mpfr_init(r37050);
        mpfr_init(r37051);
        mpfr_init(r37052);
        mpfr_init(r37053);
        mpfr_init(r37054);
}

double f_im(double x, double eps) {
        mpfr_set_d(r37049, x, MPFR_RNDN);
        mpfr_set_d(r37050, eps, MPFR_RNDN);
        mpfr_add(r37051, r37049, r37050, MPFR_RNDN);
        mpfr_cos(r37052, r37051, MPFR_RNDN);
        mpfr_cos(r37053, r37049, MPFR_RNDN);
        mpfr_sub(r37054, r37052, r37053, MPFR_RNDN);
        return mpfr_get_d(r37054, MPFR_RNDN);
}

static mpfr_t r37055, r37056, r37057, r37058, r37059, r37060, r37061, r37062, r37063, r37064, r37065, r37066, r37067, r37068, r37069, r37070, r37071, r37072, r37073, r37074, r37075, r37076, r37077, r37078, r37079, r37080;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r37055);
        mpfr_init_set_str(r37056, "-0.00013580674868090203", 10, MPFR_RNDN);
        mpfr_init(r37057);
        mpfr_init(r37058);
        mpfr_init(r37059);
        mpfr_init(r37060);
        mpfr_init(r37061);
        mpfr_init(r37062);
        mpfr_init(r37063);
        mpfr_init(r37064);
        mpfr_init(r37065);
        mpfr_init(r37066);
        mpfr_init_set_str(r37067, "0.00039206272042066707", 10, MPFR_RNDN);
        mpfr_init(r37068);
        mpfr_init_set_str(r37069, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r37070, "2", 10, MPFR_RNDN);
        mpfr_init(r37071);
        mpfr_init(r37072);
        mpfr_init(r37073);
        mpfr_init(r37074);
        mpfr_init(r37075);
        mpfr_init(r37076);
        mpfr_init(r37077);
        mpfr_init(r37078);
        mpfr_init(r37079);
        mpfr_init(r37080);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r37055, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r37057, mpfr_cmp(r37055, r37056) <= 0, MPFR_RNDN);
        mpfr_set_d(r37058, x, MPFR_RNDN);
        mpfr_cos(r37059, r37058, MPFR_RNDN);
        mpfr_cos(r37060, r37055, MPFR_RNDN);
        mpfr_mul(r37061, r37059, r37060, MPFR_RNDN);
        mpfr_sin(r37062, r37058, MPFR_RNDN);
        mpfr_sin(r37063, r37055, MPFR_RNDN);
        mpfr_mul(r37064, r37062, r37063, MPFR_RNDN);
        mpfr_sub(r37065, r37061, r37064, MPFR_RNDN);
        mpfr_sub(r37066, r37065, r37059, MPFR_RNDN);
        ;
        mpfr_set_si(r37068, mpfr_cmp(r37055, r37067) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r37071, r37055, r37070, MPFR_RNDN);
        mpfr_sin(r37072, r37071, MPFR_RNDN);
        mpfr_add(r37073, r37058, r37058, MPFR_RNDN);
        mpfr_add(r37074, r37055, r37073, MPFR_RNDN);
        mpfr_div(r37075, r37074, r37070, MPFR_RNDN);
        mpfr_sin(r37076, r37075, MPFR_RNDN);
        mpfr_mul(r37077, r37072, r37076, MPFR_RNDN);
        mpfr_mul(r37078, r37069, r37077, MPFR_RNDN);
        if (mpfr_get_si(r37068, MPFR_RNDN)) { mpfr_set(r37079, r37078, MPFR_RNDN); } else { mpfr_set(r37079, r37066, MPFR_RNDN); };
        if (mpfr_get_si(r37057, MPFR_RNDN)) { mpfr_set(r37080, r37066, MPFR_RNDN); } else { mpfr_set(r37080, r37079, MPFR_RNDN); };
        return mpfr_get_d(r37080, MPFR_RNDN);
}

static mpfr_t r37081, r37082, r37083, r37084, r37085, r37086, r37087, r37088, r37089, r37090, r37091, r37092, r37093, r37094, r37095, r37096, r37097, r37098, r37099, r37100, r37101, r37102, r37103, r37104, r37105, r37106;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r37081);
        mpfr_init_set_str(r37082, "-0.00013580674868090203", 10, MPFR_RNDN);
        mpfr_init(r37083);
        mpfr_init(r37084);
        mpfr_init(r37085);
        mpfr_init(r37086);
        mpfr_init(r37087);
        mpfr_init(r37088);
        mpfr_init(r37089);
        mpfr_init(r37090);
        mpfr_init(r37091);
        mpfr_init(r37092);
        mpfr_init_set_str(r37093, "0.00039206272042066707", 10, MPFR_RNDN);
        mpfr_init(r37094);
        mpfr_init_set_str(r37095, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r37096, "2", 10, MPFR_RNDN);
        mpfr_init(r37097);
        mpfr_init(r37098);
        mpfr_init(r37099);
        mpfr_init(r37100);
        mpfr_init(r37101);
        mpfr_init(r37102);
        mpfr_init(r37103);
        mpfr_init(r37104);
        mpfr_init(r37105);
        mpfr_init(r37106);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r37081, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r37083, mpfr_cmp(r37081, r37082) <= 0, MPFR_RNDN);
        mpfr_set_d(r37084, x, MPFR_RNDN);
        mpfr_cos(r37085, r37084, MPFR_RNDN);
        mpfr_cos(r37086, r37081, MPFR_RNDN);
        mpfr_mul(r37087, r37085, r37086, MPFR_RNDN);
        mpfr_sin(r37088, r37084, MPFR_RNDN);
        mpfr_sin(r37089, r37081, MPFR_RNDN);
        mpfr_mul(r37090, r37088, r37089, MPFR_RNDN);
        mpfr_sub(r37091, r37087, r37090, MPFR_RNDN);
        mpfr_sub(r37092, r37091, r37085, MPFR_RNDN);
        ;
        mpfr_set_si(r37094, mpfr_cmp(r37081, r37093) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r37097, r37081, r37096, MPFR_RNDN);
        mpfr_sin(r37098, r37097, MPFR_RNDN);
        mpfr_add(r37099, r37084, r37084, MPFR_RNDN);
        mpfr_add(r37100, r37081, r37099, MPFR_RNDN);
        mpfr_div(r37101, r37100, r37096, MPFR_RNDN);
        mpfr_sin(r37102, r37101, MPFR_RNDN);
        mpfr_mul(r37103, r37098, r37102, MPFR_RNDN);
        mpfr_mul(r37104, r37095, r37103, MPFR_RNDN);
        if (mpfr_get_si(r37094, MPFR_RNDN)) { mpfr_set(r37105, r37104, MPFR_RNDN); } else { mpfr_set(r37105, r37092, MPFR_RNDN); };
        if (mpfr_get_si(r37083, MPFR_RNDN)) { mpfr_set(r37106, r37092, MPFR_RNDN); } else { mpfr_set(r37106, r37105, MPFR_RNDN); };
        return mpfr_get_d(r37106, MPFR_RNDN);
}

