#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 r11265 = x;
        float r11266 = eps;
        float r11267 = r11265 + r11266;
        float r11268 = sin(r11267);
        float r11269 = sin(r11265);
        float r11270 = r11268 - r11269;
        return r11270;
}

double f_id(double x, double eps) {
        double r11271 = x;
        double r11272 = eps;
        double r11273 = r11271 + r11272;
        double r11274 = sin(r11273);
        double r11275 = sin(r11271);
        double r11276 = r11274 - r11275;
        return r11276;
}


double f_of(float x, float eps) {
        float r11277 = eps;
        float r11278 = -20280930.749116834;
        bool r11279 = r11277 <= r11278;
        float r11280 = x;
        float r11281 = sin(r11280);
        float r11282 = cos(r11277);
        float r11283 = r11281 * r11282;
        float r11284 = cos(r11280);
        float r11285 = sin(r11277);
        float r11286 = r11284 * r11285;
        float r11287 = r11283 + r11286;
        float r11288 = r11287 - r11281;
        float r11289 = 7.410238064624265e-09;
        bool r11290 = r11277 <= r11289;
        float r11291 = 2;
        float r11292 = r11280 + r11280;
        float r11293 = r11292 + r11277;
        float r11294 = r11293 / r11291;
        float r11295 = cos(r11294);
        float r11296 = r11277 / r11291;
        float r11297 = sin(r11296);
        float r11298 = r11295 * r11297;
        float r11299 = r11291 * r11298;
        float r11300 = r11286 - r11281;
        float r11301 = r11283 + r11300;
        float r11302 = r11290 ? r11299 : r11301;
        float r11303 = r11279 ? r11288 : r11302;
        return r11303;
}

double f_od(double x, double eps) {
        double r11304 = eps;
        double r11305 = -20280930.749116834;
        bool r11306 = r11304 <= r11305;
        double r11307 = x;
        double r11308 = sin(r11307);
        double r11309 = cos(r11304);
        double r11310 = r11308 * r11309;
        double r11311 = cos(r11307);
        double r11312 = sin(r11304);
        double r11313 = r11311 * r11312;
        double r11314 = r11310 + r11313;
        double r11315 = r11314 - r11308;
        double r11316 = 7.410238064624265e-09;
        bool r11317 = r11304 <= r11316;
        double r11318 = 2;
        double r11319 = r11307 + r11307;
        double r11320 = r11319 + r11304;
        double r11321 = r11320 / r11318;
        double r11322 = cos(r11321);
        double r11323 = r11304 / r11318;
        double r11324 = sin(r11323);
        double r11325 = r11322 * r11324;
        double r11326 = r11318 * r11325;
        double r11327 = r11313 - r11308;
        double r11328 = r11310 + r11327;
        double r11329 = r11317 ? r11326 : r11328;
        double r11330 = r11306 ? r11315 : r11329;
        return r11330;
}

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 r11331, r11332, r11333, r11334, r11335, r11336;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11331);
        mpfr_init(r11332);
        mpfr_init(r11333);
        mpfr_init(r11334);
        mpfr_init(r11335);
        mpfr_init(r11336);
}

double f_im(double x, double eps) {
        mpfr_set_d(r11331, x, MPFR_RNDN);
        mpfr_set_d(r11332, eps, MPFR_RNDN);
        mpfr_add(r11333, r11331, r11332, MPFR_RNDN);
        mpfr_sin(r11334, r11333, MPFR_RNDN);
        mpfr_sin(r11335, r11331, MPFR_RNDN);
        mpfr_sub(r11336, r11334, r11335, MPFR_RNDN);
        return mpfr_get_d(r11336, MPFR_RNDN);
}

static mpfr_t r11337, r11338, r11339, r11340, r11341, r11342, r11343, r11344, r11345, r11346, r11347, r11348, r11349, r11350, r11351, r11352, r11353, r11354, r11355, r11356, r11357, r11358, r11359, r11360, r11361, r11362, r11363;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11337);
        mpfr_init_set_str(r11338, "-20280930.749116834", 10, MPFR_RNDN);
        mpfr_init(r11339);
        mpfr_init(r11340);
        mpfr_init(r11341);
        mpfr_init(r11342);
        mpfr_init(r11343);
        mpfr_init(r11344);
        mpfr_init(r11345);
        mpfr_init(r11346);
        mpfr_init(r11347);
        mpfr_init(r11348);
        mpfr_init_set_str(r11349, "7.410238064624265e-09", 10, MPFR_RNDN);
        mpfr_init(r11350);
        mpfr_init_set_str(r11351, "2", 10, MPFR_RNDN);
        mpfr_init(r11352);
        mpfr_init(r11353);
        mpfr_init(r11354);
        mpfr_init(r11355);
        mpfr_init(r11356);
        mpfr_init(r11357);
        mpfr_init(r11358);
        mpfr_init(r11359);
        mpfr_init(r11360);
        mpfr_init(r11361);
        mpfr_init(r11362);
        mpfr_init(r11363);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r11337, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r11339, mpfr_cmp(r11337, r11338) <= 0, MPFR_RNDN);
        mpfr_set_d(r11340, x, MPFR_RNDN);
        mpfr_sin(r11341, r11340, MPFR_RNDN);
        mpfr_cos(r11342, r11337, MPFR_RNDN);
        mpfr_mul(r11343, r11341, r11342, MPFR_RNDN);
        mpfr_cos(r11344, r11340, MPFR_RNDN);
        mpfr_sin(r11345, r11337, MPFR_RNDN);
        mpfr_mul(r11346, r11344, r11345, MPFR_RNDN);
        mpfr_add(r11347, r11343, r11346, MPFR_RNDN);
        mpfr_sub(r11348, r11347, r11341, MPFR_RNDN);
        ;
        mpfr_set_si(r11350, mpfr_cmp(r11337, r11349) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r11352, r11340, r11340, MPFR_RNDN);
        mpfr_add(r11353, r11352, r11337, MPFR_RNDN);
        mpfr_div(r11354, r11353, r11351, MPFR_RNDN);
        mpfr_cos(r11355, r11354, MPFR_RNDN);
        mpfr_div(r11356, r11337, r11351, MPFR_RNDN);
        mpfr_sin(r11357, r11356, MPFR_RNDN);
        mpfr_mul(r11358, r11355, r11357, MPFR_RNDN);
        mpfr_mul(r11359, r11351, r11358, MPFR_RNDN);
        mpfr_sub(r11360, r11346, r11341, MPFR_RNDN);
        mpfr_add(r11361, r11343, r11360, MPFR_RNDN);
        if (mpfr_get_si(r11350, MPFR_RNDN)) { mpfr_set(r11362, r11359, MPFR_RNDN); } else { mpfr_set(r11362, r11361, MPFR_RNDN); };
        if (mpfr_get_si(r11339, MPFR_RNDN)) { mpfr_set(r11363, r11348, MPFR_RNDN); } else { mpfr_set(r11363, r11362, MPFR_RNDN); };
        return mpfr_get_d(r11363, MPFR_RNDN);
}

static mpfr_t r11364, r11365, r11366, r11367, r11368, r11369, r11370, r11371, r11372, r11373, r11374, r11375, r11376, r11377, r11378, r11379, r11380, r11381, r11382, r11383, r11384, r11385, r11386, r11387, r11388, r11389, r11390;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11364);
        mpfr_init_set_str(r11365, "-20280930.749116834", 10, MPFR_RNDN);
        mpfr_init(r11366);
        mpfr_init(r11367);
        mpfr_init(r11368);
        mpfr_init(r11369);
        mpfr_init(r11370);
        mpfr_init(r11371);
        mpfr_init(r11372);
        mpfr_init(r11373);
        mpfr_init(r11374);
        mpfr_init(r11375);
        mpfr_init_set_str(r11376, "7.410238064624265e-09", 10, MPFR_RNDN);
        mpfr_init(r11377);
        mpfr_init_set_str(r11378, "2", 10, MPFR_RNDN);
        mpfr_init(r11379);
        mpfr_init(r11380);
        mpfr_init(r11381);
        mpfr_init(r11382);
        mpfr_init(r11383);
        mpfr_init(r11384);
        mpfr_init(r11385);
        mpfr_init(r11386);
        mpfr_init(r11387);
        mpfr_init(r11388);
        mpfr_init(r11389);
        mpfr_init(r11390);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r11364, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r11366, mpfr_cmp(r11364, r11365) <= 0, MPFR_RNDN);
        mpfr_set_d(r11367, x, MPFR_RNDN);
        mpfr_sin(r11368, r11367, MPFR_RNDN);
        mpfr_cos(r11369, r11364, MPFR_RNDN);
        mpfr_mul(r11370, r11368, r11369, MPFR_RNDN);
        mpfr_cos(r11371, r11367, MPFR_RNDN);
        mpfr_sin(r11372, r11364, MPFR_RNDN);
        mpfr_mul(r11373, r11371, r11372, MPFR_RNDN);
        mpfr_add(r11374, r11370, r11373, MPFR_RNDN);
        mpfr_sub(r11375, r11374, r11368, MPFR_RNDN);
        ;
        mpfr_set_si(r11377, mpfr_cmp(r11364, r11376) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r11379, r11367, r11367, MPFR_RNDN);
        mpfr_add(r11380, r11379, r11364, MPFR_RNDN);
        mpfr_div(r11381, r11380, r11378, MPFR_RNDN);
        mpfr_cos(r11382, r11381, MPFR_RNDN);
        mpfr_div(r11383, r11364, r11378, MPFR_RNDN);
        mpfr_sin(r11384, r11383, MPFR_RNDN);
        mpfr_mul(r11385, r11382, r11384, MPFR_RNDN);
        mpfr_mul(r11386, r11378, r11385, MPFR_RNDN);
        mpfr_sub(r11387, r11373, r11368, MPFR_RNDN);
        mpfr_add(r11388, r11370, r11387, MPFR_RNDN);
        if (mpfr_get_si(r11377, MPFR_RNDN)) { mpfr_set(r11389, r11386, MPFR_RNDN); } else { mpfr_set(r11389, r11388, MPFR_RNDN); };
        if (mpfr_get_si(r11366, MPFR_RNDN)) { mpfr_set(r11390, r11375, MPFR_RNDN); } else { mpfr_set(r11390, r11389, MPFR_RNDN); };
        return mpfr_get_d(r11390, MPFR_RNDN);
}

