#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 r9023 = x;
        float r9024 = exp(r9023);
        float r9025 = -r9023;
        float r9026 = exp(r9025);
        float r9027 = r9024 - r9026;
        float r9028 = 2;
        float r9029 = r9027 / r9028;
        return r9029;
}

double f_id(double x) {
        double r9030 = x;
        double r9031 = exp(r9030);
        double r9032 = -r9030;
        double r9033 = exp(r9032);
        double r9034 = r9031 - r9033;
        double r9035 = 2;
        double r9036 = r9034 / r9035;
        return r9036;
}


double f_of(float x) {
        float r9037 = x;
        float r9038 = 1/3;
        float r9039 = r9037 * r9037;
        float r9040 = r9038 * r9039;
        float r9041 = r9037 * r9040;
        float r9042 = 2;
        float r9043 = r9037 * r9042;
        float r9044 = r9041 + r9043;
        float r9045 = 5;
        float r9046 = pow(r9037, r9045);
        float r9047 = 1/60;
        float r9048 = r9046 * r9047;
        float r9049 = r9044 + r9048;
        float r9050 = r9049 / r9042;
        return r9050;
}

double f_od(double x) {
        double r9051 = x;
        double r9052 = 1/3;
        double r9053 = r9051 * r9051;
        double r9054 = r9052 * r9053;
        double r9055 = r9051 * r9054;
        double r9056 = 2;
        double r9057 = r9051 * r9056;
        double r9058 = r9055 + r9057;
        double r9059 = 5;
        double r9060 = pow(r9051, r9059);
        double r9061 = 1/60;
        double r9062 = r9060 * r9061;
        double r9063 = r9058 + r9062;
        double r9064 = r9063 / r9056;
        return r9064;
}

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 r9065, r9066, r9067, r9068, r9069, r9070, r9071;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9065);
        mpfr_init(r9066);
        mpfr_init(r9067);
        mpfr_init(r9068);
        mpfr_init(r9069);
        mpfr_init_set_str(r9070, "2", 10, MPFR_RNDN);
        mpfr_init(r9071);
}

double f_im(double x) {
        mpfr_set_d(r9065, x, MPFR_RNDN);
        mpfr_exp(r9066, r9065, MPFR_RNDN);
        mpfr_neg(r9067, r9065, MPFR_RNDN);
        mpfr_exp(r9068, r9067, MPFR_RNDN);
        mpfr_sub(r9069, r9066, r9068, MPFR_RNDN);
        ;
        mpfr_div(r9071, r9069, r9070, MPFR_RNDN);
        return mpfr_get_d(r9071, MPFR_RNDN);
}

static mpfr_t r9072, r9073, r9074, r9075, r9076, r9077, r9078, r9079, r9080, r9081, r9082, r9083, r9084, r9085;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9072);
        mpfr_init_set_str(r9073, "1/3", 10, MPFR_RNDN);
        mpfr_init(r9074);
        mpfr_init(r9075);
        mpfr_init(r9076);
        mpfr_init_set_str(r9077, "2", 10, MPFR_RNDN);
        mpfr_init(r9078);
        mpfr_init(r9079);
        mpfr_init_set_str(r9080, "5", 10, MPFR_RNDN);
        mpfr_init(r9081);
        mpfr_init_set_str(r9082, "1/60", 10, MPFR_RNDN);
        mpfr_init(r9083);
        mpfr_init(r9084);
        mpfr_init(r9085);
}

double f_fm(double x) {
        mpfr_set_d(r9072, x, MPFR_RNDN);
        ;
        mpfr_mul(r9074, r9072, r9072, MPFR_RNDN);
        mpfr_mul(r9075, r9073, r9074, MPFR_RNDN);
        mpfr_mul(r9076, r9072, r9075, MPFR_RNDN);
        ;
        mpfr_mul(r9078, r9072, r9077, MPFR_RNDN);
        mpfr_add(r9079, r9076, r9078, MPFR_RNDN);
        ;
        mpfr_pow(r9081, r9072, r9080, MPFR_RNDN);
        ;
        mpfr_mul(r9083, r9081, r9082, MPFR_RNDN);
        mpfr_add(r9084, r9079, r9083, MPFR_RNDN);
        mpfr_div(r9085, r9084, r9077, MPFR_RNDN);
        return mpfr_get_d(r9085, MPFR_RNDN);
}

static mpfr_t r9086, r9087, r9088, r9089, r9090, r9091, r9092, r9093, r9094, r9095, r9096, r9097, r9098, r9099;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9086);
        mpfr_init_set_str(r9087, "1/3", 10, MPFR_RNDN);
        mpfr_init(r9088);
        mpfr_init(r9089);
        mpfr_init(r9090);
        mpfr_init_set_str(r9091, "2", 10, MPFR_RNDN);
        mpfr_init(r9092);
        mpfr_init(r9093);
        mpfr_init_set_str(r9094, "5", 10, MPFR_RNDN);
        mpfr_init(r9095);
        mpfr_init_set_str(r9096, "1/60", 10, MPFR_RNDN);
        mpfr_init(r9097);
        mpfr_init(r9098);
        mpfr_init(r9099);
}

double f_dm(double x) {
        mpfr_set_d(r9086, x, MPFR_RNDN);
        ;
        mpfr_mul(r9088, r9086, r9086, MPFR_RNDN);
        mpfr_mul(r9089, r9087, r9088, MPFR_RNDN);
        mpfr_mul(r9090, r9086, r9089, MPFR_RNDN);
        ;
        mpfr_mul(r9092, r9086, r9091, MPFR_RNDN);
        mpfr_add(r9093, r9090, r9092, MPFR_RNDN);
        ;
        mpfr_pow(r9095, r9086, r9094, MPFR_RNDN);
        ;
        mpfr_mul(r9097, r9095, r9096, MPFR_RNDN);
        mpfr_add(r9098, r9093, r9097, MPFR_RNDN);
        mpfr_div(r9099, r9098, r9091, MPFR_RNDN);
        return mpfr_get_d(r9099, MPFR_RNDN);
}

