#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 r6214930 = 1;
        float r6214931 = x;
        float r6214932 = cos(r6214931);
        float r6214933 = r6214930 - r6214932;
        float r6214934 = sin(r6214931);
        float r6214935 = r6214933 / r6214934;
        return r6214935;
}

double f_id(double x) {
        double r6214936 = 1;
        double r6214937 = x;
        double r6214938 = cos(r6214937);
        double r6214939 = r6214936 - r6214938;
        double r6214940 = sin(r6214937);
        double r6214941 = r6214939 / r6214940;
        return r6214941;
}


double f_of(float x) {
        float r6214942 = x;
        float r6214943 = sin(r6214942);
        float r6214944 = cos(r6214942);
        float r6214945 = 1;
        float r6214946 = r6214944 + r6214945;
        float r6214947 = r6214943 / r6214946;
        return r6214947;
}

double f_od(double x) {
        double r6214948 = x;
        double r6214949 = sin(r6214948);
        double r6214950 = cos(r6214948);
        double r6214951 = 1;
        double r6214952 = r6214950 + r6214951;
        double r6214953 = r6214949 / r6214952;
        return r6214953;
}

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 r6214954, r6214955, r6214956, r6214957, r6214958, r6214959;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r6214954, "1", 10, MPFR_RNDN);
        mpfr_init(r6214955);
        mpfr_init(r6214956);
        mpfr_init(r6214957);
        mpfr_init(r6214958);
        mpfr_init(r6214959);
}

double f_im(double x) {
        ;
        mpfr_set_d(r6214955, x, MPFR_RNDN);
        mpfr_cos(r6214956, r6214955, MPFR_RNDN);
        mpfr_sub(r6214957, r6214954, r6214956, MPFR_RNDN);
        mpfr_sin(r6214958, r6214955, MPFR_RNDN);
        mpfr_div(r6214959, r6214957, r6214958, MPFR_RNDN);
        return mpfr_get_d(r6214959, MPFR_RNDN);
}

static mpfr_t r6214960, r6214961, r6214962, r6214963, r6214964, r6214965;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r6214960);
        mpfr_init(r6214961);
        mpfr_init(r6214962);
        mpfr_init_set_str(r6214963, "1", 10, MPFR_RNDN);
        mpfr_init(r6214964);
        mpfr_init(r6214965);
}

double f_fm(double x) {
        mpfr_set_d(r6214960, x, MPFR_RNDN);
        mpfr_sin(r6214961, r6214960, MPFR_RNDN);
        mpfr_cos(r6214962, r6214960, MPFR_RNDN);
        ;
        mpfr_add(r6214964, r6214962, r6214963, MPFR_RNDN);
        mpfr_div(r6214965, r6214961, r6214964, MPFR_RNDN);
        return mpfr_get_d(r6214965, MPFR_RNDN);
}

static mpfr_t r6214966, r6214967, r6214968, r6214969, r6214970, r6214971;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r6214966);
        mpfr_init(r6214967);
        mpfr_init(r6214968);
        mpfr_init_set_str(r6214969, "1", 10, MPFR_RNDN);
        mpfr_init(r6214970);
        mpfr_init(r6214971);
}

double f_dm(double x) {
        mpfr_set_d(r6214966, x, MPFR_RNDN);
        mpfr_sin(r6214967, r6214966, MPFR_RNDN);
        mpfr_cos(r6214968, r6214966, MPFR_RNDN);
        ;
        mpfr_add(r6214970, r6214968, r6214969, MPFR_RNDN);
        mpfr_div(r6214971, r6214967, r6214970, MPFR_RNDN);
        return mpfr_get_d(r6214971, MPFR_RNDN);
}

