#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 r7836 = x;
        float r7837 = sin(r7836);
        float r7838 = r7836 - r7837;
        float r7839 = tan(r7836);
        float r7840 = r7836 - r7839;
        float r7841 = r7838 / r7840;
        return r7841;
}

double f_id(double x) {
        double r7842 = x;
        double r7843 = sin(r7842);
        double r7844 = r7842 - r7843;
        double r7845 = tan(r7842);
        double r7846 = r7842 - r7845;
        double r7847 = r7844 / r7846;
        return r7847;
}


double f_of(float x) {
        float r7848 = x;
        float r7849 = -0.028121595842453516;
        bool r7850 = r7848 <= r7849;
        float r7851 = 0.026925532592986075;
        bool r7852 = r7848 <= r7851;
        float r7853 = !r7852;
        bool r7854 = r7850 || r7853;
        float r7855 = tan(r7848);
        float r7856 = r7848 - r7855;
        float r7857 = r7848 / r7856;
        float r7858 = sin(r7848);
        float r7859 = r7858 / r7856;
        float r7860 = r7857 - r7859;
        float r7861 = 9/40;
        float r7862 = 2;
        float r7863 = pow(r7848, r7862);
        float r7864 = r7861 * r7863;
        float r7865 = 1/2;
        float r7866 = 27/2800;
        float r7867 = 4;
        float r7868 = pow(r7848, r7867);
        float r7869 = r7866 * r7868;
        float r7870 = r7865 + r7869;
        float r7871 = r7864 - r7870;
        float r7872 = r7854 ? r7860 : r7871;
        return r7872;
}

double f_od(double x) {
        double r7873 = x;
        double r7874 = -0.028121595842453516;
        bool r7875 = r7873 <= r7874;
        double r7876 = 0.026925532592986075;
        bool r7877 = r7873 <= r7876;
        double r7878 = !r7877;
        bool r7879 = r7875 || r7878;
        double r7880 = tan(r7873);
        double r7881 = r7873 - r7880;
        double r7882 = r7873 / r7881;
        double r7883 = sin(r7873);
        double r7884 = r7883 / r7881;
        double r7885 = r7882 - r7884;
        double r7886 = 9/40;
        double r7887 = 2;
        double r7888 = pow(r7873, r7887);
        double r7889 = r7886 * r7888;
        double r7890 = 1/2;
        double r7891 = 27/2800;
        double r7892 = 4;
        double r7893 = pow(r7873, r7892);
        double r7894 = r7891 * r7893;
        double r7895 = r7890 + r7894;
        double r7896 = r7889 - r7895;
        double r7897 = r7879 ? r7885 : r7896;
        return r7897;
}

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 r7898, r7899, r7900, r7901, r7902, r7903;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7898);
        mpfr_init(r7899);
        mpfr_init(r7900);
        mpfr_init(r7901);
        mpfr_init(r7902);
        mpfr_init(r7903);
}

double f_im(double x) {
        mpfr_set_d(r7898, x, MPFR_RNDN);
        mpfr_sin(r7899, r7898, MPFR_RNDN);
        mpfr_sub(r7900, r7898, r7899, MPFR_RNDN);
        mpfr_tan(r7901, r7898, MPFR_RNDN);
        mpfr_sub(r7902, r7898, r7901, MPFR_RNDN);
        mpfr_div(r7903, r7900, r7902, MPFR_RNDN);
        return mpfr_get_d(r7903, MPFR_RNDN);
}

static mpfr_t r7904, r7905, r7906, r7907, r7908, r7909, r7910, r7911, r7912, r7913, r7914, r7915, r7916, r7917, r7918, r7919, r7920, r7921, r7922, r7923, r7924, r7925, r7926, r7927, r7928;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7904);
        mpfr_init_set_str(r7905, "-0.028121595842453516", 10, MPFR_RNDN);
        mpfr_init(r7906);
        mpfr_init_set_str(r7907, "0.026925532592986075", 10, MPFR_RNDN);
        mpfr_init(r7908);
        mpfr_init(r7909);
        mpfr_init(r7910);
        mpfr_init(r7911);
        mpfr_init(r7912);
        mpfr_init(r7913);
        mpfr_init(r7914);
        mpfr_init(r7915);
        mpfr_init(r7916);
        mpfr_init_set_str(r7917, "9/40", 10, MPFR_RNDN);
        mpfr_init_set_str(r7918, "2", 10, MPFR_RNDN);
        mpfr_init(r7919);
        mpfr_init(r7920);
        mpfr_init_set_str(r7921, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r7922, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r7923, "4", 10, MPFR_RNDN);
        mpfr_init(r7924);
        mpfr_init(r7925);
        mpfr_init(r7926);
        mpfr_init(r7927);
        mpfr_init(r7928);
}

double f_fm(double x) {
        mpfr_set_d(r7904, x, MPFR_RNDN);
        ;
        mpfr_set_si(r7906, mpfr_cmp(r7904, r7905) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r7908, mpfr_cmp(r7904, r7907) <= 0, MPFR_RNDN);
        mpfr_set_si(r7909, !mpfr_get_si(r7908, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r7910, mpfr_get_si(r7906, MPFR_RNDN) || mpfr_get_si(r7909, MPFR_RNDN), MPFR_RNDN);
        mpfr_tan(r7911, r7904, MPFR_RNDN);
        mpfr_sub(r7912, r7904, r7911, MPFR_RNDN);
        mpfr_div(r7913, r7904, r7912, MPFR_RNDN);
        mpfr_sin(r7914, r7904, MPFR_RNDN);
        mpfr_div(r7915, r7914, r7912, MPFR_RNDN);
        mpfr_sub(r7916, r7913, r7915, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r7919, r7904, r7918, MPFR_RNDN);
        mpfr_mul(r7920, r7917, r7919, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r7924, r7904, r7923, MPFR_RNDN);
        mpfr_mul(r7925, r7922, r7924, MPFR_RNDN);
        mpfr_add(r7926, r7921, r7925, MPFR_RNDN);
        mpfr_sub(r7927, r7920, r7926, MPFR_RNDN);
        if (mpfr_get_si(r7910, MPFR_RNDN)) { mpfr_set(r7928, r7916, MPFR_RNDN); } else { mpfr_set(r7928, r7927, MPFR_RNDN); };
        return mpfr_get_d(r7928, MPFR_RNDN);
}

static mpfr_t r7929, r7930, r7931, r7932, r7933, r7934, r7935, r7936, r7937, r7938, r7939, r7940, r7941, r7942, r7943, r7944, r7945, r7946, r7947, r7948, r7949, r7950, r7951, r7952, r7953;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7929);
        mpfr_init_set_str(r7930, "-0.028121595842453516", 10, MPFR_RNDN);
        mpfr_init(r7931);
        mpfr_init_set_str(r7932, "0.026925532592986075", 10, MPFR_RNDN);
        mpfr_init(r7933);
        mpfr_init(r7934);
        mpfr_init(r7935);
        mpfr_init(r7936);
        mpfr_init(r7937);
        mpfr_init(r7938);
        mpfr_init(r7939);
        mpfr_init(r7940);
        mpfr_init(r7941);
        mpfr_init_set_str(r7942, "9/40", 10, MPFR_RNDN);
        mpfr_init_set_str(r7943, "2", 10, MPFR_RNDN);
        mpfr_init(r7944);
        mpfr_init(r7945);
        mpfr_init_set_str(r7946, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r7947, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r7948, "4", 10, MPFR_RNDN);
        mpfr_init(r7949);
        mpfr_init(r7950);
        mpfr_init(r7951);
        mpfr_init(r7952);
        mpfr_init(r7953);
}

double f_dm(double x) {
        mpfr_set_d(r7929, x, MPFR_RNDN);
        ;
        mpfr_set_si(r7931, mpfr_cmp(r7929, r7930) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r7933, mpfr_cmp(r7929, r7932) <= 0, MPFR_RNDN);
        mpfr_set_si(r7934, !mpfr_get_si(r7933, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r7935, mpfr_get_si(r7931, MPFR_RNDN) || mpfr_get_si(r7934, MPFR_RNDN), MPFR_RNDN);
        mpfr_tan(r7936, r7929, MPFR_RNDN);
        mpfr_sub(r7937, r7929, r7936, MPFR_RNDN);
        mpfr_div(r7938, r7929, r7937, MPFR_RNDN);
        mpfr_sin(r7939, r7929, MPFR_RNDN);
        mpfr_div(r7940, r7939, r7937, MPFR_RNDN);
        mpfr_sub(r7941, r7938, r7940, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r7944, r7929, r7943, MPFR_RNDN);
        mpfr_mul(r7945, r7942, r7944, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r7949, r7929, r7948, MPFR_RNDN);
        mpfr_mul(r7950, r7947, r7949, MPFR_RNDN);
        mpfr_add(r7951, r7946, r7950, MPFR_RNDN);
        mpfr_sub(r7952, r7945, r7951, MPFR_RNDN);
        if (mpfr_get_si(r7935, MPFR_RNDN)) { mpfr_set(r7953, r7941, MPFR_RNDN); } else { mpfr_set(r7953, r7952, MPFR_RNDN); };
        return mpfr_get_d(r7953, MPFR_RNDN);
}

