#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 r9696 = 1;
        float r9697 = x;
        float r9698 = cos(r9697);
        float r9699 = r9696 - r9698;
        float r9700 = sin(r9697);
        float r9701 = r9699 / r9700;
        return r9701;
}

double f_id(double x) {
        double r9702 = 1;
        double r9703 = x;
        double r9704 = cos(r9703);
        double r9705 = r9702 - r9704;
        double r9706 = sin(r9703);
        double r9707 = r9705 / r9706;
        return r9707;
}


double f_of(float x) {
        float r9708 = x;
        float r9709 = 2;
        float r9710 = r9708 / r9709;
        float r9711 = tan(r9710);
        return r9711;
}

double f_od(double x) {
        double r9712 = x;
        double r9713 = 2;
        double r9714 = r9712 / r9713;
        double r9715 = tan(r9714);
        return r9715;
}

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 r9716, r9717, r9718, r9719, r9720, r9721;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2640);
        mpfr_init_set_str(r9716, "1", 10, MPFR_RNDN);
        mpfr_init(r9717);
        mpfr_init(r9718);
        mpfr_init(r9719);
        mpfr_init(r9720);
        mpfr_init(r9721);
}

double f_im(double x) {
        ;
        mpfr_set_d(r9717, x, MPFR_RNDN);
        mpfr_cos(r9718, r9717, MPFR_RNDN);
        mpfr_sub(r9719, r9716, r9718, MPFR_RNDN);
        mpfr_sin(r9720, r9717, MPFR_RNDN);
        mpfr_div(r9721, r9719, r9720, MPFR_RNDN);
        return mpfr_get_d(r9721, MPFR_RNDN);
}

static mpfr_t r9722, r9723, r9724, r9725;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2640);
        mpfr_init(r9722);
        mpfr_init_set_str(r9723, "2", 10, MPFR_RNDN);
        mpfr_init(r9724);
        mpfr_init(r9725);
}

double f_fm(double x) {
        mpfr_set_d(r9722, x, MPFR_RNDN);
        ;
        mpfr_div(r9724, r9722, r9723, MPFR_RNDN);
        mpfr_tan(r9725, r9724, MPFR_RNDN);
        return mpfr_get_d(r9725, MPFR_RNDN);
}

static mpfr_t r9726, r9727, r9728, r9729;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2640);
        mpfr_init(r9726);
        mpfr_init_set_str(r9727, "2", 10, MPFR_RNDN);
        mpfr_init(r9728);
        mpfr_init(r9729);
}

double f_dm(double x) {
        mpfr_set_d(r9726, x, MPFR_RNDN);
        ;
        mpfr_div(r9728, r9726, r9727, MPFR_RNDN);
        mpfr_tan(r9729, r9728, MPFR_RNDN);
        return mpfr_get_d(r9729, MPFR_RNDN);
}

