#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 r6216311 = x;
        float r6216312 = eps;
        float r6216313 = r6216311 + r6216312;
        float r6216314 = sin(r6216313);
        float r6216315 = sin(r6216311);
        float r6216316 = r6216314 - r6216315;
        return r6216316;
}

double f_id(double x, double eps) {
        double r6216317 = x;
        double r6216318 = eps;
        double r6216319 = r6216317 + r6216318;
        double r6216320 = sin(r6216319);
        double r6216321 = sin(r6216317);
        double r6216322 = r6216320 - r6216321;
        return r6216322;
}


double f_of(float x, float eps) {
        float r6216323 = eps;
        float r6216324 = -1.1299903161728624e-08;
        bool r6216325 = r6216323 <= r6216324;
        float r6216326 = x;
        float r6216327 = sin(r6216326);
        float r6216328 = cos(r6216323);
        float r6216329 = r6216327 * r6216328;
        float r6216330 = cos(r6216326);
        float r6216331 = sin(r6216323);
        float r6216332 = r6216330 * r6216331;
        float r6216333 = r6216332 - r6216327;
        float r6216334 = r6216329 + r6216333;
        float r6216335 = 1.1748598661764719e-08;
        bool r6216336 = r6216323 <= r6216335;
        float r6216337 = 2;
        float r6216338 = r6216323 / r6216337;
        float r6216339 = sin(r6216338);
        float r6216340 = r6216326 + r6216326;
        float r6216341 = r6216323 + r6216340;
        float r6216342 = r6216341 / r6216337;
        float r6216343 = cos(r6216342);
        float r6216344 = r6216339 * r6216343;
        float r6216345 = r6216337 * r6216344;
        float r6216346 = r6216329 + r6216332;
        float r6216347 = r6216346 - r6216327;
        float r6216348 = r6216336 ? r6216345 : r6216347;
        float r6216349 = r6216325 ? r6216334 : r6216348;
        return r6216349;
}

double f_od(double x, double eps) {
        double r6216350 = eps;
        double r6216351 = -1.1299903161728624e-08;
        bool r6216352 = r6216350 <= r6216351;
        double r6216353 = x;
        double r6216354 = sin(r6216353);
        double r6216355 = cos(r6216350);
        double r6216356 = r6216354 * r6216355;
        double r6216357 = cos(r6216353);
        double r6216358 = sin(r6216350);
        double r6216359 = r6216357 * r6216358;
        double r6216360 = r6216359 - r6216354;
        double r6216361 = r6216356 + r6216360;
        double r6216362 = 1.1748598661764719e-08;
        bool r6216363 = r6216350 <= r6216362;
        double r6216364 = 2;
        double r6216365 = r6216350 / r6216364;
        double r6216366 = sin(r6216365);
        double r6216367 = r6216353 + r6216353;
        double r6216368 = r6216350 + r6216367;
        double r6216369 = r6216368 / r6216364;
        double r6216370 = cos(r6216369);
        double r6216371 = r6216366 * r6216370;
        double r6216372 = r6216364 * r6216371;
        double r6216373 = r6216356 + r6216359;
        double r6216374 = r6216373 - r6216354;
        double r6216375 = r6216363 ? r6216372 : r6216374;
        double r6216376 = r6216352 ? r6216361 : r6216375;
        return r6216376;
}

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 r6216377, r6216378, r6216379, r6216380, r6216381, r6216382;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r6216377);
        mpfr_init(r6216378);
        mpfr_init(r6216379);
        mpfr_init(r6216380);
        mpfr_init(r6216381);
        mpfr_init(r6216382);
}

double f_im(double x, double eps) {
        mpfr_set_d(r6216377, x, MPFR_RNDN);
        mpfr_set_d(r6216378, eps, MPFR_RNDN);
        mpfr_add(r6216379, r6216377, r6216378, MPFR_RNDN);
        mpfr_sin(r6216380, r6216379, MPFR_RNDN);
        mpfr_sin(r6216381, r6216377, MPFR_RNDN);
        mpfr_sub(r6216382, r6216380, r6216381, MPFR_RNDN);
        return mpfr_get_d(r6216382, MPFR_RNDN);
}

static mpfr_t r6216383, r6216384, r6216385, r6216386, r6216387, r6216388, r6216389, r6216390, r6216391, r6216392, r6216393, r6216394, r6216395, r6216396, r6216397, r6216398, r6216399, r6216400, r6216401, r6216402, r6216403, r6216404, r6216405, r6216406, r6216407, r6216408, r6216409;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r6216383);
        mpfr_init_set_str(r6216384, "-1.1299903161728624e-08", 10, MPFR_RNDN);
        mpfr_init(r6216385);
        mpfr_init(r6216386);
        mpfr_init(r6216387);
        mpfr_init(r6216388);
        mpfr_init(r6216389);
        mpfr_init(r6216390);
        mpfr_init(r6216391);
        mpfr_init(r6216392);
        mpfr_init(r6216393);
        mpfr_init(r6216394);
        mpfr_init_set_str(r6216395, "1.1748598661764719e-08", 10, MPFR_RNDN);
        mpfr_init(r6216396);
        mpfr_init_set_str(r6216397, "2", 10, MPFR_RNDN);
        mpfr_init(r6216398);
        mpfr_init(r6216399);
        mpfr_init(r6216400);
        mpfr_init(r6216401);
        mpfr_init(r6216402);
        mpfr_init(r6216403);
        mpfr_init(r6216404);
        mpfr_init(r6216405);
        mpfr_init(r6216406);
        mpfr_init(r6216407);
        mpfr_init(r6216408);
        mpfr_init(r6216409);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r6216383, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r6216385, mpfr_cmp(r6216383, r6216384) <= 0, MPFR_RNDN);
        mpfr_set_d(r6216386, x, MPFR_RNDN);
        mpfr_sin(r6216387, r6216386, MPFR_RNDN);
        mpfr_cos(r6216388, r6216383, MPFR_RNDN);
        mpfr_mul(r6216389, r6216387, r6216388, MPFR_RNDN);
        mpfr_cos(r6216390, r6216386, MPFR_RNDN);
        mpfr_sin(r6216391, r6216383, MPFR_RNDN);
        mpfr_mul(r6216392, r6216390, r6216391, MPFR_RNDN);
        mpfr_sub(r6216393, r6216392, r6216387, MPFR_RNDN);
        mpfr_add(r6216394, r6216389, r6216393, MPFR_RNDN);
        ;
        mpfr_set_si(r6216396, mpfr_cmp(r6216383, r6216395) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r6216398, r6216383, r6216397, MPFR_RNDN);
        mpfr_sin(r6216399, r6216398, MPFR_RNDN);
        mpfr_add(r6216400, r6216386, r6216386, MPFR_RNDN);
        mpfr_add(r6216401, r6216383, r6216400, MPFR_RNDN);
        mpfr_div(r6216402, r6216401, r6216397, MPFR_RNDN);
        mpfr_cos(r6216403, r6216402, MPFR_RNDN);
        mpfr_mul(r6216404, r6216399, r6216403, MPFR_RNDN);
        mpfr_mul(r6216405, r6216397, r6216404, MPFR_RNDN);
        mpfr_add(r6216406, r6216389, r6216392, MPFR_RNDN);
        mpfr_sub(r6216407, r6216406, r6216387, MPFR_RNDN);
        if (mpfr_get_si(r6216396, MPFR_RNDN)) { mpfr_set(r6216408, r6216405, MPFR_RNDN); } else { mpfr_set(r6216408, r6216407, MPFR_RNDN); };
        if (mpfr_get_si(r6216385, MPFR_RNDN)) { mpfr_set(r6216409, r6216394, MPFR_RNDN); } else { mpfr_set(r6216409, r6216408, MPFR_RNDN); };
        return mpfr_get_d(r6216409, MPFR_RNDN);
}

static mpfr_t r6216410, r6216411, r6216412, r6216413, r6216414, r6216415, r6216416, r6216417, r6216418, r6216419, r6216420, r6216421, r6216422, r6216423, r6216424, r6216425, r6216426, r6216427, r6216428, r6216429, r6216430, r6216431, r6216432, r6216433, r6216434, r6216435, r6216436;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r6216410);
        mpfr_init_set_str(r6216411, "-1.1299903161728624e-08", 10, MPFR_RNDN);
        mpfr_init(r6216412);
        mpfr_init(r6216413);
        mpfr_init(r6216414);
        mpfr_init(r6216415);
        mpfr_init(r6216416);
        mpfr_init(r6216417);
        mpfr_init(r6216418);
        mpfr_init(r6216419);
        mpfr_init(r6216420);
        mpfr_init(r6216421);
        mpfr_init_set_str(r6216422, "1.1748598661764719e-08", 10, MPFR_RNDN);
        mpfr_init(r6216423);
        mpfr_init_set_str(r6216424, "2", 10, MPFR_RNDN);
        mpfr_init(r6216425);
        mpfr_init(r6216426);
        mpfr_init(r6216427);
        mpfr_init(r6216428);
        mpfr_init(r6216429);
        mpfr_init(r6216430);
        mpfr_init(r6216431);
        mpfr_init(r6216432);
        mpfr_init(r6216433);
        mpfr_init(r6216434);
        mpfr_init(r6216435);
        mpfr_init(r6216436);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r6216410, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r6216412, mpfr_cmp(r6216410, r6216411) <= 0, MPFR_RNDN);
        mpfr_set_d(r6216413, x, MPFR_RNDN);
        mpfr_sin(r6216414, r6216413, MPFR_RNDN);
        mpfr_cos(r6216415, r6216410, MPFR_RNDN);
        mpfr_mul(r6216416, r6216414, r6216415, MPFR_RNDN);
        mpfr_cos(r6216417, r6216413, MPFR_RNDN);
        mpfr_sin(r6216418, r6216410, MPFR_RNDN);
        mpfr_mul(r6216419, r6216417, r6216418, MPFR_RNDN);
        mpfr_sub(r6216420, r6216419, r6216414, MPFR_RNDN);
        mpfr_add(r6216421, r6216416, r6216420, MPFR_RNDN);
        ;
        mpfr_set_si(r6216423, mpfr_cmp(r6216410, r6216422) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r6216425, r6216410, r6216424, MPFR_RNDN);
        mpfr_sin(r6216426, r6216425, MPFR_RNDN);
        mpfr_add(r6216427, r6216413, r6216413, MPFR_RNDN);
        mpfr_add(r6216428, r6216410, r6216427, MPFR_RNDN);
        mpfr_div(r6216429, r6216428, r6216424, MPFR_RNDN);
        mpfr_cos(r6216430, r6216429, MPFR_RNDN);
        mpfr_mul(r6216431, r6216426, r6216430, MPFR_RNDN);
        mpfr_mul(r6216432, r6216424, r6216431, MPFR_RNDN);
        mpfr_add(r6216433, r6216416, r6216419, MPFR_RNDN);
        mpfr_sub(r6216434, r6216433, r6216414, MPFR_RNDN);
        if (mpfr_get_si(r6216423, MPFR_RNDN)) { mpfr_set(r6216435, r6216432, MPFR_RNDN); } else { mpfr_set(r6216435, r6216434, MPFR_RNDN); };
        if (mpfr_get_si(r6216412, MPFR_RNDN)) { mpfr_set(r6216436, r6216421, MPFR_RNDN); } else { mpfr_set(r6216436, r6216435, MPFR_RNDN); };
        return mpfr_get_d(r6216436, MPFR_RNDN);
}

