#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 r5180892 = 1.0f;
        float r5180893 = x;
        float r5180894 = cos(r5180893);
        float r5180895 = r5180892 - r5180894;
        float r5180896 = sin(r5180893);
        float r5180897 = r5180895 / r5180896;
        return r5180897;
}

double f_id(double x) {
        double r5180898 = 1.0;
        double r5180899 = x;
        double r5180900 = cos(r5180899);
        double r5180901 = r5180898 - r5180900;
        double r5180902 = sin(r5180899);
        double r5180903 = r5180901 / r5180902;
        return r5180903;
}


double f_of(float x) {
        float r5180904 = 1.0f;
        float r5180905 = x;
        float r5180906 = sin(r5180905);
        float r5180907 = cos(r5180905);
        float r5180908 = r5180907 + r5180904;
        float r5180909 = r5180906 / r5180908;
        float r5180910 = r5180904 * r5180909;
        return r5180910;
}

double f_od(double x) {
        double r5180911 = 1.0;
        double r5180912 = x;
        double r5180913 = sin(r5180912);
        double r5180914 = cos(r5180912);
        double r5180915 = r5180914 + r5180911;
        double r5180916 = r5180913 / r5180915;
        double r5180917 = r5180911 * r5180916;
        return r5180917;
}

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 r5180918, r5180919, r5180920, r5180921, r5180922, r5180923;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r5180918, "1", 10, MPFR_RNDN);
        mpfr_init(r5180919);
        mpfr_init(r5180920);
        mpfr_init(r5180921);
        mpfr_init(r5180922);
        mpfr_init(r5180923);
}

double f_im(double x) {
        ;
        mpfr_set_d(r5180919, x, MPFR_RNDN);
        mpfr_cos(r5180920, r5180919, MPFR_RNDN);
        mpfr_sub(r5180921, r5180918, r5180920, MPFR_RNDN);
        mpfr_sin(r5180922, r5180919, MPFR_RNDN);
        mpfr_div(r5180923, r5180921, r5180922, MPFR_RNDN);
        return mpfr_get_d(r5180923, MPFR_RNDN);
}

static mpfr_t r5180924, r5180925, r5180926, r5180927, r5180928, r5180929, r5180930;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r5180924, "1", 10, MPFR_RNDN);
        mpfr_init(r5180925);
        mpfr_init(r5180926);
        mpfr_init(r5180927);
        mpfr_init(r5180928);
        mpfr_init(r5180929);
        mpfr_init(r5180930);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r5180925, x, MPFR_RNDN);
        mpfr_sin(r5180926, r5180925, MPFR_RNDN);
        mpfr_cos(r5180927, r5180925, MPFR_RNDN);
        mpfr_add(r5180928, r5180927, r5180924, MPFR_RNDN);
        mpfr_div(r5180929, r5180926, r5180928, MPFR_RNDN);
        mpfr_mul(r5180930, r5180924, r5180929, MPFR_RNDN);
        return mpfr_get_d(r5180930, MPFR_RNDN);
}

static mpfr_t r5180931, r5180932, r5180933, r5180934, r5180935, r5180936, r5180937;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r5180931, "1", 10, MPFR_RNDN);
        mpfr_init(r5180932);
        mpfr_init(r5180933);
        mpfr_init(r5180934);
        mpfr_init(r5180935);
        mpfr_init(r5180936);
        mpfr_init(r5180937);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r5180932, x, MPFR_RNDN);
        mpfr_sin(r5180933, r5180932, MPFR_RNDN);
        mpfr_cos(r5180934, r5180932, MPFR_RNDN);
        mpfr_add(r5180935, r5180934, r5180931, MPFR_RNDN);
        mpfr_div(r5180936, r5180933, r5180935, MPFR_RNDN);
        mpfr_mul(r5180937, r5180931, r5180936, MPFR_RNDN);
        return mpfr_get_d(r5180937, MPFR_RNDN);
}

