#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 r25784 = x;
        float r25785 = eps;
        float r25786 = r25784 + r25785;
        float r25787 = cos(r25786);
        float r25788 = cos(r25784);
        float r25789 = r25787 - r25788;
        return r25789;
}

double f_id(double x, double eps) {
        double r25790 = x;
        double r25791 = eps;
        double r25792 = r25790 + r25791;
        double r25793 = cos(r25792);
        double r25794 = cos(r25790);
        double r25795 = r25793 - r25794;
        return r25795;
}


double f_of(float x, float eps) {
        float r25796 = -2;
        float r25797 = eps;
        float r25798 = 2;
        float r25799 = r25797 / r25798;
        float r25800 = sin(r25799);
        float r25801 = x;
        float r25802 = r25797 + r25801;
        float r25803 = r25801 + r25802;
        float r25804 = r25803 / r25798;
        float r25805 = sin(r25804);
        float r25806 = r25800 * r25805;
        float r25807 = cbrt(r25806);
        float r25808 = r25807 * r25807;
        float r25809 = r25808 * r25807;
        float r25810 = r25796 * r25809;
        float r25811 = -4.499988252549904e-07;
        bool r25812 = r25810 <= r25811;
        float r25813 = cos(r25801);
        float r25814 = cos(r25797);
        float r25815 = r25813 * r25814;
        float r25816 = sin(r25801);
        float r25817 = sin(r25797);
        float r25818 = r25816 * r25817;
        float r25819 = r25818 + r25813;
        float r25820 = r25815 - r25819;
        float r25821 = 0.027163715613777815;
        bool r25822 = r25810 <= r25821;
        float r25823 = r25796 * r25806;
        float r25824 = r25822 ? r25823 : r25820;
        float r25825 = r25812 ? r25820 : r25824;
        return r25825;
}

double f_od(double x, double eps) {
        double r25826 = -2;
        double r25827 = eps;
        double r25828 = 2;
        double r25829 = r25827 / r25828;
        double r25830 = sin(r25829);
        double r25831 = x;
        double r25832 = r25827 + r25831;
        double r25833 = r25831 + r25832;
        double r25834 = r25833 / r25828;
        double r25835 = sin(r25834);
        double r25836 = r25830 * r25835;
        double r25837 = cbrt(r25836);
        double r25838 = r25837 * r25837;
        double r25839 = r25838 * r25837;
        double r25840 = r25826 * r25839;
        double r25841 = -4.499988252549904e-07;
        bool r25842 = r25840 <= r25841;
        double r25843 = cos(r25831);
        double r25844 = cos(r25827);
        double r25845 = r25843 * r25844;
        double r25846 = sin(r25831);
        double r25847 = sin(r25827);
        double r25848 = r25846 * r25847;
        double r25849 = r25848 + r25843;
        double r25850 = r25845 - r25849;
        double r25851 = 0.027163715613777815;
        bool r25852 = r25840 <= r25851;
        double r25853 = r25826 * r25836;
        double r25854 = r25852 ? r25853 : r25850;
        double r25855 = r25842 ? r25850 : 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, r25890, r25891;

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

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

static mpfr_t 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, r25918, r25919, r25920, r25921;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init_set_str(r25892, "-2", 10, MPFR_RNDN);
        mpfr_init(r25893);
        mpfr_init_set_str(r25894, "2", 10, MPFR_RNDN);
        mpfr_init(r25895);
        mpfr_init(r25896);
        mpfr_init(r25897);
        mpfr_init(r25898);
        mpfr_init(r25899);
        mpfr_init(r25900);
        mpfr_init(r25901);
        mpfr_init(r25902);
        mpfr_init(r25903);
        mpfr_init(r25904);
        mpfr_init(r25905);
        mpfr_init(r25906);
        mpfr_init_set_str(r25907, "-4.499988252549904e-07", 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_set_str(r25917, "0.027163715613777815", 10, MPFR_RNDN);
        mpfr_init(r25918);
        mpfr_init(r25919);
        mpfr_init(r25920);
        mpfr_init(r25921);
}

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

