#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 r4416288 = 1;
        float r4416289 = x;
        float r4416290 = cos(r4416289);
        float r4416291 = r4416288 - r4416290;
        float r4416292 = sin(r4416289);
        float r4416293 = r4416291 / r4416292;
        return r4416293;
}

double f_id(double x) {
        double r4416294 = 1;
        double r4416295 = x;
        double r4416296 = cos(r4416295);
        double r4416297 = r4416294 - r4416296;
        double r4416298 = sin(r4416295);
        double r4416299 = r4416297 / r4416298;
        return r4416299;
}


double f_of(float x) {
        float r4416300 = 1;
        float r4416301 = x;
        float r4416302 = sin(r4416301);
        float r4416303 = cos(r4416301);
        float r4416304 = r4416300 + r4416303;
        float r4416305 = r4416302 / r4416304;
        float r4416306 = r4416300 * r4416305;
        return r4416306;
}

double f_od(double x) {
        double r4416307 = 1;
        double r4416308 = x;
        double r4416309 = sin(r4416308);
        double r4416310 = cos(r4416308);
        double r4416311 = r4416307 + r4416310;
        double r4416312 = r4416309 / r4416311;
        double r4416313 = r4416307 * r4416312;
        return r4416313;
}

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 r4416314, r4416315, r4416316, r4416317, r4416318, r4416319;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r4416314, "1", 10, MPFR_RNDN);
        mpfr_init(r4416315);
        mpfr_init(r4416316);
        mpfr_init(r4416317);
        mpfr_init(r4416318);
        mpfr_init(r4416319);
}

double f_im(double x) {
        ;
        mpfr_set_d(r4416315, x, MPFR_RNDN);
        mpfr_cos(r4416316, r4416315, MPFR_RNDN);
        mpfr_sub(r4416317, r4416314, r4416316, MPFR_RNDN);
        mpfr_sin(r4416318, r4416315, MPFR_RNDN);
        mpfr_div(r4416319, r4416317, r4416318, MPFR_RNDN);
        return mpfr_get_d(r4416319, MPFR_RNDN);
}

static mpfr_t r4416320, r4416321, r4416322, r4416323, r4416324, r4416325, r4416326;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r4416320, "1", 10, MPFR_RNDN);
        mpfr_init(r4416321);
        mpfr_init(r4416322);
        mpfr_init(r4416323);
        mpfr_init(r4416324);
        mpfr_init(r4416325);
        mpfr_init(r4416326);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r4416321, x, MPFR_RNDN);
        mpfr_sin(r4416322, r4416321, MPFR_RNDN);
        mpfr_cos(r4416323, r4416321, MPFR_RNDN);
        mpfr_add(r4416324, r4416320, r4416323, MPFR_RNDN);
        mpfr_div(r4416325, r4416322, r4416324, MPFR_RNDN);
        mpfr_mul(r4416326, r4416320, r4416325, MPFR_RNDN);
        return mpfr_get_d(r4416326, MPFR_RNDN);
}

static mpfr_t r4416327, r4416328, r4416329, r4416330, r4416331, r4416332, r4416333;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r4416327, "1", 10, MPFR_RNDN);
        mpfr_init(r4416328);
        mpfr_init(r4416329);
        mpfr_init(r4416330);
        mpfr_init(r4416331);
        mpfr_init(r4416332);
        mpfr_init(r4416333);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r4416328, x, MPFR_RNDN);
        mpfr_sin(r4416329, r4416328, MPFR_RNDN);
        mpfr_cos(r4416330, r4416328, MPFR_RNDN);
        mpfr_add(r4416331, r4416327, r4416330, MPFR_RNDN);
        mpfr_div(r4416332, r4416329, r4416331, MPFR_RNDN);
        mpfr_mul(r4416333, r4416327, r4416332, MPFR_RNDN);
        return mpfr_get_d(r4416333, MPFR_RNDN);
}

