#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 r10693 = x;
        float r10694 = eps;
        float r10695 = r10693 + r10694;
        float r10696 = sin(r10695);
        float r10697 = sin(r10693);
        float r10698 = r10696 - r10697;
        return r10698;
}

double f_id(double x, double eps) {
        double r10699 = x;
        double r10700 = eps;
        double r10701 = r10699 + r10700;
        double r10702 = sin(r10701);
        double r10703 = sin(r10699);
        double r10704 = r10702 - r10703;
        return r10704;
}


double f_of(float x, float eps) {
        float r10705 = x;
        float r10706 = cos(r10705);
        float r10707 = eps;
        float r10708 = sin(r10707);
        float r10709 = r10706 * r10708;
        float r10710 = cos(r10707);
        float r10711 = sin(r10705);
        float r10712 = r10710 * r10711;
        float r10713 = r10709 + r10712;
        float r10714 = r10713 - r10711;
        float r10715 = -0.00015965096829055196f;
        bool r10716 = r10714 <= r10715;
        float r10717 = r10709 - r10711;
        float r10718 = r10717 + r10712;
        float r10719 = 3.097729881299127e-07f;
        bool r10720 = r10714 <= r10719;
        float r10721 = 2.0f;
        float r10722 = r10707 / r10721;
        float r10723 = sin(r10722);
        float r10724 = r10705 + r10705;
        float r10725 = r10707 + r10724;
        float r10726 = r10725 / r10721;
        float r10727 = cos(r10726);
        float r10728 = log1p(r10727);
        float r10729 = expm1(r10728);
        float r10730 = r10723 * r10729;
        float r10731 = r10730 * r10721;
        float r10732 = r10720 ? r10731 : r10714;
        float r10733 = r10716 ? r10718 : r10732;
        return r10733;
}

double f_od(double x, double eps) {
        double r10734 = x;
        double r10735 = cos(r10734);
        double r10736 = eps;
        double r10737 = sin(r10736);
        double r10738 = r10735 * r10737;
        double r10739 = cos(r10736);
        double r10740 = sin(r10734);
        double r10741 = r10739 * r10740;
        double r10742 = r10738 + r10741;
        double r10743 = r10742 - r10740;
        double r10744 = -0.00015965096829055196;
        bool r10745 = r10743 <= r10744;
        double r10746 = r10738 - r10740;
        double r10747 = r10746 + r10741;
        double r10748 = 3.097729881299127e-07;
        bool r10749 = r10743 <= r10748;
        double r10750 = 2.0;
        double r10751 = r10736 / r10750;
        double r10752 = sin(r10751);
        double r10753 = r10734 + r10734;
        double r10754 = r10736 + r10753;
        double r10755 = r10754 / r10750;
        double r10756 = cos(r10755);
        double r10757 = log1p(r10756);
        double r10758 = expm1(r10757);
        double r10759 = r10752 * r10758;
        double r10760 = r10759 * r10750;
        double r10761 = r10749 ? r10760 : r10743;
        double r10762 = r10745 ? r10747 : r10761;
        return r10762;
}

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 r10763, r10764, r10765, r10766, r10767, r10768;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r10763);
        mpfr_init(r10764);
        mpfr_init(r10765);
        mpfr_init(r10766);
        mpfr_init(r10767);
        mpfr_init(r10768);
}

double f_im(double x, double eps) {
        mpfr_set_d(r10763, x, MPFR_RNDN);
        mpfr_set_d(r10764, eps, MPFR_RNDN);
        mpfr_add(r10765, r10763, r10764, MPFR_RNDN);
        mpfr_sin(r10766, r10765, MPFR_RNDN);
        mpfr_sin(r10767, r10763, MPFR_RNDN);
        mpfr_sub(r10768, r10766, r10767, MPFR_RNDN);
        return mpfr_get_d(r10768, MPFR_RNDN);
}

static mpfr_t r10769, r10770, r10771, r10772, r10773, r10774, r10775, r10776, r10777, r10778, r10779, r10780, r10781, r10782, r10783, r10784, r10785, r10786, r10787, r10788, r10789, r10790, r10791, r10792, r10793, r10794, r10795, r10796, r10797;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r10769);
        mpfr_init(r10770);
        mpfr_init(r10771);
        mpfr_init(r10772);
        mpfr_init(r10773);
        mpfr_init(r10774);
        mpfr_init(r10775);
        mpfr_init(r10776);
        mpfr_init(r10777);
        mpfr_init(r10778);
        mpfr_init_set_str(r10779, "-0.00015965096829055196", 10, MPFR_RNDN);
        mpfr_init(r10780);
        mpfr_init(r10781);
        mpfr_init(r10782);
        mpfr_init_set_str(r10783, "3.097729881299127e-07", 10, MPFR_RNDN);
        mpfr_init(r10784);
        mpfr_init_set_str(r10785, "2", 10, MPFR_RNDN);
        mpfr_init(r10786);
        mpfr_init(r10787);
        mpfr_init(r10788);
        mpfr_init(r10789);
        mpfr_init(r10790);
        mpfr_init(r10791);
        mpfr_init(r10792);
        mpfr_init(r10793);
        mpfr_init(r10794);
        mpfr_init(r10795);
        mpfr_init(r10796);
        mpfr_init(r10797);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r10769, x, MPFR_RNDN);
        mpfr_cos(r10770, r10769, MPFR_RNDN);
        mpfr_set_d(r10771, eps, MPFR_RNDN);
        mpfr_sin(r10772, r10771, MPFR_RNDN);
        mpfr_mul(r10773, r10770, r10772, MPFR_RNDN);
        mpfr_cos(r10774, r10771, MPFR_RNDN);
        mpfr_sin(r10775, r10769, MPFR_RNDN);
        mpfr_mul(r10776, r10774, r10775, MPFR_RNDN);
        mpfr_add(r10777, r10773, r10776, MPFR_RNDN);
        mpfr_sub(r10778, r10777, r10775, MPFR_RNDN);
        ;
        mpfr_set_si(r10780, mpfr_cmp(r10778, r10779) <= 0, MPFR_RNDN);
        mpfr_sub(r10781, r10773, r10775, MPFR_RNDN);
        mpfr_add(r10782, r10781, r10776, MPFR_RNDN);
        ;
        mpfr_set_si(r10784, mpfr_cmp(r10778, r10783) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r10786, r10771, r10785, MPFR_RNDN);
        mpfr_sin(r10787, r10786, MPFR_RNDN);
        mpfr_add(r10788, r10769, r10769, MPFR_RNDN);
        mpfr_add(r10789, r10771, r10788, MPFR_RNDN);
        mpfr_div(r10790, r10789, r10785, MPFR_RNDN);
        mpfr_cos(r10791, r10790, MPFR_RNDN);
        mpfr_log1p(r10792, r10791, MPFR_RNDN);
        mpfr_expm1(r10793, r10792, MPFR_RNDN);
        mpfr_mul(r10794, r10787, r10793, MPFR_RNDN);
        mpfr_mul(r10795, r10794, r10785, MPFR_RNDN);
        if (mpfr_get_si(r10784, MPFR_RNDN)) { mpfr_set(r10796, r10795, MPFR_RNDN); } else { mpfr_set(r10796, r10778, MPFR_RNDN); };
        if (mpfr_get_si(r10780, MPFR_RNDN)) { mpfr_set(r10797, r10782, MPFR_RNDN); } else { mpfr_set(r10797, r10796, MPFR_RNDN); };
        return mpfr_get_d(r10797, MPFR_RNDN);
}

static mpfr_t r10798, r10799, r10800, r10801, r10802, r10803, r10804, r10805, r10806, r10807, r10808, r10809, r10810, r10811, r10812, r10813, r10814, r10815, r10816, r10817, r10818, r10819, r10820, r10821, r10822, r10823, r10824, r10825, r10826;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r10798);
        mpfr_init(r10799);
        mpfr_init(r10800);
        mpfr_init(r10801);
        mpfr_init(r10802);
        mpfr_init(r10803);
        mpfr_init(r10804);
        mpfr_init(r10805);
        mpfr_init(r10806);
        mpfr_init(r10807);
        mpfr_init_set_str(r10808, "-0.00015965096829055196", 10, MPFR_RNDN);
        mpfr_init(r10809);
        mpfr_init(r10810);
        mpfr_init(r10811);
        mpfr_init_set_str(r10812, "3.097729881299127e-07", 10, MPFR_RNDN);
        mpfr_init(r10813);
        mpfr_init_set_str(r10814, "2", 10, MPFR_RNDN);
        mpfr_init(r10815);
        mpfr_init(r10816);
        mpfr_init(r10817);
        mpfr_init(r10818);
        mpfr_init(r10819);
        mpfr_init(r10820);
        mpfr_init(r10821);
        mpfr_init(r10822);
        mpfr_init(r10823);
        mpfr_init(r10824);
        mpfr_init(r10825);
        mpfr_init(r10826);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r10798, x, MPFR_RNDN);
        mpfr_cos(r10799, r10798, MPFR_RNDN);
        mpfr_set_d(r10800, eps, MPFR_RNDN);
        mpfr_sin(r10801, r10800, MPFR_RNDN);
        mpfr_mul(r10802, r10799, r10801, MPFR_RNDN);
        mpfr_cos(r10803, r10800, MPFR_RNDN);
        mpfr_sin(r10804, r10798, MPFR_RNDN);
        mpfr_mul(r10805, r10803, r10804, MPFR_RNDN);
        mpfr_add(r10806, r10802, r10805, MPFR_RNDN);
        mpfr_sub(r10807, r10806, r10804, MPFR_RNDN);
        ;
        mpfr_set_si(r10809, mpfr_cmp(r10807, r10808) <= 0, MPFR_RNDN);
        mpfr_sub(r10810, r10802, r10804, MPFR_RNDN);
        mpfr_add(r10811, r10810, r10805, MPFR_RNDN);
        ;
        mpfr_set_si(r10813, mpfr_cmp(r10807, r10812) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r10815, r10800, r10814, MPFR_RNDN);
        mpfr_sin(r10816, r10815, MPFR_RNDN);
        mpfr_add(r10817, r10798, r10798, MPFR_RNDN);
        mpfr_add(r10818, r10800, r10817, MPFR_RNDN);
        mpfr_div(r10819, r10818, r10814, MPFR_RNDN);
        mpfr_cos(r10820, r10819, MPFR_RNDN);
        mpfr_log1p(r10821, r10820, MPFR_RNDN);
        mpfr_expm1(r10822, r10821, MPFR_RNDN);
        mpfr_mul(r10823, r10816, r10822, MPFR_RNDN);
        mpfr_mul(r10824, r10823, r10814, MPFR_RNDN);
        if (mpfr_get_si(r10813, MPFR_RNDN)) { mpfr_set(r10825, r10824, MPFR_RNDN); } else { mpfr_set(r10825, r10807, MPFR_RNDN); };
        if (mpfr_get_si(r10809, MPFR_RNDN)) { mpfr_set(r10826, r10811, MPFR_RNDN); } else { mpfr_set(r10826, r10825, MPFR_RNDN); };
        return mpfr_get_d(r10826, MPFR_RNDN);
}

