#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 r9441 = 1.0f;
        float r9442 = x;
        float r9443 = cos(r9442);
        float r9444 = r9441 - r9443;
        float r9445 = sin(r9442);
        float r9446 = r9444 / r9445;
        return r9446;
}

double f_id(double x) {
        double r9447 = 1.0;
        double r9448 = x;
        double r9449 = cos(r9448);
        double r9450 = r9447 - r9449;
        double r9451 = sin(r9448);
        double r9452 = r9450 / r9451;
        return r9452;
}


double f_of(float x) {
        float r9453 = x;
        float r9454 = 2.0f;
        float r9455 = r9453 / r9454;
        float r9456 = tan(r9455);
        return r9456;
}

double f_od(double x) {
        double r9457 = x;
        double r9458 = 2.0;
        double r9459 = r9457 / r9458;
        double r9460 = tan(r9459);
        return r9460;
}

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 r9461, r9462, r9463, r9464, r9465, r9466;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2640);
        mpfr_init_set_str(r9461, "1", 10, MPFR_RNDN);
        mpfr_init(r9462);
        mpfr_init(r9463);
        mpfr_init(r9464);
        mpfr_init(r9465);
        mpfr_init(r9466);
}

double f_im(double x) {
        ;
        mpfr_set_d(r9462, x, MPFR_RNDN);
        mpfr_cos(r9463, r9462, MPFR_RNDN);
        mpfr_sub(r9464, r9461, r9463, MPFR_RNDN);
        mpfr_sin(r9465, r9462, MPFR_RNDN);
        mpfr_div(r9466, r9464, r9465, MPFR_RNDN);
        return mpfr_get_d(r9466, MPFR_RNDN);
}

static mpfr_t r9467, r9468, r9469, r9470;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2640);
        mpfr_init(r9467);
        mpfr_init_set_str(r9468, "2", 10, MPFR_RNDN);
        mpfr_init(r9469);
        mpfr_init(r9470);
}

double f_fm(double x) {
        mpfr_set_d(r9467, x, MPFR_RNDN);
        ;
        mpfr_div(r9469, r9467, r9468, MPFR_RNDN);
        mpfr_tan(r9470, r9469, MPFR_RNDN);
        return mpfr_get_d(r9470, MPFR_RNDN);
}

static mpfr_t r9471, r9472, r9473, r9474;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2640);
        mpfr_init(r9471);
        mpfr_init_set_str(r9472, "2", 10, MPFR_RNDN);
        mpfr_init(r9473);
        mpfr_init(r9474);
}

double f_dm(double x) {
        mpfr_set_d(r9471, x, MPFR_RNDN);
        ;
        mpfr_div(r9473, r9471, r9472, MPFR_RNDN);
        mpfr_tan(r9474, r9473, MPFR_RNDN);
        return mpfr_get_d(r9474, MPFR_RNDN);
}

