#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "sintan (problem 3.4.5)";

double f_if(float x) {
        float r11869951 = x;
        float r11869952 = sin(r11869951);
        float r11869953 = r11869951 - r11869952;
        float r11869954 = tan(r11869951);
        float r11869955 = r11869951 - r11869954;
        float r11869956 = r11869953 / r11869955;
        return r11869956;
}

double f_id(double x) {
        double r11869957 = x;
        double r11869958 = sin(r11869957);
        double r11869959 = r11869957 - r11869958;
        double r11869960 = tan(r11869957);
        double r11869961 = r11869957 - r11869960;
        double r11869962 = r11869959 / r11869961;
        return r11869962;
}


double f_of(float x) {
        float r11869963 = x;
        float r11869964 = -0.0326973826861387;
        bool r11869965 = r11869963 <= r11869964;
        float r11869966 = sin(r11869963);
        float r11869967 = r11869963 - r11869966;
        float r11869968 = tan(r11869963);
        float r11869969 = r11869963 - r11869968;
        float r11869970 = r11869967 / r11869969;
        float r11869971 = 0.026195380539016655;
        bool r11869972 = r11869963 <= r11869971;
        float r11869973 = 9/40;
        float r11869974 = 2;
        float r11869975 = pow(r11869963, r11869974);
        float r11869976 = r11869973 * r11869975;
        float r11869977 = 27/2800;
        float r11869978 = 4;
        float r11869979 = pow(r11869963, r11869978);
        float r11869980 = r11869977 * r11869979;
        float r11869981 = 1/2;
        float r11869982 = r11869980 + r11869981;
        float r11869983 = r11869976 - r11869982;
        float r11869984 = r11869972 ? r11869983 : r11869970;
        float r11869985 = r11869965 ? r11869970 : r11869984;
        return r11869985;
}

double f_od(double x) {
        double r11869986 = x;
        double r11869987 = -0.0326973826861387;
        bool r11869988 = r11869986 <= r11869987;
        double r11869989 = sin(r11869986);
        double r11869990 = r11869986 - r11869989;
        double r11869991 = tan(r11869986);
        double r11869992 = r11869986 - r11869991;
        double r11869993 = r11869990 / r11869992;
        double r11869994 = 0.026195380539016655;
        bool r11869995 = r11869986 <= r11869994;
        double r11869996 = 9/40;
        double r11869997 = 2;
        double r11869998 = pow(r11869986, r11869997);
        double r11869999 = r11869996 * r11869998;
        double r11870000 = 27/2800;
        double r11870001 = 4;
        double r11870002 = pow(r11869986, r11870001);
        double r11870003 = r11870000 * r11870002;
        double r11870004 = 1/2;
        double r11870005 = r11870003 + r11870004;
        double r11870006 = r11869999 - r11870005;
        double r11870007 = r11869995 ? r11870006 : r11869993;
        double r11870008 = r11869988 ? r11869993 : r11870007;
        return r11870008;
}

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 r11870009, r11870010, r11870011, r11870012, r11870013, r11870014;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r11870009);
        mpfr_init(r11870010);
        mpfr_init(r11870011);
        mpfr_init(r11870012);
        mpfr_init(r11870013);
        mpfr_init(r11870014);
}

double f_im(double x) {
        mpfr_set_d(r11870009, x, MPFR_RNDN);
        mpfr_sin(r11870010, r11870009, MPFR_RNDN);
        mpfr_sub(r11870011, r11870009, r11870010, MPFR_RNDN);
        mpfr_tan(r11870012, r11870009, MPFR_RNDN);
        mpfr_sub(r11870013, r11870009, r11870012, MPFR_RNDN);
        mpfr_div(r11870014, r11870011, r11870013, MPFR_RNDN);
        return mpfr_get_d(r11870014, MPFR_RNDN);
}

static mpfr_t r11870015, r11870016, r11870017, r11870018, r11870019, r11870020, r11870021, r11870022, r11870023, r11870024, r11870025, r11870026, r11870027, r11870028, r11870029, r11870030, r11870031, r11870032, r11870033, r11870034, r11870035, r11870036, r11870037;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r11870015);
        mpfr_init_set_str(r11870016, "-0.0326973826861387", 10, MPFR_RNDN);
        mpfr_init(r11870017);
        mpfr_init(r11870018);
        mpfr_init(r11870019);
        mpfr_init(r11870020);
        mpfr_init(r11870021);
        mpfr_init(r11870022);
        mpfr_init_set_str(r11870023, "0.026195380539016655", 10, MPFR_RNDN);
        mpfr_init(r11870024);
        mpfr_init_set_str(r11870025, "9/40", 10, MPFR_RNDN);
        mpfr_init_set_str(r11870026, "2", 10, MPFR_RNDN);
        mpfr_init(r11870027);
        mpfr_init(r11870028);
        mpfr_init_set_str(r11870029, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r11870030, "4", 10, MPFR_RNDN);
        mpfr_init(r11870031);
        mpfr_init(r11870032);
        mpfr_init_set_str(r11870033, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11870034);
        mpfr_init(r11870035);
        mpfr_init(r11870036);
        mpfr_init(r11870037);
}

double f_fm(double x) {
        mpfr_set_d(r11870015, x, MPFR_RNDN);
        ;
        mpfr_set_si(r11870017, mpfr_cmp(r11870015, r11870016) <= 0, MPFR_RNDN);
        mpfr_sin(r11870018, r11870015, MPFR_RNDN);
        mpfr_sub(r11870019, r11870015, r11870018, MPFR_RNDN);
        mpfr_tan(r11870020, r11870015, MPFR_RNDN);
        mpfr_sub(r11870021, r11870015, r11870020, MPFR_RNDN);
        mpfr_div(r11870022, r11870019, r11870021, MPFR_RNDN);
        ;
        mpfr_set_si(r11870024, mpfr_cmp(r11870015, r11870023) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11870027, r11870015, r11870026, MPFR_RNDN);
        mpfr_mul(r11870028, r11870025, r11870027, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11870031, r11870015, r11870030, MPFR_RNDN);
        mpfr_mul(r11870032, r11870029, r11870031, MPFR_RNDN);
        ;
        mpfr_add(r11870034, r11870032, r11870033, MPFR_RNDN);
        mpfr_sub(r11870035, r11870028, r11870034, MPFR_RNDN);
        if (mpfr_get_si(r11870024, MPFR_RNDN)) { mpfr_set(r11870036, r11870035, MPFR_RNDN); } else { mpfr_set(r11870036, r11870022, MPFR_RNDN); };
        if (mpfr_get_si(r11870017, MPFR_RNDN)) { mpfr_set(r11870037, r11870022, MPFR_RNDN); } else { mpfr_set(r11870037, r11870036, MPFR_RNDN); };
        return mpfr_get_d(r11870037, MPFR_RNDN);
}

static mpfr_t r11870038, r11870039, r11870040, r11870041, r11870042, r11870043, r11870044, r11870045, r11870046, r11870047, r11870048, r11870049, r11870050, r11870051, r11870052, r11870053, r11870054, r11870055, r11870056, r11870057, r11870058, r11870059, r11870060;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r11870038);
        mpfr_init_set_str(r11870039, "-0.0326973826861387", 10, MPFR_RNDN);
        mpfr_init(r11870040);
        mpfr_init(r11870041);
        mpfr_init(r11870042);
        mpfr_init(r11870043);
        mpfr_init(r11870044);
        mpfr_init(r11870045);
        mpfr_init_set_str(r11870046, "0.026195380539016655", 10, MPFR_RNDN);
        mpfr_init(r11870047);
        mpfr_init_set_str(r11870048, "9/40", 10, MPFR_RNDN);
        mpfr_init_set_str(r11870049, "2", 10, MPFR_RNDN);
        mpfr_init(r11870050);
        mpfr_init(r11870051);
        mpfr_init_set_str(r11870052, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r11870053, "4", 10, MPFR_RNDN);
        mpfr_init(r11870054);
        mpfr_init(r11870055);
        mpfr_init_set_str(r11870056, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11870057);
        mpfr_init(r11870058);
        mpfr_init(r11870059);
        mpfr_init(r11870060);
}

double f_dm(double x) {
        mpfr_set_d(r11870038, x, MPFR_RNDN);
        ;
        mpfr_set_si(r11870040, mpfr_cmp(r11870038, r11870039) <= 0, MPFR_RNDN);
        mpfr_sin(r11870041, r11870038, MPFR_RNDN);
        mpfr_sub(r11870042, r11870038, r11870041, MPFR_RNDN);
        mpfr_tan(r11870043, r11870038, MPFR_RNDN);
        mpfr_sub(r11870044, r11870038, r11870043, MPFR_RNDN);
        mpfr_div(r11870045, r11870042, r11870044, MPFR_RNDN);
        ;
        mpfr_set_si(r11870047, mpfr_cmp(r11870038, r11870046) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11870050, r11870038, r11870049, MPFR_RNDN);
        mpfr_mul(r11870051, r11870048, r11870050, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11870054, r11870038, r11870053, MPFR_RNDN);
        mpfr_mul(r11870055, r11870052, r11870054, MPFR_RNDN);
        ;
        mpfr_add(r11870057, r11870055, r11870056, MPFR_RNDN);
        mpfr_sub(r11870058, r11870051, r11870057, MPFR_RNDN);
        if (mpfr_get_si(r11870047, MPFR_RNDN)) { mpfr_set(r11870059, r11870058, MPFR_RNDN); } else { mpfr_set(r11870059, r11870045, MPFR_RNDN); };
        if (mpfr_get_si(r11870040, MPFR_RNDN)) { mpfr_set(r11870060, r11870045, MPFR_RNDN); } else { mpfr_set(r11870060, r11870059, MPFR_RNDN); };
        return mpfr_get_d(r11870060, MPFR_RNDN);
}

