#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 r4873992 = x;
        float r4873993 = sin(r4873992);
        float r4873994 = r4873992 - r4873993;
        float r4873995 = tan(r4873992);
        float r4873996 = r4873992 - r4873995;
        float r4873997 = r4873994 / r4873996;
        return r4873997;
}

double f_id(double x) {
        double r4873998 = x;
        double r4873999 = sin(r4873998);
        double r4874000 = r4873998 - r4873999;
        double r4874001 = tan(r4873998);
        double r4874002 = r4873998 - r4874001;
        double r4874003 = r4874000 / r4874002;
        return r4874003;
}


double f_of(float x) {
        float r4874004 = x;
        float r4874005 = -3.859884253300168e-07f;
        bool r4874006 = r4874004 <= r4874005;
        float r4874007 = sin(r4874004);
        float r4874008 = r4874004 - r4874007;
        float r4874009 = tan(r4874004);
        float r4874010 = r4874004 - r4874009;
        float r4874011 = r4874008 / r4874010;
        float r4874012 = exp(r4874011);
        float r4874013 = log(r4874012);
        float r4874014 = 0.1441617602023804f;
        bool r4874015 = r4874004 <= r4874014;
        float r4874016 = 0.225f;
        float r4874017 = 2.0f;
        float r4874018 = pow(r4874004, r4874017);
        float r4874019 = r4874016 * r4874018;
        float r4874020 = 0.009642857142857142f;
        float r4874021 = 4.0f;
        float r4874022 = pow(r4874004, r4874021);
        float r4874023 = r4874020 * r4874022;
        float r4874024 = 0.5f;
        float r4874025 = r4874023 + r4874024;
        float r4874026 = r4874019 - r4874025;
        float r4874027 = r4874015 ? r4874026 : r4874013;
        float r4874028 = r4874006 ? r4874013 : r4874027;
        return r4874028;
}

double f_od(double x) {
        double r4874029 = x;
        double r4874030 = -3.859884253300168e-07;
        bool r4874031 = r4874029 <= r4874030;
        double r4874032 = sin(r4874029);
        double r4874033 = r4874029 - r4874032;
        double r4874034 = tan(r4874029);
        double r4874035 = r4874029 - r4874034;
        double r4874036 = r4874033 / r4874035;
        double r4874037 = exp(r4874036);
        double r4874038 = log(r4874037);
        double r4874039 = 0.1441617602023804;
        bool r4874040 = r4874029 <= r4874039;
        double r4874041 = 0.225;
        double r4874042 = 2.0;
        double r4874043 = pow(r4874029, r4874042);
        double r4874044 = r4874041 * r4874043;
        double r4874045 = 0.009642857142857142;
        double r4874046 = 4.0;
        double r4874047 = pow(r4874029, r4874046);
        double r4874048 = r4874045 * r4874047;
        double r4874049 = 0.5;
        double r4874050 = r4874048 + r4874049;
        double r4874051 = r4874044 - r4874050;
        double r4874052 = r4874040 ? r4874051 : r4874038;
        double r4874053 = r4874031 ? r4874038 : r4874052;
        return r4874053;
}

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 r4874054, r4874055, r4874056, r4874057, r4874058, r4874059;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r4874054);
        mpfr_init(r4874055);
        mpfr_init(r4874056);
        mpfr_init(r4874057);
        mpfr_init(r4874058);
        mpfr_init(r4874059);
}

double f_im(double x) {
        mpfr_set_d(r4874054, x, MPFR_RNDN);
        mpfr_sin(r4874055, r4874054, MPFR_RNDN);
        mpfr_sub(r4874056, r4874054, r4874055, MPFR_RNDN);
        mpfr_tan(r4874057, r4874054, MPFR_RNDN);
        mpfr_sub(r4874058, r4874054, r4874057, MPFR_RNDN);
        mpfr_div(r4874059, r4874056, r4874058, MPFR_RNDN);
        return mpfr_get_d(r4874059, MPFR_RNDN);
}

static mpfr_t r4874060, r4874061, r4874062, r4874063, r4874064, r4874065, r4874066, r4874067, r4874068, r4874069, r4874070, r4874071, r4874072, r4874073, r4874074, r4874075, r4874076, r4874077, r4874078, r4874079, r4874080, r4874081, r4874082, r4874083, r4874084;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r4874060);
        mpfr_init_set_str(r4874061, "-3.859884253300168e-07", 10, MPFR_RNDN);
        mpfr_init(r4874062);
        mpfr_init(r4874063);
        mpfr_init(r4874064);
        mpfr_init(r4874065);
        mpfr_init(r4874066);
        mpfr_init(r4874067);
        mpfr_init(r4874068);
        mpfr_init(r4874069);
        mpfr_init_set_str(r4874070, "0.1441617602023804", 10, MPFR_RNDN);
        mpfr_init(r4874071);
        mpfr_init_set_str(r4874072, "9/40", 10, MPFR_RNDN);
        mpfr_init_set_str(r4874073, "2", 10, MPFR_RNDN);
        mpfr_init(r4874074);
        mpfr_init(r4874075);
        mpfr_init_set_str(r4874076, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r4874077, "4", 10, MPFR_RNDN);
        mpfr_init(r4874078);
        mpfr_init(r4874079);
        mpfr_init_set_str(r4874080, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4874081);
        mpfr_init(r4874082);
        mpfr_init(r4874083);
        mpfr_init(r4874084);
}

double f_fm(double x) {
        mpfr_set_d(r4874060, x, MPFR_RNDN);
        ;
        mpfr_set_si(r4874062, mpfr_cmp(r4874060, r4874061) <= 0, MPFR_RNDN);
        mpfr_sin(r4874063, r4874060, MPFR_RNDN);
        mpfr_sub(r4874064, r4874060, r4874063, MPFR_RNDN);
        mpfr_tan(r4874065, r4874060, MPFR_RNDN);
        mpfr_sub(r4874066, r4874060, r4874065, MPFR_RNDN);
        mpfr_div(r4874067, r4874064, r4874066, MPFR_RNDN);
        mpfr_exp(r4874068, r4874067, MPFR_RNDN);
        mpfr_log(r4874069, r4874068, MPFR_RNDN);
        ;
        mpfr_set_si(r4874071, mpfr_cmp(r4874060, r4874070) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4874074, r4874060, r4874073, MPFR_RNDN);
        mpfr_mul(r4874075, r4874072, r4874074, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4874078, r4874060, r4874077, MPFR_RNDN);
        mpfr_mul(r4874079, r4874076, r4874078, MPFR_RNDN);
        ;
        mpfr_add(r4874081, r4874079, r4874080, MPFR_RNDN);
        mpfr_sub(r4874082, r4874075, r4874081, MPFR_RNDN);
        if (mpfr_get_si(r4874071, MPFR_RNDN)) { mpfr_set(r4874083, r4874082, MPFR_RNDN); } else { mpfr_set(r4874083, r4874069, MPFR_RNDN); };
        if (mpfr_get_si(r4874062, MPFR_RNDN)) { mpfr_set(r4874084, r4874069, MPFR_RNDN); } else { mpfr_set(r4874084, r4874083, MPFR_RNDN); };
        return mpfr_get_d(r4874084, MPFR_RNDN);
}

static mpfr_t r4874085, r4874086, r4874087, r4874088, r4874089, r4874090, r4874091, r4874092, r4874093, r4874094, r4874095, r4874096, r4874097, r4874098, r4874099, r4874100, r4874101, r4874102, r4874103, r4874104, r4874105, r4874106, r4874107, r4874108, r4874109;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r4874085);
        mpfr_init_set_str(r4874086, "-3.859884253300168e-07", 10, MPFR_RNDN);
        mpfr_init(r4874087);
        mpfr_init(r4874088);
        mpfr_init(r4874089);
        mpfr_init(r4874090);
        mpfr_init(r4874091);
        mpfr_init(r4874092);
        mpfr_init(r4874093);
        mpfr_init(r4874094);
        mpfr_init_set_str(r4874095, "0.1441617602023804", 10, MPFR_RNDN);
        mpfr_init(r4874096);
        mpfr_init_set_str(r4874097, "9/40", 10, MPFR_RNDN);
        mpfr_init_set_str(r4874098, "2", 10, MPFR_RNDN);
        mpfr_init(r4874099);
        mpfr_init(r4874100);
        mpfr_init_set_str(r4874101, "27/2800", 10, MPFR_RNDN);
        mpfr_init_set_str(r4874102, "4", 10, MPFR_RNDN);
        mpfr_init(r4874103);
        mpfr_init(r4874104);
        mpfr_init_set_str(r4874105, "1/2", 10, MPFR_RNDN);
        mpfr_init(r4874106);
        mpfr_init(r4874107);
        mpfr_init(r4874108);
        mpfr_init(r4874109);
}

double f_dm(double x) {
        mpfr_set_d(r4874085, x, MPFR_RNDN);
        ;
        mpfr_set_si(r4874087, mpfr_cmp(r4874085, r4874086) <= 0, MPFR_RNDN);
        mpfr_sin(r4874088, r4874085, MPFR_RNDN);
        mpfr_sub(r4874089, r4874085, r4874088, MPFR_RNDN);
        mpfr_tan(r4874090, r4874085, MPFR_RNDN);
        mpfr_sub(r4874091, r4874085, r4874090, MPFR_RNDN);
        mpfr_div(r4874092, r4874089, r4874091, MPFR_RNDN);
        mpfr_exp(r4874093, r4874092, MPFR_RNDN);
        mpfr_log(r4874094, r4874093, MPFR_RNDN);
        ;
        mpfr_set_si(r4874096, mpfr_cmp(r4874085, r4874095) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4874099, r4874085, r4874098, MPFR_RNDN);
        mpfr_mul(r4874100, r4874097, r4874099, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r4874103, r4874085, r4874102, MPFR_RNDN);
        mpfr_mul(r4874104, r4874101, r4874103, MPFR_RNDN);
        ;
        mpfr_add(r4874106, r4874104, r4874105, MPFR_RNDN);
        mpfr_sub(r4874107, r4874100, r4874106, MPFR_RNDN);
        if (mpfr_get_si(r4874096, MPFR_RNDN)) { mpfr_set(r4874108, r4874107, MPFR_RNDN); } else { mpfr_set(r4874108, r4874094, MPFR_RNDN); };
        if (mpfr_get_si(r4874087, MPFR_RNDN)) { mpfr_set(r4874109, r4874094, MPFR_RNDN); } else { mpfr_set(r4874109, r4874108, MPFR_RNDN); };
        return mpfr_get_d(r4874109, MPFR_RNDN);
}

