#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 r5179854 = x;
        float r5179855 = sin(r5179854);
        float r5179856 = r5179854 - r5179855;
        float r5179857 = tan(r5179854);
        float r5179858 = r5179854 - r5179857;
        float r5179859 = r5179856 / r5179858;
        return r5179859;
}

double f_id(double x) {
        double r5179860 = x;
        double r5179861 = sin(r5179860);
        double r5179862 = r5179860 - r5179861;
        double r5179863 = tan(r5179860);
        double r5179864 = r5179860 - r5179863;
        double r5179865 = r5179862 / r5179864;
        return r5179865;
}


double f_of(float x) {
        float r5179866 = x;
        float r5179867 = -0.0004749914434913193f;
        bool r5179868 = r5179866 <= r5179867;
        float r5179869 = sin(r5179866);
        float r5179870 = r5179866 - r5179869;
        float r5179871 = tan(r5179866);
        float r5179872 = r5179866 - r5179871;
        float r5179873 = r5179870 / r5179872;
        float r5179874 = 28.042920304023237f;
        bool r5179875 = r5179866 <= r5179874;
        float r5179876 = -0.5f;
        float r5179877 = 0.45f;
        float r5179878 = r5179866 * r5179866;
        float r5179879 = r5179877 * r5179878;
        float r5179880 = 0.019285714285714285f;
        float r5179881 = 4.0f;
        float r5179882 = pow(r5179866, r5179881);
        float r5179883 = r5179880 * r5179882;
        float r5179884 = r5179879 - r5179883;
        float r5179885 = -0.125f;
        float r5179886 = cbrt(r5179885);
        float r5179887 = r5179884 * r5179886;
        float r5179888 = r5179876 - r5179887;
        float r5179889 = r5179875 ? r5179888 : r5179873;
        float r5179890 = r5179868 ? r5179873 : r5179889;
        return r5179890;
}

double f_od(double x) {
        double r5179891 = x;
        double r5179892 = -0.0004749914434913193;
        bool r5179893 = r5179891 <= r5179892;
        double r5179894 = sin(r5179891);
        double r5179895 = r5179891 - r5179894;
        double r5179896 = tan(r5179891);
        double r5179897 = r5179891 - r5179896;
        double r5179898 = r5179895 / r5179897;
        double r5179899 = 28.042920304023237;
        bool r5179900 = r5179891 <= r5179899;
        double r5179901 = -0.5;
        double r5179902 = 0.45;
        double r5179903 = r5179891 * r5179891;
        double r5179904 = r5179902 * r5179903;
        double r5179905 = 0.019285714285714285;
        double r5179906 = 4.0;
        double r5179907 = pow(r5179891, r5179906);
        double r5179908 = r5179905 * r5179907;
        double r5179909 = r5179904 - r5179908;
        double r5179910 = -0.125;
        double r5179911 = cbrt(r5179910);
        double r5179912 = r5179909 * r5179911;
        double r5179913 = r5179901 - r5179912;
        double r5179914 = r5179900 ? r5179913 : r5179898;
        double r5179915 = r5179893 ? r5179898 : r5179914;
        return r5179915;
}

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 r5179916, r5179917, r5179918, r5179919, r5179920, r5179921;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r5179916);
        mpfr_init(r5179917);
        mpfr_init(r5179918);
        mpfr_init(r5179919);
        mpfr_init(r5179920);
        mpfr_init(r5179921);
}

double f_im(double x) {
        mpfr_set_d(r5179916, x, MPFR_RNDN);
        mpfr_sin(r5179917, r5179916, MPFR_RNDN);
        mpfr_sub(r5179918, r5179916, r5179917, MPFR_RNDN);
        mpfr_tan(r5179919, r5179916, MPFR_RNDN);
        mpfr_sub(r5179920, r5179916, r5179919, MPFR_RNDN);
        mpfr_div(r5179921, r5179918, r5179920, MPFR_RNDN);
        return mpfr_get_d(r5179921, MPFR_RNDN);
}

static mpfr_t r5179922, r5179923, r5179924, r5179925, r5179926, r5179927, r5179928, r5179929, r5179930, r5179931, r5179932, r5179933, r5179934, r5179935, r5179936, r5179937, r5179938, r5179939, r5179940, r5179941, r5179942, r5179943, r5179944, r5179945, r5179946;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r5179922);
        mpfr_init_set_str(r5179923, "-0.0004749914434913193", 10, MPFR_RNDN);
        mpfr_init(r5179924);
        mpfr_init(r5179925);
        mpfr_init(r5179926);
        mpfr_init(r5179927);
        mpfr_init(r5179928);
        mpfr_init(r5179929);
        mpfr_init_set_str(r5179930, "28.042920304023237", 10, MPFR_RNDN);
        mpfr_init(r5179931);
        mpfr_init_set_str(r5179932, "-1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r5179933, "9/20", 10, MPFR_RNDN);
        mpfr_init(r5179934);
        mpfr_init(r5179935);
        mpfr_init_set_str(r5179936, "27/1400", 10, MPFR_RNDN);
        mpfr_init_set_str(r5179937, "4", 10, MPFR_RNDN);
        mpfr_init(r5179938);
        mpfr_init(r5179939);
        mpfr_init(r5179940);
        mpfr_init_set_str(r5179941, "-1/8", 10, MPFR_RNDN);
        mpfr_init(r5179942);
        mpfr_init(r5179943);
        mpfr_init(r5179944);
        mpfr_init(r5179945);
        mpfr_init(r5179946);
}

double f_fm(double x) {
        mpfr_set_d(r5179922, x, MPFR_RNDN);
        ;
        mpfr_set_si(r5179924, mpfr_cmp(r5179922, r5179923) <= 0, MPFR_RNDN);
        mpfr_sin(r5179925, r5179922, MPFR_RNDN);
        mpfr_sub(r5179926, r5179922, r5179925, MPFR_RNDN);
        mpfr_tan(r5179927, r5179922, MPFR_RNDN);
        mpfr_sub(r5179928, r5179922, r5179927, MPFR_RNDN);
        mpfr_div(r5179929, r5179926, r5179928, MPFR_RNDN);
        ;
        mpfr_set_si(r5179931, mpfr_cmp(r5179922, r5179930) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_sqr(r5179934, r5179922, MPFR_RNDN);
        mpfr_mul(r5179935, r5179933, r5179934, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r5179938, r5179922, r5179937, MPFR_RNDN);
        mpfr_mul(r5179939, r5179936, r5179938, MPFR_RNDN);
        mpfr_sub(r5179940, r5179935, r5179939, MPFR_RNDN);
        ;
        mpfr_cbrt(r5179942, r5179941, MPFR_RNDN);
        mpfr_mul(r5179943, r5179940, r5179942, MPFR_RNDN);
        mpfr_sub(r5179944, r5179932, r5179943, MPFR_RNDN);
        if (mpfr_get_si(r5179931, MPFR_RNDN)) { mpfr_set(r5179945, r5179944, MPFR_RNDN); } else { mpfr_set(r5179945, r5179929, MPFR_RNDN); };
        if (mpfr_get_si(r5179924, MPFR_RNDN)) { mpfr_set(r5179946, r5179929, MPFR_RNDN); } else { mpfr_set(r5179946, r5179945, MPFR_RNDN); };
        return mpfr_get_d(r5179946, MPFR_RNDN);
}

static mpfr_t r5179947, r5179948, r5179949, r5179950, r5179951, r5179952, r5179953, r5179954, r5179955, r5179956, r5179957, r5179958, r5179959, r5179960, r5179961, r5179962, r5179963, r5179964, r5179965, r5179966, r5179967, r5179968, r5179969, r5179970, r5179971;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r5179947);
        mpfr_init_set_str(r5179948, "-0.0004749914434913193", 10, MPFR_RNDN);
        mpfr_init(r5179949);
        mpfr_init(r5179950);
        mpfr_init(r5179951);
        mpfr_init(r5179952);
        mpfr_init(r5179953);
        mpfr_init(r5179954);
        mpfr_init_set_str(r5179955, "28.042920304023237", 10, MPFR_RNDN);
        mpfr_init(r5179956);
        mpfr_init_set_str(r5179957, "-1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r5179958, "9/20", 10, MPFR_RNDN);
        mpfr_init(r5179959);
        mpfr_init(r5179960);
        mpfr_init_set_str(r5179961, "27/1400", 10, MPFR_RNDN);
        mpfr_init_set_str(r5179962, "4", 10, MPFR_RNDN);
        mpfr_init(r5179963);
        mpfr_init(r5179964);
        mpfr_init(r5179965);
        mpfr_init_set_str(r5179966, "-1/8", 10, MPFR_RNDN);
        mpfr_init(r5179967);
        mpfr_init(r5179968);
        mpfr_init(r5179969);
        mpfr_init(r5179970);
        mpfr_init(r5179971);
}

double f_dm(double x) {
        mpfr_set_d(r5179947, x, MPFR_RNDN);
        ;
        mpfr_set_si(r5179949, mpfr_cmp(r5179947, r5179948) <= 0, MPFR_RNDN);
        mpfr_sin(r5179950, r5179947, MPFR_RNDN);
        mpfr_sub(r5179951, r5179947, r5179950, MPFR_RNDN);
        mpfr_tan(r5179952, r5179947, MPFR_RNDN);
        mpfr_sub(r5179953, r5179947, r5179952, MPFR_RNDN);
        mpfr_div(r5179954, r5179951, r5179953, MPFR_RNDN);
        ;
        mpfr_set_si(r5179956, mpfr_cmp(r5179947, r5179955) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_sqr(r5179959, r5179947, MPFR_RNDN);
        mpfr_mul(r5179960, r5179958, r5179959, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r5179963, r5179947, r5179962, MPFR_RNDN);
        mpfr_mul(r5179964, r5179961, r5179963, MPFR_RNDN);
        mpfr_sub(r5179965, r5179960, r5179964, MPFR_RNDN);
        ;
        mpfr_cbrt(r5179967, r5179966, MPFR_RNDN);
        mpfr_mul(r5179968, r5179965, r5179967, MPFR_RNDN);
        mpfr_sub(r5179969, r5179957, r5179968, MPFR_RNDN);
        if (mpfr_get_si(r5179956, MPFR_RNDN)) { mpfr_set(r5179970, r5179969, MPFR_RNDN); } else { mpfr_set(r5179970, r5179954, MPFR_RNDN); };
        if (mpfr_get_si(r5179949, MPFR_RNDN)) { mpfr_set(r5179971, r5179954, MPFR_RNDN); } else { mpfr_set(r5179971, r5179970, MPFR_RNDN); };
        return mpfr_get_d(r5179971, MPFR_RNDN);
}

