#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 r25788 = x;
        float r25789 = eps;
        float r25790 = r25788 + r25789;
        float r25791 = cos(r25790);
        float r25792 = cos(r25788);
        float r25793 = r25791 - r25792;
        return r25793;
}

double f_id(double x, double eps) {
        double r25794 = x;
        double r25795 = eps;
        double r25796 = r25794 + r25795;
        double r25797 = cos(r25796);
        double r25798 = cos(r25794);
        double r25799 = r25797 - r25798;
        return r25799;
}


double f_of(float x, float eps) {
        float r25800 = x;
        float r25801 = cos(r25800);
        float r25802 = eps;
        float r25803 = cos(r25802);
        float r25804 = r25801 * r25803;
        float r25805 = sin(r25800);
        float r25806 = sin(r25802);
        float r25807 = r25805 * r25806;
        float r25808 = r25804 - r25807;
        float r25809 = r25808 - r25801;
        float r25810 = -0.014474905413385253;
        bool r25811 = r25809 <= r25810;
        float r25812 = r25807 + r25801;
        float r25813 = r25804 - r25812;
        float r25814 = 0.0020659726639423873;
        bool r25815 = r25809 <= r25814;
        float r25816 = -2;
        float r25817 = 2;
        float r25818 = r25802 / r25817;
        float r25819 = sin(r25818);
        float r25820 = r25802 + r25800;
        float r25821 = r25800 + r25820;
        float r25822 = r25821 / r25817;
        float r25823 = sin(r25822);
        float r25824 = r25819 * r25823;
        float r25825 = r25816 * r25824;
        float r25826 = r25815 ? r25825 : r25813;
        float r25827 = r25811 ? r25813 : r25826;
        return r25827;
}

double f_od(double x, double eps) {
        double r25828 = x;
        double r25829 = cos(r25828);
        double r25830 = eps;
        double r25831 = cos(r25830);
        double r25832 = r25829 * r25831;
        double r25833 = sin(r25828);
        double r25834 = sin(r25830);
        double r25835 = r25833 * r25834;
        double r25836 = r25832 - r25835;
        double r25837 = r25836 - r25829;
        double r25838 = -0.014474905413385253;
        bool r25839 = r25837 <= r25838;
        double r25840 = r25835 + r25829;
        double r25841 = r25832 - r25840;
        double r25842 = 0.0020659726639423873;
        bool r25843 = r25837 <= r25842;
        double r25844 = -2;
        double r25845 = 2;
        double r25846 = r25830 / r25845;
        double r25847 = sin(r25846);
        double r25848 = r25830 + r25828;
        double r25849 = r25828 + r25848;
        double r25850 = r25849 / r25845;
        double r25851 = sin(r25850);
        double r25852 = r25847 * r25851;
        double r25853 = r25844 * r25852;
        double r25854 = r25843 ? r25853 : r25841;
        double r25855 = r25839 ? r25841 : r25854;
        return r25855;
}

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 r25856, r25857, r25858, r25859, r25860, r25861;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r25856);
        mpfr_init(r25857);
        mpfr_init(r25858);
        mpfr_init(r25859);
        mpfr_init(r25860);
        mpfr_init(r25861);
}

double f_im(double x, double eps) {
        mpfr_set_d(r25856, x, MPFR_RNDN);
        mpfr_set_d(r25857, eps, MPFR_RNDN);
        mpfr_add(r25858, r25856, r25857, MPFR_RNDN);
        mpfr_cos(r25859, r25858, MPFR_RNDN);
        mpfr_cos(r25860, r25856, MPFR_RNDN);
        mpfr_sub(r25861, r25859, r25860, MPFR_RNDN);
        return mpfr_get_d(r25861, MPFR_RNDN);
}

static mpfr_t r25862, r25863, r25864, r25865, r25866, r25867, r25868, r25869, r25870, r25871, r25872, r25873, r25874, r25875, r25876, r25877, r25878, r25879, r25880, r25881, r25882, r25883, r25884, r25885, r25886, r25887, r25888, r25889;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r25862);
        mpfr_init(r25863);
        mpfr_init(r25864);
        mpfr_init(r25865);
        mpfr_init(r25866);
        mpfr_init(r25867);
        mpfr_init(r25868);
        mpfr_init(r25869);
        mpfr_init(r25870);
        mpfr_init(r25871);
        mpfr_init_set_str(r25872, "-0.014474905413385253", 10, MPFR_RNDN);
        mpfr_init(r25873);
        mpfr_init(r25874);
        mpfr_init(r25875);
        mpfr_init_set_str(r25876, "0.0020659726639423873", 10, MPFR_RNDN);
        mpfr_init(r25877);
        mpfr_init_set_str(r25878, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r25879, "2", 10, MPFR_RNDN);
        mpfr_init(r25880);
        mpfr_init(r25881);
        mpfr_init(r25882);
        mpfr_init(r25883);
        mpfr_init(r25884);
        mpfr_init(r25885);
        mpfr_init(r25886);
        mpfr_init(r25887);
        mpfr_init(r25888);
        mpfr_init(r25889);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r25862, x, MPFR_RNDN);
        mpfr_cos(r25863, r25862, MPFR_RNDN);
        mpfr_set_d(r25864, eps, MPFR_RNDN);
        mpfr_cos(r25865, r25864, MPFR_RNDN);
        mpfr_mul(r25866, r25863, r25865, MPFR_RNDN);
        mpfr_sin(r25867, r25862, MPFR_RNDN);
        mpfr_sin(r25868, r25864, MPFR_RNDN);
        mpfr_mul(r25869, r25867, r25868, MPFR_RNDN);
        mpfr_sub(r25870, r25866, r25869, MPFR_RNDN);
        mpfr_sub(r25871, r25870, r25863, MPFR_RNDN);
        ;
        mpfr_set_si(r25873, mpfr_cmp(r25871, r25872) <= 0, MPFR_RNDN);
        mpfr_add(r25874, r25869, r25863, MPFR_RNDN);
        mpfr_sub(r25875, r25866, r25874, MPFR_RNDN);
        ;
        mpfr_set_si(r25877, mpfr_cmp(r25871, r25876) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r25880, r25864, r25879, MPFR_RNDN);
        mpfr_sin(r25881, r25880, MPFR_RNDN);
        mpfr_add(r25882, r25864, r25862, MPFR_RNDN);
        mpfr_add(r25883, r25862, r25882, MPFR_RNDN);
        mpfr_div(r25884, r25883, r25879, MPFR_RNDN);
        mpfr_sin(r25885, r25884, MPFR_RNDN);
        mpfr_mul(r25886, r25881, r25885, MPFR_RNDN);
        mpfr_mul(r25887, r25878, r25886, MPFR_RNDN);
        if (mpfr_get_si(r25877, MPFR_RNDN)) { mpfr_set(r25888, r25887, MPFR_RNDN); } else { mpfr_set(r25888, r25875, MPFR_RNDN); };
        if (mpfr_get_si(r25873, MPFR_RNDN)) { mpfr_set(r25889, r25875, MPFR_RNDN); } else { mpfr_set(r25889, r25888, MPFR_RNDN); };
        return mpfr_get_d(r25889, MPFR_RNDN);
}

static mpfr_t r25890, r25891, r25892, r25893, r25894, r25895, r25896, r25897, r25898, r25899, r25900, r25901, r25902, r25903, r25904, r25905, r25906, r25907, r25908, r25909, r25910, r25911, r25912, r25913, r25914, r25915, r25916, r25917;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r25890);
        mpfr_init(r25891);
        mpfr_init(r25892);
        mpfr_init(r25893);
        mpfr_init(r25894);
        mpfr_init(r25895);
        mpfr_init(r25896);
        mpfr_init(r25897);
        mpfr_init(r25898);
        mpfr_init(r25899);
        mpfr_init_set_str(r25900, "-0.014474905413385253", 10, MPFR_RNDN);
        mpfr_init(r25901);
        mpfr_init(r25902);
        mpfr_init(r25903);
        mpfr_init_set_str(r25904, "0.0020659726639423873", 10, MPFR_RNDN);
        mpfr_init(r25905);
        mpfr_init_set_str(r25906, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r25907, "2", 10, MPFR_RNDN);
        mpfr_init(r25908);
        mpfr_init(r25909);
        mpfr_init(r25910);
        mpfr_init(r25911);
        mpfr_init(r25912);
        mpfr_init(r25913);
        mpfr_init(r25914);
        mpfr_init(r25915);
        mpfr_init(r25916);
        mpfr_init(r25917);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r25890, x, MPFR_RNDN);
        mpfr_cos(r25891, r25890, MPFR_RNDN);
        mpfr_set_d(r25892, eps, MPFR_RNDN);
        mpfr_cos(r25893, r25892, MPFR_RNDN);
        mpfr_mul(r25894, r25891, r25893, MPFR_RNDN);
        mpfr_sin(r25895, r25890, MPFR_RNDN);
        mpfr_sin(r25896, r25892, MPFR_RNDN);
        mpfr_mul(r25897, r25895, r25896, MPFR_RNDN);
        mpfr_sub(r25898, r25894, r25897, MPFR_RNDN);
        mpfr_sub(r25899, r25898, r25891, MPFR_RNDN);
        ;
        mpfr_set_si(r25901, mpfr_cmp(r25899, r25900) <= 0, MPFR_RNDN);
        mpfr_add(r25902, r25897, r25891, MPFR_RNDN);
        mpfr_sub(r25903, r25894, r25902, MPFR_RNDN);
        ;
        mpfr_set_si(r25905, mpfr_cmp(r25899, r25904) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r25908, r25892, r25907, MPFR_RNDN);
        mpfr_sin(r25909, r25908, MPFR_RNDN);
        mpfr_add(r25910, r25892, r25890, MPFR_RNDN);
        mpfr_add(r25911, r25890, r25910, MPFR_RNDN);
        mpfr_div(r25912, r25911, r25907, MPFR_RNDN);
        mpfr_sin(r25913, r25912, MPFR_RNDN);
        mpfr_mul(r25914, r25909, r25913, MPFR_RNDN);
        mpfr_mul(r25915, r25906, r25914, MPFR_RNDN);
        if (mpfr_get_si(r25905, MPFR_RNDN)) { mpfr_set(r25916, r25915, MPFR_RNDN); } else { mpfr_set(r25916, r25903, MPFR_RNDN); };
        if (mpfr_get_si(r25901, MPFR_RNDN)) { mpfr_set(r25917, r25903, MPFR_RNDN); } else { mpfr_set(r25917, r25916, MPFR_RNDN); };
        return mpfr_get_d(r25917, MPFR_RNDN);
}

