#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "tanhf (example 3.4)";

double f_if(float x) {
        float r11871007 = 1;
        float r11871008 = x;
        float r11871009 = cos(r11871008);
        float r11871010 = r11871007 - r11871009;
        float r11871011 = sin(r11871008);
        float r11871012 = r11871010 / r11871011;
        return r11871012;
}

double f_id(double x) {
        double r11871013 = 1;
        double r11871014 = x;
        double r11871015 = cos(r11871014);
        double r11871016 = r11871013 - r11871015;
        double r11871017 = sin(r11871014);
        double r11871018 = r11871016 / r11871017;
        return r11871018;
}


double f_of(float x) {
        float r11871019 = 1;
        float r11871020 = x;
        float r11871021 = cos(r11871020);
        float r11871022 = r11871019 - r11871021;
        float r11871023 = sin(r11871020);
        float r11871024 = r11871022 / r11871023;
        float r11871025 = -2.2245851660549705e-16;
        bool r11871026 = r11871024 <= r11871025;
        float r11871027 = log(r11871022);
        float r11871028 = exp(r11871027);
        float r11871029 = r11871028 / r11871023;
        float r11871030 = 1.525723687674933e-07;
        bool r11871031 = r11871024 <= r11871030;
        float r11871032 = 1/24;
        float r11871033 = 3;
        float r11871034 = pow(r11871020, r11871033);
        float r11871035 = r11871032 * r11871034;
        float r11871036 = 1/240;
        float r11871037 = 5;
        float r11871038 = pow(r11871020, r11871037);
        float r11871039 = r11871036 * r11871038;
        float r11871040 = 1/2;
        float r11871041 = r11871040 * r11871020;
        float r11871042 = r11871039 + r11871041;
        float r11871043 = r11871035 + r11871042;
        float r11871044 = r11871031 ? r11871043 : r11871029;
        float r11871045 = r11871026 ? r11871029 : r11871044;
        return r11871045;
}

double f_od(double x) {
        double r11871046 = 1;
        double r11871047 = x;
        double r11871048 = cos(r11871047);
        double r11871049 = r11871046 - r11871048;
        double r11871050 = sin(r11871047);
        double r11871051 = r11871049 / r11871050;
        double r11871052 = -2.2245851660549705e-16;
        bool r11871053 = r11871051 <= r11871052;
        double r11871054 = log(r11871049);
        double r11871055 = exp(r11871054);
        double r11871056 = r11871055 / r11871050;
        double r11871057 = 1.525723687674933e-07;
        bool r11871058 = r11871051 <= r11871057;
        double r11871059 = 1/24;
        double r11871060 = 3;
        double r11871061 = pow(r11871047, r11871060);
        double r11871062 = r11871059 * r11871061;
        double r11871063 = 1/240;
        double r11871064 = 5;
        double r11871065 = pow(r11871047, r11871064);
        double r11871066 = r11871063 * r11871065;
        double r11871067 = 1/2;
        double r11871068 = r11871067 * r11871047;
        double r11871069 = r11871066 + r11871068;
        double r11871070 = r11871062 + r11871069;
        double r11871071 = r11871058 ? r11871070 : r11871056;
        double r11871072 = r11871053 ? r11871056 : r11871071;
        return r11871072;
}

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 r11871073, r11871074, r11871075, r11871076, r11871077, r11871078;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r11871073, "1", 10, MPFR_RNDN);
        mpfr_init(r11871074);
        mpfr_init(r11871075);
        mpfr_init(r11871076);
        mpfr_init(r11871077);
        mpfr_init(r11871078);
}

double f_im(double x) {
        ;
        mpfr_set_d(r11871074, x, MPFR_RNDN);
        mpfr_cos(r11871075, r11871074, MPFR_RNDN);
        mpfr_sub(r11871076, r11871073, r11871075, MPFR_RNDN);
        mpfr_sin(r11871077, r11871074, MPFR_RNDN);
        mpfr_div(r11871078, r11871076, r11871077, MPFR_RNDN);
        return mpfr_get_d(r11871078, MPFR_RNDN);
}

static mpfr_t r11871079, r11871080, r11871081, r11871082, r11871083, r11871084, r11871085, r11871086, r11871087, r11871088, r11871089, r11871090, r11871091, r11871092, r11871093, r11871094, r11871095, r11871096, r11871097, r11871098, r11871099, r11871100, r11871101, r11871102, r11871103, r11871104, r11871105;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r11871079, "1", 10, MPFR_RNDN);
        mpfr_init(r11871080);
        mpfr_init(r11871081);
        mpfr_init(r11871082);
        mpfr_init(r11871083);
        mpfr_init(r11871084);
        mpfr_init_set_str(r11871085, "-2.2245851660549705e-16", 10, MPFR_RNDN);
        mpfr_init(r11871086);
        mpfr_init(r11871087);
        mpfr_init(r11871088);
        mpfr_init(r11871089);
        mpfr_init_set_str(r11871090, "1.525723687674933e-07", 10, MPFR_RNDN);
        mpfr_init(r11871091);
        mpfr_init_set_str(r11871092, "1/24", 10, MPFR_RNDN);
        mpfr_init_set_str(r11871093, "3", 10, MPFR_RNDN);
        mpfr_init(r11871094);
        mpfr_init(r11871095);
        mpfr_init_set_str(r11871096, "1/240", 10, MPFR_RNDN);
        mpfr_init_set_str(r11871097, "5", 10, MPFR_RNDN);
        mpfr_init(r11871098);
        mpfr_init(r11871099);
        mpfr_init_set_str(r11871100, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11871101);
        mpfr_init(r11871102);
        mpfr_init(r11871103);
        mpfr_init(r11871104);
        mpfr_init(r11871105);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r11871080, x, MPFR_RNDN);
        mpfr_cos(r11871081, r11871080, MPFR_RNDN);
        mpfr_sub(r11871082, r11871079, r11871081, MPFR_RNDN);
        mpfr_sin(r11871083, r11871080, MPFR_RNDN);
        mpfr_div(r11871084, r11871082, r11871083, MPFR_RNDN);
        ;
        mpfr_set_si(r11871086, mpfr_cmp(r11871084, r11871085) <= 0, MPFR_RNDN);
        mpfr_log(r11871087, r11871082, MPFR_RNDN);
        mpfr_exp(r11871088, r11871087, MPFR_RNDN);
        mpfr_div(r11871089, r11871088, r11871083, MPFR_RNDN);
        ;
        mpfr_set_si(r11871091, mpfr_cmp(r11871084, r11871090) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11871094, r11871080, r11871093, MPFR_RNDN);
        mpfr_mul(r11871095, r11871092, r11871094, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11871098, r11871080, r11871097, MPFR_RNDN);
        mpfr_mul(r11871099, r11871096, r11871098, MPFR_RNDN);
        ;
        mpfr_mul(r11871101, r11871100, r11871080, MPFR_RNDN);
        mpfr_add(r11871102, r11871099, r11871101, MPFR_RNDN);
        mpfr_add(r11871103, r11871095, r11871102, MPFR_RNDN);
        if (mpfr_get_si(r11871091, MPFR_RNDN)) { mpfr_set(r11871104, r11871103, MPFR_RNDN); } else { mpfr_set(r11871104, r11871089, MPFR_RNDN); };
        if (mpfr_get_si(r11871086, MPFR_RNDN)) { mpfr_set(r11871105, r11871089, MPFR_RNDN); } else { mpfr_set(r11871105, r11871104, MPFR_RNDN); };
        return mpfr_get_d(r11871105, MPFR_RNDN);
}

static mpfr_t r11871106, r11871107, r11871108, r11871109, r11871110, r11871111, r11871112, r11871113, r11871114, r11871115, r11871116, r11871117, r11871118, r11871119, r11871120, r11871121, r11871122, r11871123, r11871124, r11871125, r11871126, r11871127, r11871128, r11871129, r11871130, r11871131, r11871132;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r11871106, "1", 10, MPFR_RNDN);
        mpfr_init(r11871107);
        mpfr_init(r11871108);
        mpfr_init(r11871109);
        mpfr_init(r11871110);
        mpfr_init(r11871111);
        mpfr_init_set_str(r11871112, "-2.2245851660549705e-16", 10, MPFR_RNDN);
        mpfr_init(r11871113);
        mpfr_init(r11871114);
        mpfr_init(r11871115);
        mpfr_init(r11871116);
        mpfr_init_set_str(r11871117, "1.525723687674933e-07", 10, MPFR_RNDN);
        mpfr_init(r11871118);
        mpfr_init_set_str(r11871119, "1/24", 10, MPFR_RNDN);
        mpfr_init_set_str(r11871120, "3", 10, MPFR_RNDN);
        mpfr_init(r11871121);
        mpfr_init(r11871122);
        mpfr_init_set_str(r11871123, "1/240", 10, MPFR_RNDN);
        mpfr_init_set_str(r11871124, "5", 10, MPFR_RNDN);
        mpfr_init(r11871125);
        mpfr_init(r11871126);
        mpfr_init_set_str(r11871127, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11871128);
        mpfr_init(r11871129);
        mpfr_init(r11871130);
        mpfr_init(r11871131);
        mpfr_init(r11871132);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r11871107, x, MPFR_RNDN);
        mpfr_cos(r11871108, r11871107, MPFR_RNDN);
        mpfr_sub(r11871109, r11871106, r11871108, MPFR_RNDN);
        mpfr_sin(r11871110, r11871107, MPFR_RNDN);
        mpfr_div(r11871111, r11871109, r11871110, MPFR_RNDN);
        ;
        mpfr_set_si(r11871113, mpfr_cmp(r11871111, r11871112) <= 0, MPFR_RNDN);
        mpfr_log(r11871114, r11871109, MPFR_RNDN);
        mpfr_exp(r11871115, r11871114, MPFR_RNDN);
        mpfr_div(r11871116, r11871115, r11871110, MPFR_RNDN);
        ;
        mpfr_set_si(r11871118, mpfr_cmp(r11871111, r11871117) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11871121, r11871107, r11871120, MPFR_RNDN);
        mpfr_mul(r11871122, r11871119, r11871121, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11871125, r11871107, r11871124, MPFR_RNDN);
        mpfr_mul(r11871126, r11871123, r11871125, MPFR_RNDN);
        ;
        mpfr_mul(r11871128, r11871127, r11871107, MPFR_RNDN);
        mpfr_add(r11871129, r11871126, r11871128, MPFR_RNDN);
        mpfr_add(r11871130, r11871122, r11871129, MPFR_RNDN);
        if (mpfr_get_si(r11871118, MPFR_RNDN)) { mpfr_set(r11871131, r11871130, MPFR_RNDN); } else { mpfr_set(r11871131, r11871116, MPFR_RNDN); };
        if (mpfr_get_si(r11871113, MPFR_RNDN)) { mpfr_set(r11871132, r11871116, MPFR_RNDN); } else { mpfr_set(r11871132, r11871131, MPFR_RNDN); };
        return mpfr_get_d(r11871132, MPFR_RNDN);
}

