#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 r33450 = 1.0f;
        float r33451 = x;
        float r33452 = cos(r33451);
        float r33453 = r33450 - r33452;
        float r33454 = sin(r33451);
        float r33455 = r33453 / r33454;
        return r33455;
}

double f_id(double x) {
        double r33456 = 1.0;
        double r33457 = x;
        double r33458 = cos(r33457);
        double r33459 = r33456 - r33458;
        double r33460 = sin(r33457);
        double r33461 = r33459 / r33460;
        return r33461;
}


double f_of(float x) {
        float r33462 = x;
        float r33463 = -5.458497096453193e-06f;
        bool r33464 = r33462 <= r33463;
        float r33465 = sin(r33462);
        float r33466 = r33465 * r33465;
        float r33467 = 1.0f;
        float r33468 = cos(r33462);
        float r33469 = r33467 + r33468;
        float r33470 = r33466 / r33469;
        float r33471 = r33470 / r33465;
        float r33472 = 85.36504497937187f;
        bool r33473 = r33462 <= r33472;
        float r33474 = 0.041666666666666664f;
        float r33475 = r33462 * (r33462 * r33462);
        float r33476 = r33474 * r33475;
        float r33477 = 5.0f;
        float r33478 = pow(r33462, r33477);
        float r33479 = 0.004166666666666667f;
        float r33480 = r33478 * r33479;
        float r33481 = 0.5f;
        float r33482 = r33462 * r33481;
        float r33483 = r33480 + r33482;
        float r33484 = r33476 + r33483;
        float r33485 = r33470 * (r33470 * r33470);
        float r33486 = r33465 * (r33465 * r33465);
        float r33487 = r33485 / r33486;
        float r33488 = cbrt(r33487);
        float r33489 = r33473 ? r33484 : r33488;
        float r33490 = r33464 ? r33471 : r33489;
        return r33490;
}

double f_od(double x) {
        double r33491 = x;
        double r33492 = -5.458497096453193e-06;
        bool r33493 = r33491 <= r33492;
        double r33494 = sin(r33491);
        double r33495 = r33494 * r33494;
        double r33496 = 1.0;
        double r33497 = cos(r33491);
        double r33498 = r33496 + r33497;
        double r33499 = r33495 / r33498;
        double r33500 = r33499 / r33494;
        double r33501 = 85.36504497937187;
        bool r33502 = r33491 <= r33501;
        double r33503 = 0.041666666666666664;
        double r33504 = r33491 * (r33491 * r33491);
        double r33505 = r33503 * r33504;
        double r33506 = 5.0;
        double r33507 = pow(r33491, r33506);
        double r33508 = 0.004166666666666667;
        double r33509 = r33507 * r33508;
        double r33510 = 0.5;
        double r33511 = r33491 * r33510;
        double r33512 = r33509 + r33511;
        double r33513 = r33505 + r33512;
        double r33514 = r33499 * (r33499 * r33499);
        double r33515 = r33494 * (r33494 * r33494);
        double r33516 = r33514 / r33515;
        double r33517 = cbrt(r33516);
        double r33518 = r33502 ? r33513 : r33517;
        double r33519 = r33493 ? r33500 : r33518;
        return r33519;
}

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 r33520, r33521, r33522, r33523, r33524, r33525;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r33520, "1", 10, MPFR_RNDN);
        mpfr_init(r33521);
        mpfr_init(r33522);
        mpfr_init(r33523);
        mpfr_init(r33524);
        mpfr_init(r33525);
}

double f_im(double x) {
        ;
        mpfr_set_d(r33521, x, MPFR_RNDN);
        mpfr_cos(r33522, r33521, MPFR_RNDN);
        mpfr_sub(r33523, r33520, r33522, MPFR_RNDN);
        mpfr_sin(r33524, r33521, MPFR_RNDN);
        mpfr_div(r33525, r33523, r33524, MPFR_RNDN);
        return mpfr_get_d(r33525, MPFR_RNDN);
}

static mpfr_t r33526, r33527, r33528, r33529, r33530, r33531, r33532, r33533, r33534, r33535, r33536, r33537, r33538, r33539, r33540, r33541, r33542, r33543, r33544, r33545, r33546, r33547, r33548, r33549, r33550, r33551, r33552, r33553, r33554;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r33526);
        mpfr_init_set_str(r33527, "-5.458497096453193e-06", 10, MPFR_RNDN);
        mpfr_init(r33528);
        mpfr_init(r33529);
        mpfr_init(r33530);
        mpfr_init_set_str(r33531, "1", 10, MPFR_RNDN);
        mpfr_init(r33532);
        mpfr_init(r33533);
        mpfr_init(r33534);
        mpfr_init(r33535);
        mpfr_init_set_str(r33536, "85.36504497937187", 10, MPFR_RNDN);
        mpfr_init(r33537);
        mpfr_init_set_str(r33538, "1/24", 10, MPFR_RNDN);
        mpfr_init(r33539);
        mpfr_init(r33540);
        mpfr_init_set_str(r33541, "5", 10, MPFR_RNDN);
        mpfr_init(r33542);
        mpfr_init_set_str(r33543, "1/240", 10, MPFR_RNDN);
        mpfr_init(r33544);
        mpfr_init_set_str(r33545, "1/2", 10, MPFR_RNDN);
        mpfr_init(r33546);
        mpfr_init(r33547);
        mpfr_init(r33548);
        mpfr_init(r33549);
        mpfr_init(r33550);
        mpfr_init(r33551);
        mpfr_init(r33552);
        mpfr_init(r33553);
        mpfr_init(r33554);
}

double f_fm(double x) {
        mpfr_set_d(r33526, x, MPFR_RNDN);
        ;
        mpfr_set_si(r33528, mpfr_cmp(r33526, r33527) <= 0, MPFR_RNDN);
        mpfr_sin(r33529, r33526, MPFR_RNDN);
        mpfr_sqr(r33530, r33529, MPFR_RNDN);
        ;
        mpfr_cos(r33532, r33526, MPFR_RNDN);
        mpfr_add(r33533, r33531, r33532, MPFR_RNDN);
        mpfr_div(r33534, r33530, r33533, MPFR_RNDN);
        mpfr_div(r33535, r33534, r33529, MPFR_RNDN);
        ;
        mpfr_set_si(r33537, mpfr_cmp(r33526, r33536) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r33539, r33526, r33526, MPFR_RNDN); mpfr_mul(r33539, r33539, r33526, MPFR_RNDN);
        mpfr_mul(r33540, r33538, r33539, MPFR_RNDN);
        ;
        mpfr_pow(r33542, r33526, r33541, MPFR_RNDN);
        ;
        mpfr_mul(r33544, r33542, r33543, MPFR_RNDN);
        ;
        mpfr_mul(r33546, r33526, r33545, MPFR_RNDN);
        mpfr_add(r33547, r33544, r33546, MPFR_RNDN);
        mpfr_add(r33548, r33540, r33547, MPFR_RNDN);
        mpfr_mul(r33549, r33534, r33534, MPFR_RNDN); mpfr_mul(r33549, r33549, r33534, MPFR_RNDN);
        mpfr_mul(r33550, r33529, r33529, MPFR_RNDN); mpfr_mul(r33550, r33550, r33529, MPFR_RNDN);
        mpfr_div(r33551, r33549, r33550, MPFR_RNDN);
        mpfr_cbrt(r33552, r33551, MPFR_RNDN);
        if (mpfr_get_si(r33537, MPFR_RNDN)) { mpfr_set(r33553, r33548, MPFR_RNDN); } else { mpfr_set(r33553, r33552, MPFR_RNDN); };
        if (mpfr_get_si(r33528, MPFR_RNDN)) { mpfr_set(r33554, r33535, MPFR_RNDN); } else { mpfr_set(r33554, r33553, MPFR_RNDN); };
        return mpfr_get_d(r33554, MPFR_RNDN);
}

static mpfr_t r33555, r33556, r33557, r33558, r33559, r33560, r33561, r33562, r33563, r33564, r33565, r33566, r33567, r33568, r33569, r33570, r33571, r33572, r33573, r33574, r33575, r33576, r33577, r33578, r33579, r33580, r33581, r33582, r33583;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r33555);
        mpfr_init_set_str(r33556, "-5.458497096453193e-06", 10, MPFR_RNDN);
        mpfr_init(r33557);
        mpfr_init(r33558);
        mpfr_init(r33559);
        mpfr_init_set_str(r33560, "1", 10, MPFR_RNDN);
        mpfr_init(r33561);
        mpfr_init(r33562);
        mpfr_init(r33563);
        mpfr_init(r33564);
        mpfr_init_set_str(r33565, "85.36504497937187", 10, MPFR_RNDN);
        mpfr_init(r33566);
        mpfr_init_set_str(r33567, "1/24", 10, MPFR_RNDN);
        mpfr_init(r33568);
        mpfr_init(r33569);
        mpfr_init_set_str(r33570, "5", 10, MPFR_RNDN);
        mpfr_init(r33571);
        mpfr_init_set_str(r33572, "1/240", 10, MPFR_RNDN);
        mpfr_init(r33573);
        mpfr_init_set_str(r33574, "1/2", 10, MPFR_RNDN);
        mpfr_init(r33575);
        mpfr_init(r33576);
        mpfr_init(r33577);
        mpfr_init(r33578);
        mpfr_init(r33579);
        mpfr_init(r33580);
        mpfr_init(r33581);
        mpfr_init(r33582);
        mpfr_init(r33583);
}

double f_dm(double x) {
        mpfr_set_d(r33555, x, MPFR_RNDN);
        ;
        mpfr_set_si(r33557, mpfr_cmp(r33555, r33556) <= 0, MPFR_RNDN);
        mpfr_sin(r33558, r33555, MPFR_RNDN);
        mpfr_sqr(r33559, r33558, MPFR_RNDN);
        ;
        mpfr_cos(r33561, r33555, MPFR_RNDN);
        mpfr_add(r33562, r33560, r33561, MPFR_RNDN);
        mpfr_div(r33563, r33559, r33562, MPFR_RNDN);
        mpfr_div(r33564, r33563, r33558, MPFR_RNDN);
        ;
        mpfr_set_si(r33566, mpfr_cmp(r33555, r33565) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r33568, r33555, r33555, MPFR_RNDN); mpfr_mul(r33568, r33568, r33555, MPFR_RNDN);
        mpfr_mul(r33569, r33567, r33568, MPFR_RNDN);
        ;
        mpfr_pow(r33571, r33555, r33570, MPFR_RNDN);
        ;
        mpfr_mul(r33573, r33571, r33572, MPFR_RNDN);
        ;
        mpfr_mul(r33575, r33555, r33574, MPFR_RNDN);
        mpfr_add(r33576, r33573, r33575, MPFR_RNDN);
        mpfr_add(r33577, r33569, r33576, MPFR_RNDN);
        mpfr_mul(r33578, r33563, r33563, MPFR_RNDN); mpfr_mul(r33578, r33578, r33563, MPFR_RNDN);
        mpfr_mul(r33579, r33558, r33558, MPFR_RNDN); mpfr_mul(r33579, r33579, r33558, MPFR_RNDN);
        mpfr_div(r33580, r33578, r33579, MPFR_RNDN);
        mpfr_cbrt(r33581, r33580, MPFR_RNDN);
        if (mpfr_get_si(r33566, MPFR_RNDN)) { mpfr_set(r33582, r33577, MPFR_RNDN); } else { mpfr_set(r33582, r33581, MPFR_RNDN); };
        if (mpfr_get_si(r33557, MPFR_RNDN)) { mpfr_set(r33583, r33564, MPFR_RNDN); } else { mpfr_set(r33583, r33582, MPFR_RNDN); };
        return mpfr_get_d(r33583, MPFR_RNDN);
}

