#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 r9652 = 1;
        float r9653 = x;
        float r9654 = cos(r9653);
        float r9655 = r9652 - r9654;
        float r9656 = sin(r9653);
        float r9657 = r9655 / r9656;
        return r9657;
}

double f_id(double x) {
        double r9658 = 1;
        double r9659 = x;
        double r9660 = cos(r9659);
        double r9661 = r9658 - r9660;
        double r9662 = sin(r9659);
        double r9663 = r9661 / r9662;
        return r9663;
}


double f_of(float x) {
        float r9664 = x;
        float r9665 = 2;
        float r9666 = r9664 / r9665;
        float r9667 = tan(r9666);
        return r9667;
}

double f_od(double x) {
        double r9668 = x;
        double r9669 = 2;
        double r9670 = r9668 / r9669;
        double r9671 = tan(r9670);
        return r9671;
}

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 r9672, r9673, r9674, r9675, r9676, r9677;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2640);
        mpfr_init_set_str(r9672, "1", 10, MPFR_RNDN);
        mpfr_init(r9673);
        mpfr_init(r9674);
        mpfr_init(r9675);
        mpfr_init(r9676);
        mpfr_init(r9677);
}

double f_im(double x) {
        ;
        mpfr_set_d(r9673, x, MPFR_RNDN);
        mpfr_cos(r9674, r9673, MPFR_RNDN);
        mpfr_sub(r9675, r9672, r9674, MPFR_RNDN);
        mpfr_sin(r9676, r9673, MPFR_RNDN);
        mpfr_div(r9677, r9675, r9676, MPFR_RNDN);
        return mpfr_get_d(r9677, MPFR_RNDN);
}

static mpfr_t r9678, r9679, r9680, r9681;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2640);
        mpfr_init(r9678);
        mpfr_init_set_str(r9679, "2", 10, MPFR_RNDN);
        mpfr_init(r9680);
        mpfr_init(r9681);
}

double f_fm(double x) {
        mpfr_set_d(r9678, x, MPFR_RNDN);
        ;
        mpfr_div(r9680, r9678, r9679, MPFR_RNDN);
        mpfr_tan(r9681, r9680, MPFR_RNDN);
        return mpfr_get_d(r9681, MPFR_RNDN);
}

static mpfr_t r9682, r9683, r9684, r9685;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2640);
        mpfr_init(r9682);
        mpfr_init_set_str(r9683, "2", 10, MPFR_RNDN);
        mpfr_init(r9684);
        mpfr_init(r9685);
}

double f_dm(double x) {
        mpfr_set_d(r9682, x, MPFR_RNDN);
        ;
        mpfr_div(r9684, r9682, r9683, MPFR_RNDN);
        mpfr_tan(r9685, r9684, MPFR_RNDN);
        return mpfr_get_d(r9685, MPFR_RNDN);
}

