#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Hyperbolic sine";

double f_if(float x) {
        float r30967 = x;
        float r30968 = exp(r30967);
        float r30969 = -r30967;
        float r30970 = exp(r30969);
        float r30971 = r30968 - r30970;
        float r30972 = 2;
        float r30973 = r30971 / r30972;
        return r30973;
}

double f_id(double x) {
        double r30974 = x;
        double r30975 = exp(r30974);
        double r30976 = -r30974;
        double r30977 = exp(r30976);
        double r30978 = r30975 - r30977;
        double r30979 = 2;
        double r30980 = r30978 / r30979;
        return r30980;
}


double f_of(float x) {
        float r30981 = 1/3;
        float r30982 = x;
        float r30983 = 3;
        float r30984 = pow(r30982, r30983);
        float r30985 = r30981 * r30984;
        float r30986 = 1/60;
        float r30987 = 5;
        float r30988 = pow(r30982, r30987);
        float r30989 = r30986 * r30988;
        float r30990 = 2;
        float r30991 = r30990 * r30982;
        float r30992 = r30989 + r30991;
        float r30993 = r30985 + r30992;
        float r30994 = r30993 / r30990;
        return r30994;
}

double f_od(double x) {
        double r30995 = 1/3;
        double r30996 = x;
        double r30997 = 3;
        double r30998 = pow(r30996, r30997);
        double r30999 = r30995 * r30998;
        double r31000 = 1/60;
        double r31001 = 5;
        double r31002 = pow(r30996, r31001);
        double r31003 = r31000 * r31002;
        double r31004 = 2;
        double r31005 = r31004 * r30996;
        double r31006 = r31003 + r31005;
        double r31007 = r30999 + r31006;
        double r31008 = r31007 / r31004;
        return r31008;
}

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 r31009, r31010, r31011, r31012, r31013, r31014, r31015;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r31009);
        mpfr_init(r31010);
        mpfr_init(r31011);
        mpfr_init(r31012);
        mpfr_init(r31013);
        mpfr_init_set_str(r31014, "2", 10, MPFR_RNDN);
        mpfr_init(r31015);
}

double f_im(double x) {
        mpfr_set_d(r31009, x, MPFR_RNDN);
        mpfr_exp(r31010, r31009, MPFR_RNDN);
        mpfr_neg(r31011, r31009, MPFR_RNDN);
        mpfr_exp(r31012, r31011, MPFR_RNDN);
        mpfr_sub(r31013, r31010, r31012, MPFR_RNDN);
        ;
        mpfr_div(r31015, r31013, r31014, MPFR_RNDN);
        return mpfr_get_d(r31015, MPFR_RNDN);
}

static mpfr_t r31016, r31017, r31018, r31019, r31020, r31021, r31022, r31023, r31024, r31025, r31026, r31027, r31028, r31029;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31016, "1/3", 10, MPFR_RNDN);
        mpfr_init(r31017);
        mpfr_init_set_str(r31018, "3", 10, MPFR_RNDN);
        mpfr_init(r31019);
        mpfr_init(r31020);
        mpfr_init_set_str(r31021, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r31022, "5", 10, MPFR_RNDN);
        mpfr_init(r31023);
        mpfr_init(r31024);
        mpfr_init_set_str(r31025, "2", 10, MPFR_RNDN);
        mpfr_init(r31026);
        mpfr_init(r31027);
        mpfr_init(r31028);
        mpfr_init(r31029);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r31017, x, MPFR_RNDN);
        ;
        mpfr_pow(r31019, r31017, r31018, MPFR_RNDN);
        mpfr_mul(r31020, r31016, r31019, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r31023, r31017, r31022, MPFR_RNDN);
        mpfr_mul(r31024, r31021, r31023, MPFR_RNDN);
        ;
        mpfr_mul(r31026, r31025, r31017, MPFR_RNDN);
        mpfr_add(r31027, r31024, r31026, MPFR_RNDN);
        mpfr_add(r31028, r31020, r31027, MPFR_RNDN);
        mpfr_div(r31029, r31028, r31025, MPFR_RNDN);
        return mpfr_get_d(r31029, MPFR_RNDN);
}

static mpfr_t r31030, r31031, r31032, r31033, r31034, r31035, r31036, r31037, r31038, r31039, r31040, r31041, r31042, r31043;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31030, "1/3", 10, MPFR_RNDN);
        mpfr_init(r31031);
        mpfr_init_set_str(r31032, "3", 10, MPFR_RNDN);
        mpfr_init(r31033);
        mpfr_init(r31034);
        mpfr_init_set_str(r31035, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r31036, "5", 10, MPFR_RNDN);
        mpfr_init(r31037);
        mpfr_init(r31038);
        mpfr_init_set_str(r31039, "2", 10, MPFR_RNDN);
        mpfr_init(r31040);
        mpfr_init(r31041);
        mpfr_init(r31042);
        mpfr_init(r31043);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r31031, x, MPFR_RNDN);
        ;
        mpfr_pow(r31033, r31031, r31032, MPFR_RNDN);
        mpfr_mul(r31034, r31030, r31033, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r31037, r31031, r31036, MPFR_RNDN);
        mpfr_mul(r31038, r31035, r31037, MPFR_RNDN);
        ;
        mpfr_mul(r31040, r31039, r31031, MPFR_RNDN);
        mpfr_add(r31041, r31038, r31040, MPFR_RNDN);
        mpfr_add(r31042, r31034, r31041, MPFR_RNDN);
        mpfr_div(r31043, r31042, r31039, MPFR_RNDN);
        return mpfr_get_d(r31043, MPFR_RNDN);
}

