#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 r9047 = x;
        float r9048 = exp(r9047);
        float r9049 = -r9047;
        float r9050 = exp(r9049);
        float r9051 = r9048 - r9050;
        float r9052 = 2;
        float r9053 = r9051 / r9052;
        return r9053;
}

double f_id(double x) {
        double r9054 = x;
        double r9055 = exp(r9054);
        double r9056 = -r9054;
        double r9057 = exp(r9056);
        double r9058 = r9055 - r9057;
        double r9059 = 2;
        double r9060 = r9058 / r9059;
        return r9060;
}


double f_of(float x) {
        float r9061 = 2;
        float r9062 = x;
        float r9063 = r9061 * r9062;
        float r9064 = 1/3;
        float r9065 = 3;
        float r9066 = pow(r9062, r9065);
        float r9067 = r9064 * r9066;
        float r9068 = 1/60;
        float r9069 = 5;
        float r9070 = pow(r9062, r9069);
        float r9071 = r9068 * r9070;
        float r9072 = r9067 + r9071;
        float r9073 = r9063 + r9072;
        float r9074 = r9073 / r9061;
        return r9074;
}

double f_od(double x) {
        double r9075 = 2;
        double r9076 = x;
        double r9077 = r9075 * r9076;
        double r9078 = 1/3;
        double r9079 = 3;
        double r9080 = pow(r9076, r9079);
        double r9081 = r9078 * r9080;
        double r9082 = 1/60;
        double r9083 = 5;
        double r9084 = pow(r9076, r9083);
        double r9085 = r9082 * r9084;
        double r9086 = r9081 + r9085;
        double r9087 = r9077 + r9086;
        double r9088 = r9087 / r9075;
        return r9088;
}

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 r9089, r9090, r9091, r9092, r9093, r9094, r9095;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9089);
        mpfr_init(r9090);
        mpfr_init(r9091);
        mpfr_init(r9092);
        mpfr_init(r9093);
        mpfr_init_set_str(r9094, "2", 10, MPFR_RNDN);
        mpfr_init(r9095);
}

double f_im(double x) {
        mpfr_set_d(r9089, x, MPFR_RNDN);
        mpfr_exp(r9090, r9089, MPFR_RNDN);
        mpfr_neg(r9091, r9089, MPFR_RNDN);
        mpfr_exp(r9092, r9091, MPFR_RNDN);
        mpfr_sub(r9093, r9090, r9092, MPFR_RNDN);
        ;
        mpfr_div(r9095, r9093, r9094, MPFR_RNDN);
        return mpfr_get_d(r9095, MPFR_RNDN);
}

static mpfr_t r9096, r9097, r9098, r9099, r9100, r9101, r9102, r9103, r9104, r9105, r9106, r9107, r9108, r9109;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r9096, "2", 10, MPFR_RNDN);
        mpfr_init(r9097);
        mpfr_init(r9098);
        mpfr_init_set_str(r9099, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r9100, "3", 10, MPFR_RNDN);
        mpfr_init(r9101);
        mpfr_init(r9102);
        mpfr_init_set_str(r9103, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r9104, "5", 10, MPFR_RNDN);
        mpfr_init(r9105);
        mpfr_init(r9106);
        mpfr_init(r9107);
        mpfr_init(r9108);
        mpfr_init(r9109);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r9097, x, MPFR_RNDN);
        mpfr_mul(r9098, r9096, r9097, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r9101, r9097, r9100, MPFR_RNDN);
        mpfr_mul(r9102, r9099, r9101, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r9105, r9097, r9104, MPFR_RNDN);
        mpfr_mul(r9106, r9103, r9105, MPFR_RNDN);
        mpfr_add(r9107, r9102, r9106, MPFR_RNDN);
        mpfr_add(r9108, r9098, r9107, MPFR_RNDN);
        mpfr_div(r9109, r9108, r9096, MPFR_RNDN);
        return mpfr_get_d(r9109, MPFR_RNDN);
}

static mpfr_t r9110, r9111, r9112, r9113, r9114, r9115, r9116, r9117, r9118, r9119, r9120, r9121, r9122, r9123;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r9110, "2", 10, MPFR_RNDN);
        mpfr_init(r9111);
        mpfr_init(r9112);
        mpfr_init_set_str(r9113, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r9114, "3", 10, MPFR_RNDN);
        mpfr_init(r9115);
        mpfr_init(r9116);
        mpfr_init_set_str(r9117, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r9118, "5", 10, MPFR_RNDN);
        mpfr_init(r9119);
        mpfr_init(r9120);
        mpfr_init(r9121);
        mpfr_init(r9122);
        mpfr_init(r9123);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r9111, x, MPFR_RNDN);
        mpfr_mul(r9112, r9110, r9111, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r9115, r9111, r9114, MPFR_RNDN);
        mpfr_mul(r9116, r9113, r9115, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r9119, r9111, r9118, MPFR_RNDN);
        mpfr_mul(r9120, r9117, r9119, MPFR_RNDN);
        mpfr_add(r9121, r9116, r9120, MPFR_RNDN);
        mpfr_add(r9122, r9112, r9121, MPFR_RNDN);
        mpfr_div(r9123, r9122, r9110, MPFR_RNDN);
        return mpfr_get_d(r9123, MPFR_RNDN);
}

