#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 r7844 = x;
        float r7845 = sin(r7844);
        float r7846 = r7844 - r7845;
        float r7847 = tan(r7844);
        float r7848 = r7844 - r7847;
        float r7849 = r7846 / r7848;
        return r7849;
}

double f_id(double x) {
        double r7850 = x;
        double r7851 = sin(r7850);
        double r7852 = r7850 - r7851;
        double r7853 = tan(r7850);
        double r7854 = r7850 - r7853;
        double r7855 = r7852 / r7854;
        return r7855;
}


double f_of(float x) {
        float r7856 = x;
        float r7857 = -0.031478185219520595;
        bool r7858 = r7856 <= r7857;
        float r7859 = 0.0295278792098092;
        bool r7860 = r7856 <= r7859;
        float r7861 = !r7860;
        bool r7862 = r7858 || r7861;
        float r7863 = tan(r7856);
        float r7864 = r7856 - r7863;
        float r7865 = r7856 / r7864;
        float r7866 = sin(r7856);
        float r7867 = r7866 / r7864;
        float r7868 = r7865 - r7867;
        float r7869 = 9/40;
        float r7870 = r7869 * r7856;
        float r7871 = r7870 * r7856;
        float r7872 = 4;
        float r7873 = pow(r7856, r7872);
        float r7874 = 27/2800;
        float r7875 = 1/2;
        float r7876 = fma(r7873, r7874, r7875);
        float r7877 = r7871 - r7876;
        float r7878 = r7862 ? r7868 : r7877;
        return r7878;
}

double f_od(double x) {
        double r7879 = x;
        double r7880 = -0.031478185219520595;
        bool r7881 = r7879 <= r7880;
        double r7882 = 0.0295278792098092;
        bool r7883 = r7879 <= r7882;
        double r7884 = !r7883;
        bool r7885 = r7881 || r7884;
        double r7886 = tan(r7879);
        double r7887 = r7879 - r7886;
        double r7888 = r7879 / r7887;
        double r7889 = sin(r7879);
        double r7890 = r7889 / r7887;
        double r7891 = r7888 - r7890;
        double r7892 = 9/40;
        double r7893 = r7892 * r7879;
        double r7894 = r7893 * r7879;
        double r7895 = 4;
        double r7896 = pow(r7879, r7895);
        double r7897 = 27/2800;
        double r7898 = 1/2;
        double r7899 = fma(r7896, r7897, r7898);
        double r7900 = r7894 - r7899;
        double r7901 = r7885 ? r7891 : r7900;
        return r7901;
}

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 r7902, r7903, r7904, r7905, r7906, r7907;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r7902);
        mpfr_init(r7903);
        mpfr_init(r7904);
        mpfr_init(r7905);
        mpfr_init(r7906);
        mpfr_init(r7907);
}

double f_im(double x) {
        mpfr_set_d(r7902, x, MPFR_RNDN);
        mpfr_sin(r7903, r7902, MPFR_RNDN);
        mpfr_sub(r7904, r7902, r7903, MPFR_RNDN);
        mpfr_tan(r7905, r7902, MPFR_RNDN);
        mpfr_sub(r7906, r7902, r7905, MPFR_RNDN);
        mpfr_div(r7907, r7904, r7906, MPFR_RNDN);
        return mpfr_get_d(r7907, MPFR_RNDN);
}

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

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

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

static mpfr_t 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(r7931);
        mpfr_init_set_str(r7932, "-0.031478185219520595", 10, MPFR_RNDN);
        mpfr_init(r7933);
        mpfr_init_set_str(r7934, "0.0295278792098092", 10, MPFR_RNDN);
        mpfr_init(r7935);
        mpfr_init(r7936);
        mpfr_init(r7937);
        mpfr_init(r7938);
        mpfr_init(r7939);
        mpfr_init(r7940);
        mpfr_init(r7941);
        mpfr_init(r7942);
        mpfr_init(r7943);
        mpfr_init_set_str(r7944, "9/40", 10, MPFR_RNDN);
        mpfr_init(r7945);
        mpfr_init(r7946);
        mpfr_init_set_str(r7947, "4", 10, MPFR_RNDN);
        mpfr_init(r7948);
        mpfr_init_set_str(r7949, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r7950, "1/2", 10, MPFR_RNDN);
        mpfr_init(r7951);
        mpfr_init(r7952);
        mpfr_init(r7953);
}

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

