#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 r9531 = 1.0f;
        float r9532 = x;
        float r9533 = cos(r9532);
        float r9534 = r9531 - r9533;
        float r9535 = sin(r9532);
        float r9536 = r9534 / r9535;
        return r9536;
}

double f_id(double x) {
        double r9537 = 1.0;
        double r9538 = x;
        double r9539 = cos(r9538);
        double r9540 = r9537 - r9539;
        double r9541 = sin(r9538);
        double r9542 = r9540 / r9541;
        return r9542;
}


double f_of(float x) {
        float r9543 = x;
        float r9544 = 2.0f;
        float r9545 = r9543 / r9544;
        float r9546 = tan(r9545);
        return r9546;
}

double f_od(double x) {
        double r9547 = x;
        double r9548 = 2.0;
        double r9549 = r9547 / r9548;
        double r9550 = tan(r9549);
        return r9550;
}

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 r9551, r9552, r9553, r9554, r9555, r9556;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2640);
        mpfr_init_set_str(r9551, "1", 10, MPFR_RNDN);
        mpfr_init(r9552);
        mpfr_init(r9553);
        mpfr_init(r9554);
        mpfr_init(r9555);
        mpfr_init(r9556);
}

double f_im(double x) {
        ;
        mpfr_set_d(r9552, x, MPFR_RNDN);
        mpfr_cos(r9553, r9552, MPFR_RNDN);
        mpfr_sub(r9554, r9551, r9553, MPFR_RNDN);
        mpfr_sin(r9555, r9552, MPFR_RNDN);
        mpfr_div(r9556, r9554, r9555, MPFR_RNDN);
        return mpfr_get_d(r9556, MPFR_RNDN);
}

static mpfr_t r9557, r9558, r9559, r9560;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2640);
        mpfr_init(r9557);
        mpfr_init_set_str(r9558, "2", 10, MPFR_RNDN);
        mpfr_init(r9559);
        mpfr_init(r9560);
}

double f_fm(double x) {
        mpfr_set_d(r9557, x, MPFR_RNDN);
        ;
        mpfr_div(r9559, r9557, r9558, MPFR_RNDN);
        mpfr_tan(r9560, r9559, MPFR_RNDN);
        return mpfr_get_d(r9560, MPFR_RNDN);
}

static mpfr_t r9561, r9562, r9563, r9564;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2640);
        mpfr_init(r9561);
        mpfr_init_set_str(r9562, "2", 10, MPFR_RNDN);
        mpfr_init(r9563);
        mpfr_init(r9564);
}

double f_dm(double x) {
        mpfr_set_d(r9561, x, MPFR_RNDN);
        ;
        mpfr_div(r9563, r9561, r9562, MPFR_RNDN);
        mpfr_tan(r9564, r9563, MPFR_RNDN);
        return mpfr_get_d(r9564, MPFR_RNDN);
}

