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

char *name = "2sin (example 3.3)";

double f_if(float x, float eps) {
        float r4417717 = x;
        float r4417718 = eps;
        float r4417719 = r4417717 + r4417718;
        float r4417720 = sin(r4417719);
        float r4417721 = sin(r4417717);
        float r4417722 = r4417720 - r4417721;
        return r4417722;
}

double f_id(double x, double eps) {
        double r4417723 = x;
        double r4417724 = eps;
        double r4417725 = r4417723 + r4417724;
        double r4417726 = sin(r4417725);
        double r4417727 = sin(r4417723);
        double r4417728 = r4417726 - r4417727;
        return r4417728;
}


double f_of(float x, float eps) {
        float r4417729 = eps;
        float r4417730 = -1.0845564942913211e-10;
        bool r4417731 = r4417729 <= r4417730;
        float r4417732 = x;
        float r4417733 = sin(r4417732);
        float r4417734 = cos(r4417729);
        float r4417735 = r4417733 * r4417734;
        float r4417736 = cos(r4417732);
        float r4417737 = sin(r4417729);
        float r4417738 = r4417736 * r4417737;
        float r4417739 = r4417735 + r4417738;
        float r4417740 = r4417739 - r4417733;
        float r4417741 = 2.0251479721032078e-07;
        bool r4417742 = r4417729 <= r4417741;
        float r4417743 = 2;
        float r4417744 = r4417729 / r4417743;
        float r4417745 = sin(r4417744);
        float r4417746 = r4417732 + r4417732;
        float r4417747 = r4417729 + r4417746;
        float r4417748 = r4417747 / r4417743;
        float r4417749 = cos(r4417748);
        float r4417750 = r4417745 * r4417749;
        float r4417751 = r4417743 * r4417750;
        float r4417752 = r4417742 ? r4417751 : r4417740;
        float r4417753 = r4417731 ? r4417740 : r4417752;
        return r4417753;
}

double f_od(double x, double eps) {
        double r4417754 = eps;
        double r4417755 = -1.0845564942913211e-10;
        bool r4417756 = r4417754 <= r4417755;
        double r4417757 = x;
        double r4417758 = sin(r4417757);
        double r4417759 = cos(r4417754);
        double r4417760 = r4417758 * r4417759;
        double r4417761 = cos(r4417757);
        double r4417762 = sin(r4417754);
        double r4417763 = r4417761 * r4417762;
        double r4417764 = r4417760 + r4417763;
        double r4417765 = r4417764 - r4417758;
        double r4417766 = 2.0251479721032078e-07;
        bool r4417767 = r4417754 <= r4417766;
        double r4417768 = 2;
        double r4417769 = r4417754 / r4417768;
        double r4417770 = sin(r4417769);
        double r4417771 = r4417757 + r4417757;
        double r4417772 = r4417754 + r4417771;
        double r4417773 = r4417772 / r4417768;
        double r4417774 = cos(r4417773);
        double r4417775 = r4417770 * r4417774;
        double r4417776 = r4417768 * r4417775;
        double r4417777 = r4417767 ? r4417776 : r4417765;
        double r4417778 = r4417756 ? r4417765 : r4417777;
        return r4417778;
}

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 r4417779, r4417780, r4417781, r4417782, r4417783, r4417784;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r4417779);
        mpfr_init(r4417780);
        mpfr_init(r4417781);
        mpfr_init(r4417782);
        mpfr_init(r4417783);
        mpfr_init(r4417784);
}

double f_im(double x, double eps) {
        mpfr_set_d(r4417779, x, MPFR_RNDN);
        mpfr_set_d(r4417780, eps, MPFR_RNDN);
        mpfr_add(r4417781, r4417779, r4417780, MPFR_RNDN);
        mpfr_sin(r4417782, r4417781, MPFR_RNDN);
        mpfr_sin(r4417783, r4417779, MPFR_RNDN);
        mpfr_sub(r4417784, r4417782, r4417783, MPFR_RNDN);
        return mpfr_get_d(r4417784, MPFR_RNDN);
}

static mpfr_t r4417785, r4417786, r4417787, r4417788, r4417789, r4417790, r4417791, r4417792, r4417793, r4417794, r4417795, r4417796, r4417797, r4417798, r4417799, r4417800, r4417801, r4417802, r4417803, r4417804, r4417805, r4417806, r4417807, r4417808, r4417809;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r4417785);
        mpfr_init_set_str(r4417786, "-1.0845564942913211e-10", 10, MPFR_RNDN);
        mpfr_init(r4417787);
        mpfr_init(r4417788);
        mpfr_init(r4417789);
        mpfr_init(r4417790);
        mpfr_init(r4417791);
        mpfr_init(r4417792);
        mpfr_init(r4417793);
        mpfr_init(r4417794);
        mpfr_init(r4417795);
        mpfr_init(r4417796);
        mpfr_init_set_str(r4417797, "2.0251479721032078e-07", 10, MPFR_RNDN);
        mpfr_init(r4417798);
        mpfr_init_set_str(r4417799, "2", 10, MPFR_RNDN);
        mpfr_init(r4417800);
        mpfr_init(r4417801);
        mpfr_init(r4417802);
        mpfr_init(r4417803);
        mpfr_init(r4417804);
        mpfr_init(r4417805);
        mpfr_init(r4417806);
        mpfr_init(r4417807);
        mpfr_init(r4417808);
        mpfr_init(r4417809);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r4417785, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r4417787, mpfr_cmp(r4417785, r4417786) <= 0, MPFR_RNDN);
        mpfr_set_d(r4417788, x, MPFR_RNDN);
        mpfr_sin(r4417789, r4417788, MPFR_RNDN);
        mpfr_cos(r4417790, r4417785, MPFR_RNDN);
        mpfr_mul(r4417791, r4417789, r4417790, MPFR_RNDN);
        mpfr_cos(r4417792, r4417788, MPFR_RNDN);
        mpfr_sin(r4417793, r4417785, MPFR_RNDN);
        mpfr_mul(r4417794, r4417792, r4417793, MPFR_RNDN);
        mpfr_add(r4417795, r4417791, r4417794, MPFR_RNDN);
        mpfr_sub(r4417796, r4417795, r4417789, MPFR_RNDN);
        ;
        mpfr_set_si(r4417798, mpfr_cmp(r4417785, r4417797) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r4417800, r4417785, r4417799, MPFR_RNDN);
        mpfr_sin(r4417801, r4417800, MPFR_RNDN);
        mpfr_add(r4417802, r4417788, r4417788, MPFR_RNDN);
        mpfr_add(r4417803, r4417785, r4417802, MPFR_RNDN);
        mpfr_div(r4417804, r4417803, r4417799, MPFR_RNDN);
        mpfr_cos(r4417805, r4417804, MPFR_RNDN);
        mpfr_mul(r4417806, r4417801, r4417805, MPFR_RNDN);
        mpfr_mul(r4417807, r4417799, r4417806, MPFR_RNDN);
        if (mpfr_get_si(r4417798, MPFR_RNDN)) { mpfr_set(r4417808, r4417807, MPFR_RNDN); } else { mpfr_set(r4417808, r4417796, MPFR_RNDN); };
        if (mpfr_get_si(r4417787, MPFR_RNDN)) { mpfr_set(r4417809, r4417796, MPFR_RNDN); } else { mpfr_set(r4417809, r4417808, MPFR_RNDN); };
        return mpfr_get_d(r4417809, MPFR_RNDN);
}

static mpfr_t r4417810, r4417811, r4417812, r4417813, r4417814, r4417815, r4417816, r4417817, r4417818, r4417819, r4417820, r4417821, r4417822, r4417823, r4417824, r4417825, r4417826, r4417827, r4417828, r4417829, r4417830, r4417831, r4417832, r4417833, r4417834;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r4417810);
        mpfr_init_set_str(r4417811, "-1.0845564942913211e-10", 10, MPFR_RNDN);
        mpfr_init(r4417812);
        mpfr_init(r4417813);
        mpfr_init(r4417814);
        mpfr_init(r4417815);
        mpfr_init(r4417816);
        mpfr_init(r4417817);
        mpfr_init(r4417818);
        mpfr_init(r4417819);
        mpfr_init(r4417820);
        mpfr_init(r4417821);
        mpfr_init_set_str(r4417822, "2.0251479721032078e-07", 10, MPFR_RNDN);
        mpfr_init(r4417823);
        mpfr_init_set_str(r4417824, "2", 10, MPFR_RNDN);
        mpfr_init(r4417825);
        mpfr_init(r4417826);
        mpfr_init(r4417827);
        mpfr_init(r4417828);
        mpfr_init(r4417829);
        mpfr_init(r4417830);
        mpfr_init(r4417831);
        mpfr_init(r4417832);
        mpfr_init(r4417833);
        mpfr_init(r4417834);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r4417810, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r4417812, mpfr_cmp(r4417810, r4417811) <= 0, MPFR_RNDN);
        mpfr_set_d(r4417813, x, MPFR_RNDN);
        mpfr_sin(r4417814, r4417813, MPFR_RNDN);
        mpfr_cos(r4417815, r4417810, MPFR_RNDN);
        mpfr_mul(r4417816, r4417814, r4417815, MPFR_RNDN);
        mpfr_cos(r4417817, r4417813, MPFR_RNDN);
        mpfr_sin(r4417818, r4417810, MPFR_RNDN);
        mpfr_mul(r4417819, r4417817, r4417818, MPFR_RNDN);
        mpfr_add(r4417820, r4417816, r4417819, MPFR_RNDN);
        mpfr_sub(r4417821, r4417820, r4417814, MPFR_RNDN);
        ;
        mpfr_set_si(r4417823, mpfr_cmp(r4417810, r4417822) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r4417825, r4417810, r4417824, MPFR_RNDN);
        mpfr_sin(r4417826, r4417825, MPFR_RNDN);
        mpfr_add(r4417827, r4417813, r4417813, MPFR_RNDN);
        mpfr_add(r4417828, r4417810, r4417827, MPFR_RNDN);
        mpfr_div(r4417829, r4417828, r4417824, MPFR_RNDN);
        mpfr_cos(r4417830, r4417829, MPFR_RNDN);
        mpfr_mul(r4417831, r4417826, r4417830, MPFR_RNDN);
        mpfr_mul(r4417832, r4417824, r4417831, MPFR_RNDN);
        if (mpfr_get_si(r4417823, MPFR_RNDN)) { mpfr_set(r4417833, r4417832, MPFR_RNDN); } else { mpfr_set(r4417833, r4417821, MPFR_RNDN); };
        if (mpfr_get_si(r4417812, MPFR_RNDN)) { mpfr_set(r4417834, r4417821, MPFR_RNDN); } else { mpfr_set(r4417834, r4417833, MPFR_RNDN); };
        return mpfr_get_d(r4417834, MPFR_RNDN);
}

