#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 r4876445 = x;
        float r4876446 = eps;
        float r4876447 = r4876445 + r4876446;
        float r4876448 = sin(r4876447);
        float r4876449 = sin(r4876445);
        float r4876450 = r4876448 - r4876449;
        return r4876450;
}

double f_id(double x, double eps) {
        double r4876451 = x;
        double r4876452 = eps;
        double r4876453 = r4876451 + r4876452;
        double r4876454 = sin(r4876453);
        double r4876455 = sin(r4876451);
        double r4876456 = r4876454 - r4876455;
        return r4876456;
}


double f_of(float x, float eps) {
        float r4876457 = eps;
        float r4876458 = -1.4522400974249473e-14f;
        bool r4876459 = r4876457 <= r4876458;
        float r4876460 = x;
        float r4876461 = sin(r4876460);
        float r4876462 = cos(r4876457);
        float r4876463 = r4876461 * r4876462;
        float r4876464 = cos(r4876460);
        float r4876465 = sin(r4876457);
        float r4876466 = r4876464 * r4876465;
        float r4876467 = r4876463 + r4876466;
        float r4876468 = r4876467 - r4876461;
        float r4876469 = 3.633761810222842e-07f;
        bool r4876470 = r4876457 <= r4876469;
        float r4876471 = 2.0f;
        float r4876472 = r4876457 / r4876471;
        float r4876473 = sin(r4876472);
        float r4876474 = r4876460 + r4876460;
        float r4876475 = r4876457 + r4876474;
        float r4876476 = r4876475 / r4876471;
        float r4876477 = cos(r4876476);
        float r4876478 = r4876473 * r4876477;
        float r4876479 = r4876471 * r4876478;
        float r4876480 = r4876470 ? r4876479 : r4876468;
        float r4876481 = r4876459 ? r4876468 : r4876480;
        return r4876481;
}

double f_od(double x, double eps) {
        double r4876482 = eps;
        double r4876483 = -1.4522400974249473e-14;
        bool r4876484 = r4876482 <= r4876483;
        double r4876485 = x;
        double r4876486 = sin(r4876485);
        double r4876487 = cos(r4876482);
        double r4876488 = r4876486 * r4876487;
        double r4876489 = cos(r4876485);
        double r4876490 = sin(r4876482);
        double r4876491 = r4876489 * r4876490;
        double r4876492 = r4876488 + r4876491;
        double r4876493 = r4876492 - r4876486;
        double r4876494 = 3.633761810222842e-07;
        bool r4876495 = r4876482 <= r4876494;
        double r4876496 = 2.0;
        double r4876497 = r4876482 / r4876496;
        double r4876498 = sin(r4876497);
        double r4876499 = r4876485 + r4876485;
        double r4876500 = r4876482 + r4876499;
        double r4876501 = r4876500 / r4876496;
        double r4876502 = cos(r4876501);
        double r4876503 = r4876498 * r4876502;
        double r4876504 = r4876496 * r4876503;
        double r4876505 = r4876495 ? r4876504 : r4876493;
        double r4876506 = r4876484 ? r4876493 : r4876505;
        return r4876506;
}

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 r4876507, r4876508, r4876509, r4876510, r4876511, r4876512;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r4876507);
        mpfr_init(r4876508);
        mpfr_init(r4876509);
        mpfr_init(r4876510);
        mpfr_init(r4876511);
        mpfr_init(r4876512);
}

double f_im(double x, double eps) {
        mpfr_set_d(r4876507, x, MPFR_RNDN);
        mpfr_set_d(r4876508, eps, MPFR_RNDN);
        mpfr_add(r4876509, r4876507, r4876508, MPFR_RNDN);
        mpfr_sin(r4876510, r4876509, MPFR_RNDN);
        mpfr_sin(r4876511, r4876507, MPFR_RNDN);
        mpfr_sub(r4876512, r4876510, r4876511, MPFR_RNDN);
        return mpfr_get_d(r4876512, MPFR_RNDN);
}

static mpfr_t r4876513, r4876514, r4876515, r4876516, r4876517, r4876518, r4876519, r4876520, r4876521, r4876522, r4876523, r4876524, r4876525, r4876526, r4876527, r4876528, r4876529, r4876530, r4876531, r4876532, r4876533, r4876534, r4876535, r4876536, r4876537;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r4876513);
        mpfr_init_set_str(r4876514, "-1.4522400974249473e-14", 10, MPFR_RNDN);
        mpfr_init(r4876515);
        mpfr_init(r4876516);
        mpfr_init(r4876517);
        mpfr_init(r4876518);
        mpfr_init(r4876519);
        mpfr_init(r4876520);
        mpfr_init(r4876521);
        mpfr_init(r4876522);
        mpfr_init(r4876523);
        mpfr_init(r4876524);
        mpfr_init_set_str(r4876525, "3.633761810222842e-07", 10, MPFR_RNDN);
        mpfr_init(r4876526);
        mpfr_init_set_str(r4876527, "2", 10, MPFR_RNDN);
        mpfr_init(r4876528);
        mpfr_init(r4876529);
        mpfr_init(r4876530);
        mpfr_init(r4876531);
        mpfr_init(r4876532);
        mpfr_init(r4876533);
        mpfr_init(r4876534);
        mpfr_init(r4876535);
        mpfr_init(r4876536);
        mpfr_init(r4876537);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r4876513, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r4876515, mpfr_cmp(r4876513, r4876514) <= 0, MPFR_RNDN);
        mpfr_set_d(r4876516, x, MPFR_RNDN);
        mpfr_sin(r4876517, r4876516, MPFR_RNDN);
        mpfr_cos(r4876518, r4876513, MPFR_RNDN);
        mpfr_mul(r4876519, r4876517, r4876518, MPFR_RNDN);
        mpfr_cos(r4876520, r4876516, MPFR_RNDN);
        mpfr_sin(r4876521, r4876513, MPFR_RNDN);
        mpfr_mul(r4876522, r4876520, r4876521, MPFR_RNDN);
        mpfr_add(r4876523, r4876519, r4876522, MPFR_RNDN);
        mpfr_sub(r4876524, r4876523, r4876517, MPFR_RNDN);
        ;
        mpfr_set_si(r4876526, mpfr_cmp(r4876513, r4876525) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r4876528, r4876513, r4876527, MPFR_RNDN);
        mpfr_sin(r4876529, r4876528, MPFR_RNDN);
        mpfr_add(r4876530, r4876516, r4876516, MPFR_RNDN);
        mpfr_add(r4876531, r4876513, r4876530, MPFR_RNDN);
        mpfr_div(r4876532, r4876531, r4876527, MPFR_RNDN);
        mpfr_cos(r4876533, r4876532, MPFR_RNDN);
        mpfr_mul(r4876534, r4876529, r4876533, MPFR_RNDN);
        mpfr_mul(r4876535, r4876527, r4876534, MPFR_RNDN);
        if (mpfr_get_si(r4876526, MPFR_RNDN)) { mpfr_set(r4876536, r4876535, MPFR_RNDN); } else { mpfr_set(r4876536, r4876524, MPFR_RNDN); };
        if (mpfr_get_si(r4876515, MPFR_RNDN)) { mpfr_set(r4876537, r4876524, MPFR_RNDN); } else { mpfr_set(r4876537, r4876536, MPFR_RNDN); };
        return mpfr_get_d(r4876537, MPFR_RNDN);
}

static mpfr_t r4876538, r4876539, r4876540, r4876541, r4876542, r4876543, r4876544, r4876545, r4876546, r4876547, r4876548, r4876549, r4876550, r4876551, r4876552, r4876553, r4876554, r4876555, r4876556, r4876557, r4876558, r4876559, r4876560, r4876561, r4876562;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r4876538);
        mpfr_init_set_str(r4876539, "-1.4522400974249473e-14", 10, MPFR_RNDN);
        mpfr_init(r4876540);
        mpfr_init(r4876541);
        mpfr_init(r4876542);
        mpfr_init(r4876543);
        mpfr_init(r4876544);
        mpfr_init(r4876545);
        mpfr_init(r4876546);
        mpfr_init(r4876547);
        mpfr_init(r4876548);
        mpfr_init(r4876549);
        mpfr_init_set_str(r4876550, "3.633761810222842e-07", 10, MPFR_RNDN);
        mpfr_init(r4876551);
        mpfr_init_set_str(r4876552, "2", 10, MPFR_RNDN);
        mpfr_init(r4876553);
        mpfr_init(r4876554);
        mpfr_init(r4876555);
        mpfr_init(r4876556);
        mpfr_init(r4876557);
        mpfr_init(r4876558);
        mpfr_init(r4876559);
        mpfr_init(r4876560);
        mpfr_init(r4876561);
        mpfr_init(r4876562);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r4876538, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r4876540, mpfr_cmp(r4876538, r4876539) <= 0, MPFR_RNDN);
        mpfr_set_d(r4876541, x, MPFR_RNDN);
        mpfr_sin(r4876542, r4876541, MPFR_RNDN);
        mpfr_cos(r4876543, r4876538, MPFR_RNDN);
        mpfr_mul(r4876544, r4876542, r4876543, MPFR_RNDN);
        mpfr_cos(r4876545, r4876541, MPFR_RNDN);
        mpfr_sin(r4876546, r4876538, MPFR_RNDN);
        mpfr_mul(r4876547, r4876545, r4876546, MPFR_RNDN);
        mpfr_add(r4876548, r4876544, r4876547, MPFR_RNDN);
        mpfr_sub(r4876549, r4876548, r4876542, MPFR_RNDN);
        ;
        mpfr_set_si(r4876551, mpfr_cmp(r4876538, r4876550) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r4876553, r4876538, r4876552, MPFR_RNDN);
        mpfr_sin(r4876554, r4876553, MPFR_RNDN);
        mpfr_add(r4876555, r4876541, r4876541, MPFR_RNDN);
        mpfr_add(r4876556, r4876538, r4876555, MPFR_RNDN);
        mpfr_div(r4876557, r4876556, r4876552, MPFR_RNDN);
        mpfr_cos(r4876558, r4876557, MPFR_RNDN);
        mpfr_mul(r4876559, r4876554, r4876558, MPFR_RNDN);
        mpfr_mul(r4876560, r4876552, r4876559, MPFR_RNDN);
        if (mpfr_get_si(r4876551, MPFR_RNDN)) { mpfr_set(r4876561, r4876560, MPFR_RNDN); } else { mpfr_set(r4876561, r4876549, MPFR_RNDN); };
        if (mpfr_get_si(r4876540, MPFR_RNDN)) { mpfr_set(r4876562, r4876549, MPFR_RNDN); } else { mpfr_set(r4876562, r4876561, MPFR_RNDN); };
        return mpfr_get_d(r4876562, MPFR_RNDN);
}

