#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 r8595 = x;
        float r8596 = exp(r8595);
        float r8597 = -r8595;
        float r8598 = exp(r8597);
        float r8599 = r8596 - r8598;
        float r8600 = 2.0f;
        float r8601 = r8599 / r8600;
        return r8601;
}

double f_id(double x) {
        double r8602 = x;
        double r8603 = exp(r8602);
        double r8604 = -r8602;
        double r8605 = exp(r8604);
        double r8606 = r8603 - r8605;
        double r8607 = 2.0;
        double r8608 = r8606 / r8607;
        return r8608;
}


double f_of(float x) {
        float r8609 = 0.3333333333333333f;
        float r8610 = x;
        float r8611 = r8610 * r8610;
        float r8612 = 2.0f;
        float r8613 = fma(r8609, r8611, r8612);
        float r8614 = 0.016666666666666666f;
        float r8615 = 5.0f;
        float r8616 = pow(r8610, r8615);
        float r8617 = r8614 * r8616;
        float r8618 = fma(r8613, r8610, r8617);
        float r8619 = r8618 / r8612;
        return r8619;
}

double f_od(double x) {
        double r8620 = 0.3333333333333333;
        double r8621 = x;
        double r8622 = r8621 * r8621;
        double r8623 = 2.0;
        double r8624 = fma(r8620, r8622, r8623);
        double r8625 = 0.016666666666666666;
        double r8626 = 5.0;
        double r8627 = pow(r8621, r8626);
        double r8628 = r8625 * r8627;
        double r8629 = fma(r8624, r8621, r8628);
        double r8630 = r8629 / r8623;
        return r8630;
}

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 r8631, r8632, r8633, r8634, r8635, r8636, r8637;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8631);
        mpfr_init(r8632);
        mpfr_init(r8633);
        mpfr_init(r8634);
        mpfr_init(r8635);
        mpfr_init_set_str(r8636, "2", 10, MPFR_RNDN);
        mpfr_init(r8637);
}

double f_im(double x) {
        mpfr_set_d(r8631, x, MPFR_RNDN);
        mpfr_exp(r8632, r8631, MPFR_RNDN);
        mpfr_neg(r8633, r8631, MPFR_RNDN);
        mpfr_exp(r8634, r8633, MPFR_RNDN);
        mpfr_sub(r8635, r8632, r8634, MPFR_RNDN);
        ;
        mpfr_div(r8637, r8635, r8636, MPFR_RNDN);
        return mpfr_get_d(r8637, MPFR_RNDN);
}

static mpfr_t r8638, r8639, r8640, r8641, r8642, r8643, r8644, r8645, r8646, r8647, r8648;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8638, "1/3", 10, MPFR_RNDN);
        mpfr_init(r8639);
        mpfr_init(r8640);
        mpfr_init_set_str(r8641, "2", 10, MPFR_RNDN);
        mpfr_init(r8642);
        mpfr_init_set_str(r8643, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r8644, "5", 10, MPFR_RNDN);
        mpfr_init(r8645);
        mpfr_init(r8646);
        mpfr_init(r8647);
        mpfr_init(r8648);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r8639, x, MPFR_RNDN);
        mpfr_mul(r8640, r8639, r8639, MPFR_RNDN);
        ;
        mpfr_fma(r8642, r8638, r8640, r8641, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8645, r8639, r8644, MPFR_RNDN);
        mpfr_mul(r8646, r8643, r8645, MPFR_RNDN);
        mpfr_fma(r8647, r8642, r8639, r8646, MPFR_RNDN);
        mpfr_div(r8648, r8647, r8641, MPFR_RNDN);
        return mpfr_get_d(r8648, MPFR_RNDN);
}

static mpfr_t r8649, r8650, r8651, r8652, r8653, r8654, r8655, r8656, r8657, r8658, r8659;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8649, "1/3", 10, MPFR_RNDN);
        mpfr_init(r8650);
        mpfr_init(r8651);
        mpfr_init_set_str(r8652, "2", 10, MPFR_RNDN);
        mpfr_init(r8653);
        mpfr_init_set_str(r8654, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r8655, "5", 10, MPFR_RNDN);
        mpfr_init(r8656);
        mpfr_init(r8657);
        mpfr_init(r8658);
        mpfr_init(r8659);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r8650, x, MPFR_RNDN);
        mpfr_mul(r8651, r8650, r8650, MPFR_RNDN);
        ;
        mpfr_fma(r8653, r8649, r8651, r8652, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8656, r8650, r8655, MPFR_RNDN);
        mpfr_mul(r8657, r8654, r8656, MPFR_RNDN);
        mpfr_fma(r8658, r8653, r8650, r8657, MPFR_RNDN);
        mpfr_div(r8659, r8658, r8652, MPFR_RNDN);
        return mpfr_get_d(r8659, MPFR_RNDN);
}

