#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 r10724 = x;
        float r10725 = eps;
        float r10726 = r10724 + r10725;
        float r10727 = sin(r10726);
        float r10728 = sin(r10724);
        float r10729 = r10727 - r10728;
        return r10729;
}

double f_id(double x, double eps) {
        double r10730 = x;
        double r10731 = eps;
        double r10732 = r10730 + r10731;
        double r10733 = sin(r10732);
        double r10734 = sin(r10730);
        double r10735 = r10733 - r10734;
        return r10735;
}


double f_of(float x, float eps) {
        float r10736 = eps;
        float r10737 = -9.212243141618178e-09f;
        bool r10738 = r10736 <= r10737;
        float r10739 = 1.136609312331725e-08f;
        bool r10740 = r10736 <= r10739;
        float r10741 = !r10740;
        bool r10742 = r10738 || r10741;
        float r10743 = x;
        float r10744 = sin(r10743);
        float r10745 = cos(r10736);
        float r10746 = r10744 * r10745;
        float r10747 = cos(r10743);
        float r10748 = sin(r10736);
        float r10749 = r10747 * r10748;
        float r10750 = r10746 + r10749;
        float r10751 = r10750 - r10744;
        float r10752 = 2.0f;
        float r10753 = r10736 / r10752;
        float r10754 = sin(r10753);
        float r10755 = r10743 + r10743;
        float r10756 = r10755 + r10736;
        float r10757 = r10756 / r10752;
        float r10758 = cos(r10757);
        float r10759 = r10754 * r10758;
        float r10760 = r10752 * r10759;
        float r10761 = r10742 ? r10751 : r10760;
        return r10761;
}

double f_od(double x, double eps) {
        double r10762 = eps;
        double r10763 = -9.212243141618178e-09;
        bool r10764 = r10762 <= r10763;
        double r10765 = 1.136609312331725e-08;
        bool r10766 = r10762 <= r10765;
        double r10767 = !r10766;
        bool r10768 = r10764 || r10767;
        double r10769 = x;
        double r10770 = sin(r10769);
        double r10771 = cos(r10762);
        double r10772 = r10770 * r10771;
        double r10773 = cos(r10769);
        double r10774 = sin(r10762);
        double r10775 = r10773 * r10774;
        double r10776 = r10772 + r10775;
        double r10777 = r10776 - r10770;
        double r10778 = 2.0;
        double r10779 = r10762 / r10778;
        double r10780 = sin(r10779);
        double r10781 = r10769 + r10769;
        double r10782 = r10781 + r10762;
        double r10783 = r10782 / r10778;
        double r10784 = cos(r10783);
        double r10785 = r10780 * r10784;
        double r10786 = r10778 * r10785;
        double r10787 = r10768 ? r10777 : r10786;
        return r10787;
}

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 r10788, r10789, r10790, r10791, r10792, r10793;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r10788);
        mpfr_init(r10789);
        mpfr_init(r10790);
        mpfr_init(r10791);
        mpfr_init(r10792);
        mpfr_init(r10793);
}

double f_im(double x, double eps) {
        mpfr_set_d(r10788, x, MPFR_RNDN);
        mpfr_set_d(r10789, eps, MPFR_RNDN);
        mpfr_add(r10790, r10788, r10789, MPFR_RNDN);
        mpfr_sin(r10791, r10790, MPFR_RNDN);
        mpfr_sin(r10792, r10788, MPFR_RNDN);
        mpfr_sub(r10793, r10791, r10792, MPFR_RNDN);
        return mpfr_get_d(r10793, MPFR_RNDN);
}

static mpfr_t r10794, r10795, r10796, r10797, r10798, r10799, r10800, r10801, r10802, r10803, r10804, r10805, r10806, r10807, r10808, r10809, r10810, r10811, r10812, r10813, r10814, r10815, r10816, r10817, r10818, r10819;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r10794);
        mpfr_init_set_str(r10795, "-9.212243141618178e-09", 10, MPFR_RNDN);
        mpfr_init(r10796);
        mpfr_init_set_str(r10797, "1.136609312331725e-08", 10, MPFR_RNDN);
        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(r10808);
        mpfr_init(r10809);
        mpfr_init_set_str(r10810, "2", 10, MPFR_RNDN);
        mpfr_init(r10811);
        mpfr_init(r10812);
        mpfr_init(r10813);
        mpfr_init(r10814);
        mpfr_init(r10815);
        mpfr_init(r10816);
        mpfr_init(r10817);
        mpfr_init(r10818);
        mpfr_init(r10819);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r10794, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r10796, mpfr_cmp(r10794, r10795) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10798, mpfr_cmp(r10794, r10797) <= 0, MPFR_RNDN);
        mpfr_set_si(r10799, !mpfr_get_si(r10798, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r10800, mpfr_get_si(r10796, MPFR_RNDN) || mpfr_get_si(r10799, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_d(r10801, x, MPFR_RNDN);
        mpfr_sin(r10802, r10801, MPFR_RNDN);
        mpfr_cos(r10803, r10794, MPFR_RNDN);
        mpfr_mul(r10804, r10802, r10803, MPFR_RNDN);
        mpfr_cos(r10805, r10801, MPFR_RNDN);
        mpfr_sin(r10806, r10794, MPFR_RNDN);
        mpfr_mul(r10807, r10805, r10806, MPFR_RNDN);
        mpfr_add(r10808, r10804, r10807, MPFR_RNDN);
        mpfr_sub(r10809, r10808, r10802, MPFR_RNDN);
        ;
        mpfr_div(r10811, r10794, r10810, MPFR_RNDN);
        mpfr_sin(r10812, r10811, MPFR_RNDN);
        mpfr_add(r10813, r10801, r10801, MPFR_RNDN);
        mpfr_add(r10814, r10813, r10794, MPFR_RNDN);
        mpfr_div(r10815, r10814, r10810, MPFR_RNDN);
        mpfr_cos(r10816, r10815, MPFR_RNDN);
        mpfr_mul(r10817, r10812, r10816, MPFR_RNDN);
        mpfr_mul(r10818, r10810, r10817, MPFR_RNDN);
        if (mpfr_get_si(r10800, MPFR_RNDN)) { mpfr_set(r10819, r10809, MPFR_RNDN); } else { mpfr_set(r10819, r10818, MPFR_RNDN); };
        return mpfr_get_d(r10819, MPFR_RNDN);
}

static mpfr_t r10820, r10821, r10822, r10823, r10824, r10825, r10826, r10827, r10828, r10829, r10830, r10831, r10832, r10833, r10834, r10835, r10836, r10837, r10838, r10839, r10840, r10841, r10842, r10843, r10844, r10845;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r10820);
        mpfr_init_set_str(r10821, "-9.212243141618178e-09", 10, MPFR_RNDN);
        mpfr_init(r10822);
        mpfr_init_set_str(r10823, "1.136609312331725e-08", 10, MPFR_RNDN);
        mpfr_init(r10824);
        mpfr_init(r10825);
        mpfr_init(r10826);
        mpfr_init(r10827);
        mpfr_init(r10828);
        mpfr_init(r10829);
        mpfr_init(r10830);
        mpfr_init(r10831);
        mpfr_init(r10832);
        mpfr_init(r10833);
        mpfr_init(r10834);
        mpfr_init(r10835);
        mpfr_init_set_str(r10836, "2", 10, MPFR_RNDN);
        mpfr_init(r10837);
        mpfr_init(r10838);
        mpfr_init(r10839);
        mpfr_init(r10840);
        mpfr_init(r10841);
        mpfr_init(r10842);
        mpfr_init(r10843);
        mpfr_init(r10844);
        mpfr_init(r10845);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r10820, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r10822, mpfr_cmp(r10820, r10821) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10824, mpfr_cmp(r10820, r10823) <= 0, MPFR_RNDN);
        mpfr_set_si(r10825, !mpfr_get_si(r10824, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r10826, mpfr_get_si(r10822, MPFR_RNDN) || mpfr_get_si(r10825, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_d(r10827, x, MPFR_RNDN);
        mpfr_sin(r10828, r10827, MPFR_RNDN);
        mpfr_cos(r10829, r10820, MPFR_RNDN);
        mpfr_mul(r10830, r10828, r10829, MPFR_RNDN);
        mpfr_cos(r10831, r10827, MPFR_RNDN);
        mpfr_sin(r10832, r10820, MPFR_RNDN);
        mpfr_mul(r10833, r10831, r10832, MPFR_RNDN);
        mpfr_add(r10834, r10830, r10833, MPFR_RNDN);
        mpfr_sub(r10835, r10834, r10828, MPFR_RNDN);
        ;
        mpfr_div(r10837, r10820, r10836, MPFR_RNDN);
        mpfr_sin(r10838, r10837, MPFR_RNDN);
        mpfr_add(r10839, r10827, r10827, MPFR_RNDN);
        mpfr_add(r10840, r10839, r10820, MPFR_RNDN);
        mpfr_div(r10841, r10840, r10836, MPFR_RNDN);
        mpfr_cos(r10842, r10841, MPFR_RNDN);
        mpfr_mul(r10843, r10838, r10842, MPFR_RNDN);
        mpfr_mul(r10844, r10836, r10843, MPFR_RNDN);
        if (mpfr_get_si(r10826, MPFR_RNDN)) { mpfr_set(r10845, r10835, MPFR_RNDN); } else { mpfr_set(r10845, r10844, MPFR_RNDN); };
        return mpfr_get_d(r10845, MPFR_RNDN);
}

