#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 r26930 = x;
        float r26931 = eps;
        float r26932 = r26930 + r26931;
        float r26933 = sin(r26932);
        float r26934 = sin(r26930);
        float r26935 = r26933 - r26934;
        return r26935;
}

double f_id(double x, double eps) {
        double r26936 = x;
        double r26937 = eps;
        double r26938 = r26936 + r26937;
        double r26939 = sin(r26938);
        double r26940 = sin(r26936);
        double r26941 = r26939 - r26940;
        return r26941;
}


double f_of(float x, float eps) {
        float r26942 = x;
        float r26943 = sin(r26942);
        float r26944 = eps;
        float r26945 = cos(r26944);
        float r26946 = r26943 * r26945;
        float r26947 = cos(r26942);
        float r26948 = sin(r26944);
        float r26949 = r26947 * r26948;
        float r26950 = r26949 - r26943;
        float r26951 = r26946 + r26950;
        float r26952 = -0.08569959708811534;
        bool r26953 = r26951 <= r26952;
        float r26954 = r26946 + r26949;
        float r26955 = r26954 - r26943;
        float r26956 = 9.378113494905201e-139;
        bool r26957 = r26951 <= r26956;
        float r26958 = 2;
        float r26959 = r26944 / r26958;
        float r26960 = sin(r26959);
        float r26961 = r26944 + r26942;
        float r26962 = r26942 + r26961;
        float r26963 = r26962 / r26958;
        float r26964 = cos(r26963);
        float r26965 = r26960 * r26964;
        float r26966 = r26958 * r26965;
        float r26967 = r26957 ? r26966 : r26955;
        float r26968 = r26953 ? r26955 : r26967;
        return r26968;
}

double f_od(double x, double eps) {
        double r26969 = x;
        double r26970 = sin(r26969);
        double r26971 = eps;
        double r26972 = cos(r26971);
        double r26973 = r26970 * r26972;
        double r26974 = cos(r26969);
        double r26975 = sin(r26971);
        double r26976 = r26974 * r26975;
        double r26977 = r26976 - r26970;
        double r26978 = r26973 + r26977;
        double r26979 = -0.08569959708811534;
        bool r26980 = r26978 <= r26979;
        double r26981 = r26973 + r26976;
        double r26982 = r26981 - r26970;
        double r26983 = 9.378113494905201e-139;
        bool r26984 = r26978 <= r26983;
        double r26985 = 2;
        double r26986 = r26971 / r26985;
        double r26987 = sin(r26986);
        double r26988 = r26971 + r26969;
        double r26989 = r26969 + r26988;
        double r26990 = r26989 / r26985;
        double r26991 = cos(r26990);
        double r26992 = r26987 * r26991;
        double r26993 = r26985 * r26992;
        double r26994 = r26984 ? r26993 : r26982;
        double r26995 = r26980 ? r26982 : r26994;
        return r26995;
}

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 r26996, r26997, r26998, r26999, r27000, r27001;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r26996);
        mpfr_init(r26997);
        mpfr_init(r26998);
        mpfr_init(r26999);
        mpfr_init(r27000);
        mpfr_init(r27001);
}

double f_im(double x, double eps) {
        mpfr_set_d(r26996, x, MPFR_RNDN);
        mpfr_set_d(r26997, eps, MPFR_RNDN);
        mpfr_add(r26998, r26996, r26997, MPFR_RNDN);
        mpfr_sin(r26999, r26998, MPFR_RNDN);
        mpfr_sin(r27000, r26996, MPFR_RNDN);
        mpfr_sub(r27001, r26999, r27000, MPFR_RNDN);
        return mpfr_get_d(r27001, MPFR_RNDN);
}

static mpfr_t r27002, r27003, r27004, r27005, r27006, r27007, r27008, r27009, r27010, r27011, r27012, r27013, r27014, r27015, r27016, r27017, r27018, r27019, r27020, r27021, r27022, r27023, r27024, r27025, r27026, r27027, r27028;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27002);
        mpfr_init(r27003);
        mpfr_init(r27004);
        mpfr_init(r27005);
        mpfr_init(r27006);
        mpfr_init(r27007);
        mpfr_init(r27008);
        mpfr_init(r27009);
        mpfr_init(r27010);
        mpfr_init(r27011);
        mpfr_init_set_str(r27012, "-0.08569959708811534", 10, MPFR_RNDN);
        mpfr_init(r27013);
        mpfr_init(r27014);
        mpfr_init(r27015);
        mpfr_init_set_str(r27016, "9.378113494905201e-139", 10, MPFR_RNDN);
        mpfr_init(r27017);
        mpfr_init_set_str(r27018, "2", 10, MPFR_RNDN);
        mpfr_init(r27019);
        mpfr_init(r27020);
        mpfr_init(r27021);
        mpfr_init(r27022);
        mpfr_init(r27023);
        mpfr_init(r27024);
        mpfr_init(r27025);
        mpfr_init(r27026);
        mpfr_init(r27027);
        mpfr_init(r27028);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r27002, x, MPFR_RNDN);
        mpfr_sin(r27003, r27002, MPFR_RNDN);
        mpfr_set_d(r27004, eps, MPFR_RNDN);
        mpfr_cos(r27005, r27004, MPFR_RNDN);
        mpfr_mul(r27006, r27003, r27005, MPFR_RNDN);
        mpfr_cos(r27007, r27002, MPFR_RNDN);
        mpfr_sin(r27008, r27004, MPFR_RNDN);
        mpfr_mul(r27009, r27007, r27008, MPFR_RNDN);
        mpfr_sub(r27010, r27009, r27003, MPFR_RNDN);
        mpfr_add(r27011, r27006, r27010, MPFR_RNDN);
        ;
        mpfr_set_si(r27013, mpfr_cmp(r27011, r27012) <= 0, MPFR_RNDN);
        mpfr_add(r27014, r27006, r27009, MPFR_RNDN);
        mpfr_sub(r27015, r27014, r27003, MPFR_RNDN);
        ;
        mpfr_set_si(r27017, mpfr_cmp(r27011, r27016) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27019, r27004, r27018, MPFR_RNDN);
        mpfr_sin(r27020, r27019, MPFR_RNDN);
        mpfr_add(r27021, r27004, r27002, MPFR_RNDN);
        mpfr_add(r27022, r27002, r27021, MPFR_RNDN);
        mpfr_div(r27023, r27022, r27018, MPFR_RNDN);
        mpfr_cos(r27024, r27023, MPFR_RNDN);
        mpfr_mul(r27025, r27020, r27024, MPFR_RNDN);
        mpfr_mul(r27026, r27018, r27025, MPFR_RNDN);
        if (mpfr_get_si(r27017, MPFR_RNDN)) { mpfr_set(r27027, r27026, MPFR_RNDN); } else { mpfr_set(r27027, r27015, MPFR_RNDN); };
        if (mpfr_get_si(r27013, MPFR_RNDN)) { mpfr_set(r27028, r27015, MPFR_RNDN); } else { mpfr_set(r27028, r27027, MPFR_RNDN); };
        return mpfr_get_d(r27028, MPFR_RNDN);
}

static mpfr_t r27029, r27030, r27031, r27032, r27033, r27034, r27035, r27036, r27037, r27038, r27039, r27040, r27041, r27042, r27043, r27044, r27045, r27046, r27047, r27048, r27049, r27050, r27051, r27052, r27053, r27054, r27055;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27029);
        mpfr_init(r27030);
        mpfr_init(r27031);
        mpfr_init(r27032);
        mpfr_init(r27033);
        mpfr_init(r27034);
        mpfr_init(r27035);
        mpfr_init(r27036);
        mpfr_init(r27037);
        mpfr_init(r27038);
        mpfr_init_set_str(r27039, "-0.08569959708811534", 10, MPFR_RNDN);
        mpfr_init(r27040);
        mpfr_init(r27041);
        mpfr_init(r27042);
        mpfr_init_set_str(r27043, "9.378113494905201e-139", 10, MPFR_RNDN);
        mpfr_init(r27044);
        mpfr_init_set_str(r27045, "2", 10, MPFR_RNDN);
        mpfr_init(r27046);
        mpfr_init(r27047);
        mpfr_init(r27048);
        mpfr_init(r27049);
        mpfr_init(r27050);
        mpfr_init(r27051);
        mpfr_init(r27052);
        mpfr_init(r27053);
        mpfr_init(r27054);
        mpfr_init(r27055);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r27029, x, MPFR_RNDN);
        mpfr_sin(r27030, r27029, MPFR_RNDN);
        mpfr_set_d(r27031, eps, MPFR_RNDN);
        mpfr_cos(r27032, r27031, MPFR_RNDN);
        mpfr_mul(r27033, r27030, r27032, MPFR_RNDN);
        mpfr_cos(r27034, r27029, MPFR_RNDN);
        mpfr_sin(r27035, r27031, MPFR_RNDN);
        mpfr_mul(r27036, r27034, r27035, MPFR_RNDN);
        mpfr_sub(r27037, r27036, r27030, MPFR_RNDN);
        mpfr_add(r27038, r27033, r27037, MPFR_RNDN);
        ;
        mpfr_set_si(r27040, mpfr_cmp(r27038, r27039) <= 0, MPFR_RNDN);
        mpfr_add(r27041, r27033, r27036, MPFR_RNDN);
        mpfr_sub(r27042, r27041, r27030, MPFR_RNDN);
        ;
        mpfr_set_si(r27044, mpfr_cmp(r27038, r27043) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27046, r27031, r27045, MPFR_RNDN);
        mpfr_sin(r27047, r27046, MPFR_RNDN);
        mpfr_add(r27048, r27031, r27029, MPFR_RNDN);
        mpfr_add(r27049, r27029, r27048, MPFR_RNDN);
        mpfr_div(r27050, r27049, r27045, MPFR_RNDN);
        mpfr_cos(r27051, r27050, MPFR_RNDN);
        mpfr_mul(r27052, r27047, r27051, MPFR_RNDN);
        mpfr_mul(r27053, r27045, r27052, MPFR_RNDN);
        if (mpfr_get_si(r27044, MPFR_RNDN)) { mpfr_set(r27054, r27053, MPFR_RNDN); } else { mpfr_set(r27054, r27042, MPFR_RNDN); };
        if (mpfr_get_si(r27040, MPFR_RNDN)) { mpfr_set(r27055, r27042, MPFR_RNDN); } else { mpfr_set(r27055, r27054, MPFR_RNDN); };
        return mpfr_get_d(r27055, MPFR_RNDN);
}

