#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 r10982 = x;
        float r10983 = eps;
        float r10984 = r10982 + r10983;
        float r10985 = sin(r10984);
        float r10986 = sin(r10982);
        float r10987 = r10985 - r10986;
        return r10987;
}

double f_id(double x, double eps) {
        double r10988 = x;
        double r10989 = eps;
        double r10990 = r10988 + r10989;
        double r10991 = sin(r10990);
        double r10992 = sin(r10988);
        double r10993 = r10991 - r10992;
        return r10993;
}


double f_of(float x, float eps) {
        float r10994 = eps;
        float r10995 = -20280930.749116834;
        bool r10996 = r10994 <= r10995;
        float r10997 = x;
        float r10998 = sin(r10997);
        float r10999 = cos(r10994);
        float r11000 = r10998 * r10999;
        float r11001 = cos(r10997);
        float r11002 = sin(r10994);
        float r11003 = r11001 * r11002;
        float r11004 = r11000 + r11003;
        float r11005 = r11004 - r10998;
        float r11006 = 7.410238064624265e-09;
        bool r11007 = r10994 <= r11006;
        float r11008 = 2;
        float r11009 = r10997 + r10997;
        float r11010 = r11009 + r10994;
        float r11011 = r11010 / r11008;
        float r11012 = cos(r11011);
        float r11013 = r10994 / r11008;
        float r11014 = sin(r11013);
        float r11015 = r11012 * r11014;
        float r11016 = r11008 * r11015;
        float r11017 = r11003 - r10998;
        float r11018 = r11000 + r11017;
        float r11019 = r11007 ? r11016 : r11018;
        float r11020 = r10996 ? r11005 : r11019;
        return r11020;
}

double f_od(double x, double eps) {
        double r11021 = eps;
        double r11022 = -20280930.749116834;
        bool r11023 = r11021 <= r11022;
        double r11024 = x;
        double r11025 = sin(r11024);
        double r11026 = cos(r11021);
        double r11027 = r11025 * r11026;
        double r11028 = cos(r11024);
        double r11029 = sin(r11021);
        double r11030 = r11028 * r11029;
        double r11031 = r11027 + r11030;
        double r11032 = r11031 - r11025;
        double r11033 = 7.410238064624265e-09;
        bool r11034 = r11021 <= r11033;
        double r11035 = 2;
        double r11036 = r11024 + r11024;
        double r11037 = r11036 + r11021;
        double r11038 = r11037 / r11035;
        double r11039 = cos(r11038);
        double r11040 = r11021 / r11035;
        double r11041 = sin(r11040);
        double r11042 = r11039 * r11041;
        double r11043 = r11035 * r11042;
        double r11044 = r11030 - r11025;
        double r11045 = r11027 + r11044;
        double r11046 = r11034 ? r11043 : r11045;
        double r11047 = r11023 ? r11032 : r11046;
        return r11047;
}

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 r11048, r11049, r11050, r11051, r11052, r11053;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11048);
        mpfr_init(r11049);
        mpfr_init(r11050);
        mpfr_init(r11051);
        mpfr_init(r11052);
        mpfr_init(r11053);
}

double f_im(double x, double eps) {
        mpfr_set_d(r11048, x, MPFR_RNDN);
        mpfr_set_d(r11049, eps, MPFR_RNDN);
        mpfr_add(r11050, r11048, r11049, MPFR_RNDN);
        mpfr_sin(r11051, r11050, MPFR_RNDN);
        mpfr_sin(r11052, r11048, MPFR_RNDN);
        mpfr_sub(r11053, r11051, r11052, MPFR_RNDN);
        return mpfr_get_d(r11053, MPFR_RNDN);
}

static mpfr_t r11054, r11055, r11056, r11057, r11058, r11059, r11060, r11061, r11062, r11063, r11064, r11065, r11066, r11067, r11068, r11069, r11070, r11071, r11072, r11073, r11074, r11075, r11076, r11077, r11078, r11079, r11080;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11054);
        mpfr_init_set_str(r11055, "-20280930.749116834", 10, MPFR_RNDN);
        mpfr_init(r11056);
        mpfr_init(r11057);
        mpfr_init(r11058);
        mpfr_init(r11059);
        mpfr_init(r11060);
        mpfr_init(r11061);
        mpfr_init(r11062);
        mpfr_init(r11063);
        mpfr_init(r11064);
        mpfr_init(r11065);
        mpfr_init_set_str(r11066, "7.410238064624265e-09", 10, MPFR_RNDN);
        mpfr_init(r11067);
        mpfr_init_set_str(r11068, "2", 10, MPFR_RNDN);
        mpfr_init(r11069);
        mpfr_init(r11070);
        mpfr_init(r11071);
        mpfr_init(r11072);
        mpfr_init(r11073);
        mpfr_init(r11074);
        mpfr_init(r11075);
        mpfr_init(r11076);
        mpfr_init(r11077);
        mpfr_init(r11078);
        mpfr_init(r11079);
        mpfr_init(r11080);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r11054, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r11056, mpfr_cmp(r11054, r11055) <= 0, MPFR_RNDN);
        mpfr_set_d(r11057, x, MPFR_RNDN);
        mpfr_sin(r11058, r11057, MPFR_RNDN);
        mpfr_cos(r11059, r11054, MPFR_RNDN);
        mpfr_mul(r11060, r11058, r11059, MPFR_RNDN);
        mpfr_cos(r11061, r11057, MPFR_RNDN);
        mpfr_sin(r11062, r11054, MPFR_RNDN);
        mpfr_mul(r11063, r11061, r11062, MPFR_RNDN);
        mpfr_add(r11064, r11060, r11063, MPFR_RNDN);
        mpfr_sub(r11065, r11064, r11058, MPFR_RNDN);
        ;
        mpfr_set_si(r11067, mpfr_cmp(r11054, r11066) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r11069, r11057, r11057, MPFR_RNDN);
        mpfr_add(r11070, r11069, r11054, MPFR_RNDN);
        mpfr_div(r11071, r11070, r11068, MPFR_RNDN);
        mpfr_cos(r11072, r11071, MPFR_RNDN);
        mpfr_div(r11073, r11054, r11068, MPFR_RNDN);
        mpfr_sin(r11074, r11073, MPFR_RNDN);
        mpfr_mul(r11075, r11072, r11074, MPFR_RNDN);
        mpfr_mul(r11076, r11068, r11075, MPFR_RNDN);
        mpfr_sub(r11077, r11063, r11058, MPFR_RNDN);
        mpfr_add(r11078, r11060, r11077, MPFR_RNDN);
        if (mpfr_get_si(r11067, MPFR_RNDN)) { mpfr_set(r11079, r11076, MPFR_RNDN); } else { mpfr_set(r11079, r11078, MPFR_RNDN); };
        if (mpfr_get_si(r11056, MPFR_RNDN)) { mpfr_set(r11080, r11065, MPFR_RNDN); } else { mpfr_set(r11080, r11079, MPFR_RNDN); };
        return mpfr_get_d(r11080, MPFR_RNDN);
}

static mpfr_t r11081, r11082, r11083, r11084, r11085, r11086, r11087, r11088, r11089, r11090, r11091, r11092, r11093, r11094, r11095, r11096, r11097, r11098, r11099, r11100, r11101, r11102, r11103, r11104, r11105, r11106, r11107;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11081);
        mpfr_init_set_str(r11082, "-20280930.749116834", 10, MPFR_RNDN);
        mpfr_init(r11083);
        mpfr_init(r11084);
        mpfr_init(r11085);
        mpfr_init(r11086);
        mpfr_init(r11087);
        mpfr_init(r11088);
        mpfr_init(r11089);
        mpfr_init(r11090);
        mpfr_init(r11091);
        mpfr_init(r11092);
        mpfr_init_set_str(r11093, "7.410238064624265e-09", 10, MPFR_RNDN);
        mpfr_init(r11094);
        mpfr_init_set_str(r11095, "2", 10, MPFR_RNDN);
        mpfr_init(r11096);
        mpfr_init(r11097);
        mpfr_init(r11098);
        mpfr_init(r11099);
        mpfr_init(r11100);
        mpfr_init(r11101);
        mpfr_init(r11102);
        mpfr_init(r11103);
        mpfr_init(r11104);
        mpfr_init(r11105);
        mpfr_init(r11106);
        mpfr_init(r11107);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r11081, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r11083, mpfr_cmp(r11081, r11082) <= 0, MPFR_RNDN);
        mpfr_set_d(r11084, x, MPFR_RNDN);
        mpfr_sin(r11085, r11084, MPFR_RNDN);
        mpfr_cos(r11086, r11081, MPFR_RNDN);
        mpfr_mul(r11087, r11085, r11086, MPFR_RNDN);
        mpfr_cos(r11088, r11084, MPFR_RNDN);
        mpfr_sin(r11089, r11081, MPFR_RNDN);
        mpfr_mul(r11090, r11088, r11089, MPFR_RNDN);
        mpfr_add(r11091, r11087, r11090, MPFR_RNDN);
        mpfr_sub(r11092, r11091, r11085, MPFR_RNDN);
        ;
        mpfr_set_si(r11094, mpfr_cmp(r11081, r11093) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r11096, r11084, r11084, MPFR_RNDN);
        mpfr_add(r11097, r11096, r11081, MPFR_RNDN);
        mpfr_div(r11098, r11097, r11095, MPFR_RNDN);
        mpfr_cos(r11099, r11098, MPFR_RNDN);
        mpfr_div(r11100, r11081, r11095, MPFR_RNDN);
        mpfr_sin(r11101, r11100, MPFR_RNDN);
        mpfr_mul(r11102, r11099, r11101, MPFR_RNDN);
        mpfr_mul(r11103, r11095, r11102, MPFR_RNDN);
        mpfr_sub(r11104, r11090, r11085, MPFR_RNDN);
        mpfr_add(r11105, r11087, r11104, MPFR_RNDN);
        if (mpfr_get_si(r11094, MPFR_RNDN)) { mpfr_set(r11106, r11103, MPFR_RNDN); } else { mpfr_set(r11106, r11105, MPFR_RNDN); };
        if (mpfr_get_si(r11083, MPFR_RNDN)) { mpfr_set(r11107, r11092, MPFR_RNDN); } else { mpfr_set(r11107, r11106, MPFR_RNDN); };
        return mpfr_get_d(r11107, MPFR_RNDN);
}

