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

char *name = "NMSE problem 3.3.5";

double f_if(float x, float eps) {
        float r4773843 = x;
        float r4773844 = eps;
        float r4773845 = r4773843 + r4773844;
        float r4773846 = cos(r4773845);
        float r4773847 = cos(r4773843);
        float r4773848 = r4773846 - r4773847;
        return r4773848;
}

double f_id(double x, double eps) {
        double r4773849 = x;
        double r4773850 = eps;
        double r4773851 = r4773849 + r4773850;
        double r4773852 = cos(r4773851);
        double r4773853 = cos(r4773849);
        double r4773854 = r4773852 - r4773853;
        return r4773854;
}


double f_of(float x, float eps) {
        float r4773855 = eps;
        float r4773856 = -8.658073314327725e-05f;
        bool r4773857 = r4773855 <= r4773856;
        float r4773858 = x;
        float r4773859 = cos(r4773858);
        float r4773860 = cos(r4773855);
        float r4773861 = r4773859 * r4773860;
        float r4773862 = sin(r4773858);
        float r4773863 = sin(r4773855);
        float r4773864 = r4773862 * r4773863;
        float r4773865 = r4773861 - r4773864;
        float r4773866 = r4773865 - r4773859;
        float r4773867 = 3.384489567637978e-06f;
        bool r4773868 = r4773855 <= r4773867;
        float r4773869 = -2.0f;
        float r4773870 = 2.0f;
        float r4773871 = r4773855 / r4773870;
        float r4773872 = sin(r4773871);
        float r4773873 = r4773858 + r4773855;
        float r4773874 = r4773873 + r4773858;
        float r4773875 = r4773874 / r4773870;
        float r4773876 = sin(r4773875);
        float r4773877 = r4773872 * r4773876;
        float r4773878 = r4773869 * r4773877;
        float r4773879 = r4773868 ? r4773878 : r4773866;
        float r4773880 = r4773857 ? r4773866 : r4773879;
        return r4773880;
}

double f_od(double x, double eps) {
        double r4773881 = eps;
        double r4773882 = -8.658073314327725e-05;
        bool r4773883 = r4773881 <= r4773882;
        double r4773884 = x;
        double r4773885 = cos(r4773884);
        double r4773886 = cos(r4773881);
        double r4773887 = r4773885 * r4773886;
        double r4773888 = sin(r4773884);
        double r4773889 = sin(r4773881);
        double r4773890 = r4773888 * r4773889;
        double r4773891 = r4773887 - r4773890;
        double r4773892 = r4773891 - r4773885;
        double r4773893 = 3.384489567637978e-06;
        bool r4773894 = r4773881 <= r4773893;
        double r4773895 = -2.0;
        double r4773896 = 2.0;
        double r4773897 = r4773881 / r4773896;
        double r4773898 = sin(r4773897);
        double r4773899 = r4773884 + r4773881;
        double r4773900 = r4773899 + r4773884;
        double r4773901 = r4773900 / r4773896;
        double r4773902 = sin(r4773901);
        double r4773903 = r4773898 * r4773902;
        double r4773904 = r4773895 * r4773903;
        double r4773905 = r4773894 ? r4773904 : r4773892;
        double r4773906 = r4773883 ? r4773892 : r4773905;
        return r4773906;
}

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 r4773907, r4773908, r4773909, r4773910, r4773911, r4773912;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r4773907);
        mpfr_init(r4773908);
        mpfr_init(r4773909);
        mpfr_init(r4773910);
        mpfr_init(r4773911);
        mpfr_init(r4773912);
}

double f_im(double x, double eps) {
        mpfr_set_d(r4773907, x, MPFR_RNDN);
        mpfr_set_d(r4773908, eps, MPFR_RNDN);
        mpfr_add(r4773909, r4773907, r4773908, MPFR_RNDN);
        mpfr_cos(r4773910, r4773909, MPFR_RNDN);
        mpfr_cos(r4773911, r4773907, MPFR_RNDN);
        mpfr_sub(r4773912, r4773910, r4773911, MPFR_RNDN);
        return mpfr_get_d(r4773912, MPFR_RNDN);
}

static mpfr_t r4773913, r4773914, r4773915, r4773916, r4773917, r4773918, r4773919, r4773920, r4773921, r4773922, r4773923, r4773924, r4773925, r4773926, r4773927, r4773928, r4773929, r4773930, r4773931, r4773932, r4773933, r4773934, r4773935, r4773936, r4773937, r4773938;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4773913);
        mpfr_init_set_str(r4773914, "-8.658073314327725e-05", 10, MPFR_RNDN);
        mpfr_init(r4773915);
        mpfr_init(r4773916);
        mpfr_init(r4773917);
        mpfr_init(r4773918);
        mpfr_init(r4773919);
        mpfr_init(r4773920);
        mpfr_init(r4773921);
        mpfr_init(r4773922);
        mpfr_init(r4773923);
        mpfr_init(r4773924);
        mpfr_init_set_str(r4773925, "3.384489567637978e-06", 10, MPFR_RNDN);
        mpfr_init(r4773926);
        mpfr_init_set_str(r4773927, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r4773928, "2", 10, MPFR_RNDN);
        mpfr_init(r4773929);
        mpfr_init(r4773930);
        mpfr_init(r4773931);
        mpfr_init(r4773932);
        mpfr_init(r4773933);
        mpfr_init(r4773934);
        mpfr_init(r4773935);
        mpfr_init(r4773936);
        mpfr_init(r4773937);
        mpfr_init(r4773938);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r4773913, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r4773915, mpfr_cmp(r4773913, r4773914) <= 0, MPFR_RNDN);
        mpfr_set_d(r4773916, x, MPFR_RNDN);
        mpfr_cos(r4773917, r4773916, MPFR_RNDN);
        mpfr_cos(r4773918, r4773913, MPFR_RNDN);
        mpfr_mul(r4773919, r4773917, r4773918, MPFR_RNDN);
        mpfr_sin(r4773920, r4773916, MPFR_RNDN);
        mpfr_sin(r4773921, r4773913, MPFR_RNDN);
        mpfr_mul(r4773922, r4773920, r4773921, MPFR_RNDN);
        mpfr_sub(r4773923, r4773919, r4773922, MPFR_RNDN);
        mpfr_sub(r4773924, r4773923, r4773917, MPFR_RNDN);
        ;
        mpfr_set_si(r4773926, mpfr_cmp(r4773913, r4773925) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r4773929, r4773913, r4773928, MPFR_RNDN);
        mpfr_sin(r4773930, r4773929, MPFR_RNDN);
        mpfr_add(r4773931, r4773916, r4773913, MPFR_RNDN);
        mpfr_add(r4773932, r4773931, r4773916, MPFR_RNDN);
        mpfr_div(r4773933, r4773932, r4773928, MPFR_RNDN);
        mpfr_sin(r4773934, r4773933, MPFR_RNDN);
        mpfr_mul(r4773935, r4773930, r4773934, MPFR_RNDN);
        mpfr_mul(r4773936, r4773927, r4773935, MPFR_RNDN);
        if (mpfr_get_si(r4773926, MPFR_RNDN)) { mpfr_set(r4773937, r4773936, MPFR_RNDN); } else { mpfr_set(r4773937, r4773924, MPFR_RNDN); };
        if (mpfr_get_si(r4773915, MPFR_RNDN)) { mpfr_set(r4773938, r4773924, MPFR_RNDN); } else { mpfr_set(r4773938, r4773937, MPFR_RNDN); };
        return mpfr_get_d(r4773938, MPFR_RNDN);
}

static mpfr_t r4773939, r4773940, r4773941, r4773942, r4773943, r4773944, r4773945, r4773946, r4773947, r4773948, r4773949, r4773950, r4773951, r4773952, r4773953, r4773954, r4773955, r4773956, r4773957, r4773958, r4773959, r4773960, r4773961, r4773962, r4773963, r4773964;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r4773939);
        mpfr_init_set_str(r4773940, "-8.658073314327725e-05", 10, MPFR_RNDN);
        mpfr_init(r4773941);
        mpfr_init(r4773942);
        mpfr_init(r4773943);
        mpfr_init(r4773944);
        mpfr_init(r4773945);
        mpfr_init(r4773946);
        mpfr_init(r4773947);
        mpfr_init(r4773948);
        mpfr_init(r4773949);
        mpfr_init(r4773950);
        mpfr_init_set_str(r4773951, "3.384489567637978e-06", 10, MPFR_RNDN);
        mpfr_init(r4773952);
        mpfr_init_set_str(r4773953, "-2", 10, MPFR_RNDN);
        mpfr_init_set_str(r4773954, "2", 10, MPFR_RNDN);
        mpfr_init(r4773955);
        mpfr_init(r4773956);
        mpfr_init(r4773957);
        mpfr_init(r4773958);
        mpfr_init(r4773959);
        mpfr_init(r4773960);
        mpfr_init(r4773961);
        mpfr_init(r4773962);
        mpfr_init(r4773963);
        mpfr_init(r4773964);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r4773939, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r4773941, mpfr_cmp(r4773939, r4773940) <= 0, MPFR_RNDN);
        mpfr_set_d(r4773942, x, MPFR_RNDN);
        mpfr_cos(r4773943, r4773942, MPFR_RNDN);
        mpfr_cos(r4773944, r4773939, MPFR_RNDN);
        mpfr_mul(r4773945, r4773943, r4773944, MPFR_RNDN);
        mpfr_sin(r4773946, r4773942, MPFR_RNDN);
        mpfr_sin(r4773947, r4773939, MPFR_RNDN);
        mpfr_mul(r4773948, r4773946, r4773947, MPFR_RNDN);
        mpfr_sub(r4773949, r4773945, r4773948, MPFR_RNDN);
        mpfr_sub(r4773950, r4773949, r4773943, MPFR_RNDN);
        ;
        mpfr_set_si(r4773952, mpfr_cmp(r4773939, r4773951) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r4773955, r4773939, r4773954, MPFR_RNDN);
        mpfr_sin(r4773956, r4773955, MPFR_RNDN);
        mpfr_add(r4773957, r4773942, r4773939, MPFR_RNDN);
        mpfr_add(r4773958, r4773957, r4773942, MPFR_RNDN);
        mpfr_div(r4773959, r4773958, r4773954, MPFR_RNDN);
        mpfr_sin(r4773960, r4773959, MPFR_RNDN);
        mpfr_mul(r4773961, r4773956, r4773960, MPFR_RNDN);
        mpfr_mul(r4773962, r4773953, r4773961, MPFR_RNDN);
        if (mpfr_get_si(r4773952, MPFR_RNDN)) { mpfr_set(r4773963, r4773962, MPFR_RNDN); } else { mpfr_set(r4773963, r4773950, MPFR_RNDN); };
        if (mpfr_get_si(r4773941, MPFR_RNDN)) { mpfr_set(r4773964, r4773950, MPFR_RNDN); } else { mpfr_set(r4773964, r4773963, MPFR_RNDN); };
        return mpfr_get_d(r4773964, MPFR_RNDN);
}

