#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 r7868 = x;
        float r7869 = sin(r7868);
        float r7870 = r7868 - r7869;
        float r7871 = tan(r7868);
        float r7872 = r7868 - r7871;
        float r7873 = r7870 / r7872;
        return r7873;
}

double f_id(double x) {
        double r7874 = x;
        double r7875 = sin(r7874);
        double r7876 = r7874 - r7875;
        double r7877 = tan(r7874);
        double r7878 = r7874 - r7877;
        double r7879 = r7876 / r7878;
        return r7879;
}


double f_of(float x) {
        float r7880 = x;
        float r7881 = -1.587728855980735;
        bool r7882 = r7880 <= r7881;
        float r7883 = 0.024973858188222158;
        bool r7884 = r7880 <= r7883;
        float r7885 = !r7884;
        bool r7886 = r7882 || r7885;
        float r7887 = tan(r7880);
        float r7888 = r7880 - r7887;
        float r7889 = r7880 / r7888;
        float r7890 = sin(r7880);
        float r7891 = r7890 / r7888;
        float r7892 = r7889 - r7891;
        float r7893 = 9/40;
        float r7894 = 2;
        float r7895 = pow(r7880, r7894);
        float r7896 = r7893 * r7895;
        float r7897 = 1/2;
        float r7898 = 27/2800;
        float r7899 = 4;
        float r7900 = pow(r7880, r7899);
        float r7901 = r7898 * r7900;
        float r7902 = r7897 + r7901;
        float r7903 = r7896 - r7902;
        float r7904 = r7886 ? r7892 : r7903;
        return r7904;
}

double f_od(double x) {
        double r7905 = x;
        double r7906 = -1.587728855980735;
        bool r7907 = r7905 <= r7906;
        double r7908 = 0.024973858188222158;
        bool r7909 = r7905 <= r7908;
        double r7910 = !r7909;
        bool r7911 = r7907 || r7910;
        double r7912 = tan(r7905);
        double r7913 = r7905 - r7912;
        double r7914 = r7905 / r7913;
        double r7915 = sin(r7905);
        double r7916 = r7915 / r7913;
        double r7917 = r7914 - r7916;
        double r7918 = 9/40;
        double r7919 = 2;
        double r7920 = pow(r7905, r7919);
        double r7921 = r7918 * r7920;
        double r7922 = 1/2;
        double r7923 = 27/2800;
        double r7924 = 4;
        double r7925 = pow(r7905, r7924);
        double r7926 = r7923 * r7925;
        double r7927 = r7922 + r7926;
        double r7928 = r7921 - r7927;
        double r7929 = r7911 ? r7917 : r7928;
        return r7929;
}

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 r7930, r7931, r7932, r7933, r7934, r7935;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7930);
        mpfr_init(r7931);
        mpfr_init(r7932);
        mpfr_init(r7933);
        mpfr_init(r7934);
        mpfr_init(r7935);
}

double f_im(double x) {
        mpfr_set_d(r7930, x, MPFR_RNDN);
        mpfr_sin(r7931, r7930, MPFR_RNDN);
        mpfr_sub(r7932, r7930, r7931, MPFR_RNDN);
        mpfr_tan(r7933, r7930, MPFR_RNDN);
        mpfr_sub(r7934, r7930, r7933, MPFR_RNDN);
        mpfr_div(r7935, r7932, r7934, MPFR_RNDN);
        return mpfr_get_d(r7935, MPFR_RNDN);
}

static mpfr_t r7936, r7937, r7938, r7939, r7940, r7941, r7942, r7943, r7944, r7945, r7946, r7947, r7948, r7949, r7950, r7951, r7952, r7953, r7954, r7955, r7956, r7957, r7958, r7959, r7960;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7936);
        mpfr_init_set_str(r7937, "-1.587728855980735", 10, MPFR_RNDN);
        mpfr_init(r7938);
        mpfr_init_set_str(r7939, "0.024973858188222158", 10, MPFR_RNDN);
        mpfr_init(r7940);
        mpfr_init(r7941);
        mpfr_init(r7942);
        mpfr_init(r7943);
        mpfr_init(r7944);
        mpfr_init(r7945);
        mpfr_init(r7946);
        mpfr_init(r7947);
        mpfr_init(r7948);
        mpfr_init_set_str(r7949, "9/40", 10, MPFR_RNDN);
        mpfr_init_set_str(r7950, "2", 10, MPFR_RNDN);
        mpfr_init(r7951);
        mpfr_init(r7952);
        mpfr_init_set_str(r7953, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r7954, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r7955, "4", 10, MPFR_RNDN);
        mpfr_init(r7956);
        mpfr_init(r7957);
        mpfr_init(r7958);
        mpfr_init(r7959);
        mpfr_init(r7960);
}

double f_fm(double x) {
        mpfr_set_d(r7936, x, MPFR_RNDN);
        ;
        mpfr_set_si(r7938, mpfr_cmp(r7936, r7937) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r7940, mpfr_cmp(r7936, r7939) <= 0, MPFR_RNDN);
        mpfr_set_si(r7941, !mpfr_get_si(r7940, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r7942, mpfr_get_si(r7938, MPFR_RNDN) || mpfr_get_si(r7941, MPFR_RNDN), MPFR_RNDN);
        mpfr_tan(r7943, r7936, MPFR_RNDN);
        mpfr_sub(r7944, r7936, r7943, MPFR_RNDN);
        mpfr_div(r7945, r7936, r7944, MPFR_RNDN);
        mpfr_sin(r7946, r7936, MPFR_RNDN);
        mpfr_div(r7947, r7946, r7944, MPFR_RNDN);
        mpfr_sub(r7948, r7945, r7947, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r7951, r7936, r7950, MPFR_RNDN);
        mpfr_mul(r7952, r7949, r7951, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r7956, r7936, r7955, MPFR_RNDN);
        mpfr_mul(r7957, r7954, r7956, MPFR_RNDN);
        mpfr_add(r7958, r7953, r7957, MPFR_RNDN);
        mpfr_sub(r7959, r7952, r7958, MPFR_RNDN);
        if (mpfr_get_si(r7942, MPFR_RNDN)) { mpfr_set(r7960, r7948, MPFR_RNDN); } else { mpfr_set(r7960, r7959, MPFR_RNDN); };
        return mpfr_get_d(r7960, MPFR_RNDN);
}

static mpfr_t r7961, r7962, r7963, r7964, r7965, r7966, r7967, r7968, r7969, r7970, r7971, r7972, r7973, r7974, r7975, r7976, r7977, r7978, r7979, r7980, r7981, r7982, r7983, r7984, r7985;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7961);
        mpfr_init_set_str(r7962, "-1.587728855980735", 10, MPFR_RNDN);
        mpfr_init(r7963);
        mpfr_init_set_str(r7964, "0.024973858188222158", 10, MPFR_RNDN);
        mpfr_init(r7965);
        mpfr_init(r7966);
        mpfr_init(r7967);
        mpfr_init(r7968);
        mpfr_init(r7969);
        mpfr_init(r7970);
        mpfr_init(r7971);
        mpfr_init(r7972);
        mpfr_init(r7973);
        mpfr_init_set_str(r7974, "9/40", 10, MPFR_RNDN);
        mpfr_init_set_str(r7975, "2", 10, MPFR_RNDN);
        mpfr_init(r7976);
        mpfr_init(r7977);
        mpfr_init_set_str(r7978, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r7979, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r7980, "4", 10, MPFR_RNDN);
        mpfr_init(r7981);
        mpfr_init(r7982);
        mpfr_init(r7983);
        mpfr_init(r7984);
        mpfr_init(r7985);
}

double f_dm(double x) {
        mpfr_set_d(r7961, x, MPFR_RNDN);
        ;
        mpfr_set_si(r7963, mpfr_cmp(r7961, r7962) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r7965, mpfr_cmp(r7961, r7964) <= 0, MPFR_RNDN);
        mpfr_set_si(r7966, !mpfr_get_si(r7965, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r7967, mpfr_get_si(r7963, MPFR_RNDN) || mpfr_get_si(r7966, MPFR_RNDN), MPFR_RNDN);
        mpfr_tan(r7968, r7961, MPFR_RNDN);
        mpfr_sub(r7969, r7961, r7968, MPFR_RNDN);
        mpfr_div(r7970, r7961, r7969, MPFR_RNDN);
        mpfr_sin(r7971, r7961, MPFR_RNDN);
        mpfr_div(r7972, r7971, r7969, MPFR_RNDN);
        mpfr_sub(r7973, r7970, r7972, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r7976, r7961, r7975, MPFR_RNDN);
        mpfr_mul(r7977, r7974, r7976, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r7981, r7961, r7980, MPFR_RNDN);
        mpfr_mul(r7982, r7979, r7981, MPFR_RNDN);
        mpfr_add(r7983, r7978, r7982, MPFR_RNDN);
        mpfr_sub(r7984, r7977, r7983, MPFR_RNDN);
        if (mpfr_get_si(r7967, MPFR_RNDN)) { mpfr_set(r7985, r7973, MPFR_RNDN); } else { mpfr_set(r7985, r7984, MPFR_RNDN); };
        return mpfr_get_d(r7985, MPFR_RNDN);
}

