#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 r8658 = x;
        float r8659 = exp(r8658);
        float r8660 = -r8658;
        float r8661 = exp(r8660);
        float r8662 = r8659 - r8661;
        float r8663 = 2.0f;
        float r8664 = r8662 / r8663;
        return r8664;
}

double f_id(double x) {
        double r8665 = x;
        double r8666 = exp(r8665);
        double r8667 = -r8665;
        double r8668 = exp(r8667);
        double r8669 = r8666 - r8668;
        double r8670 = 2.0;
        double r8671 = r8669 / r8670;
        return r8671;
}


double f_of(float x) {
        float r8672 = 2.0f;
        float r8673 = x;
        float r8674 = r8672 * r8673;
        float r8675 = 5.0f;
        float r8676 = pow(r8673, r8675);
        float r8677 = 0.016666666666666666f;
        float r8678 = r8676 * r8677;
        float r8679 = 0.3333333333333333f;
        float r8680 = 3.0f;
        float r8681 = pow(r8673, r8680);
        float r8682 = r8679 * r8681;
        float r8683 = r8678 + r8682;
        float r8684 = r8674 + r8683;
        float r8685 = r8684 / r8672;
        return r8685;
}

double f_od(double x) {
        double r8686 = 2.0;
        double r8687 = x;
        double r8688 = r8686 * r8687;
        double r8689 = 5.0;
        double r8690 = pow(r8687, r8689);
        double r8691 = 0.016666666666666666;
        double r8692 = r8690 * r8691;
        double r8693 = 0.3333333333333333;
        double r8694 = 3.0;
        double r8695 = pow(r8687, r8694);
        double r8696 = r8693 * r8695;
        double r8697 = r8692 + r8696;
        double r8698 = r8688 + r8697;
        double r8699 = r8698 / r8686;
        return r8699;
}

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 r8700, r8701, r8702, r8703, r8704, r8705, r8706;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8700);
        mpfr_init(r8701);
        mpfr_init(r8702);
        mpfr_init(r8703);
        mpfr_init(r8704);
        mpfr_init_set_str(r8705, "2", 10, MPFR_RNDN);
        mpfr_init(r8706);
}

double f_im(double x) {
        mpfr_set_d(r8700, x, MPFR_RNDN);
        mpfr_exp(r8701, r8700, MPFR_RNDN);
        mpfr_neg(r8702, r8700, MPFR_RNDN);
        mpfr_exp(r8703, r8702, MPFR_RNDN);
        mpfr_sub(r8704, r8701, r8703, MPFR_RNDN);
        ;
        mpfr_div(r8706, r8704, r8705, MPFR_RNDN);
        return mpfr_get_d(r8706, MPFR_RNDN);
}

static mpfr_t r8707, r8708, r8709, r8710, r8711, r8712, r8713, r8714, r8715, r8716, r8717, r8718, r8719, r8720;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8707, "2", 10, MPFR_RNDN);
        mpfr_init(r8708);
        mpfr_init(r8709);
        mpfr_init_set_str(r8710, "5", 10, MPFR_RNDN);
        mpfr_init(r8711);
        mpfr_init_set_str(r8712, "1/60", 10, MPFR_RNDN);
        mpfr_init(r8713);
        mpfr_init_set_str(r8714, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r8715, "3", 10, MPFR_RNDN);
        mpfr_init(r8716);
        mpfr_init(r8717);
        mpfr_init(r8718);
        mpfr_init(r8719);
        mpfr_init(r8720);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r8708, x, MPFR_RNDN);
        mpfr_mul(r8709, r8707, r8708, MPFR_RNDN);
        ;
        mpfr_pow(r8711, r8708, r8710, MPFR_RNDN);
        ;
        mpfr_mul(r8713, r8711, r8712, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8716, r8708, r8715, MPFR_RNDN);
        mpfr_mul(r8717, r8714, r8716, MPFR_RNDN);
        mpfr_add(r8718, r8713, r8717, MPFR_RNDN);
        mpfr_add(r8719, r8709, r8718, MPFR_RNDN);
        mpfr_div(r8720, r8719, r8707, MPFR_RNDN);
        return mpfr_get_d(r8720, MPFR_RNDN);
}

static mpfr_t r8721, r8722, r8723, r8724, r8725, r8726, r8727, r8728, r8729, r8730, r8731, r8732, r8733, r8734;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8721, "2", 10, MPFR_RNDN);
        mpfr_init(r8722);
        mpfr_init(r8723);
        mpfr_init_set_str(r8724, "5", 10, MPFR_RNDN);
        mpfr_init(r8725);
        mpfr_init_set_str(r8726, "1/60", 10, MPFR_RNDN);
        mpfr_init(r8727);
        mpfr_init_set_str(r8728, "1/3", 10, MPFR_RNDN);
        mpfr_init_set_str(r8729, "3", 10, MPFR_RNDN);
        mpfr_init(r8730);
        mpfr_init(r8731);
        mpfr_init(r8732);
        mpfr_init(r8733);
        mpfr_init(r8734);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r8722, x, MPFR_RNDN);
        mpfr_mul(r8723, r8721, r8722, MPFR_RNDN);
        ;
        mpfr_pow(r8725, r8722, r8724, MPFR_RNDN);
        ;
        mpfr_mul(r8727, r8725, r8726, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r8730, r8722, r8729, MPFR_RNDN);
        mpfr_mul(r8731, r8728, r8730, MPFR_RNDN);
        mpfr_add(r8732, r8727, r8731, MPFR_RNDN);
        mpfr_add(r8733, r8723, r8732, MPFR_RNDN);
        mpfr_div(r8734, r8733, r8721, MPFR_RNDN);
        return mpfr_get_d(r8734, MPFR_RNDN);
}

