#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 r31171 = x;
        float r31172 = exp(r31171);
        float r31173 = -r31171;
        float r31174 = exp(r31173);
        float r31175 = r31172 - r31174;
        float r31176 = 2;
        float r31177 = r31175 / r31176;
        return r31177;
}

double f_id(double x) {
        double r31178 = x;
        double r31179 = exp(r31178);
        double r31180 = -r31178;
        double r31181 = exp(r31180);
        double r31182 = r31179 - r31181;
        double r31183 = 2;
        double r31184 = r31182 / r31183;
        return r31184;
}


double f_of(float x) {
        float r31185 = 1/3;
        float r31186 = x;
        float r31187 = 3;
        float r31188 = pow(r31186, r31187);
        float r31189 = r31185 * r31188;
        float r31190 = 1/60;
        float r31191 = 5;
        float r31192 = pow(r31186, r31191);
        float r31193 = r31190 * r31192;
        float r31194 = 2;
        float r31195 = r31194 * r31186;
        float r31196 = r31193 + r31195;
        float r31197 = r31189 + r31196;
        float r31198 = r31197 / r31194;
        return r31198;
}

double f_od(double x) {
        double r31199 = 1/3;
        double r31200 = x;
        double r31201 = 3;
        double r31202 = pow(r31200, r31201);
        double r31203 = r31199 * r31202;
        double r31204 = 1/60;
        double r31205 = 5;
        double r31206 = pow(r31200, r31205);
        double r31207 = r31204 * r31206;
        double r31208 = 2;
        double r31209 = r31208 * r31200;
        double r31210 = r31207 + r31209;
        double r31211 = r31203 + r31210;
        double r31212 = r31211 / r31208;
        return r31212;
}

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 r31213, r31214, r31215, r31216, r31217, r31218, r31219;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r31213);
        mpfr_init(r31214);
        mpfr_init(r31215);
        mpfr_init(r31216);
        mpfr_init(r31217);
        mpfr_init_set_str(r31218, "2", 10, MPFR_RNDN);
        mpfr_init(r31219);
}

double f_im(double x) {
        mpfr_set_d(r31213, x, MPFR_RNDN);
        mpfr_exp(r31214, r31213, MPFR_RNDN);
        mpfr_neg(r31215, r31213, MPFR_RNDN);
        mpfr_exp(r31216, r31215, MPFR_RNDN);
        mpfr_sub(r31217, r31214, r31216, MPFR_RNDN);
        ;
        mpfr_div(r31219, r31217, r31218, MPFR_RNDN);
        return mpfr_get_d(r31219, MPFR_RNDN);
}

static mpfr_t r31220, r31221, r31222, r31223, r31224, r31225, r31226, r31227, r31228, r31229, r31230, r31231, r31232, r31233;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31220, "1/3", 10, MPFR_RNDN);
        mpfr_init(r31221);
        mpfr_init_set_str(r31222, "3", 10, MPFR_RNDN);
        mpfr_init(r31223);
        mpfr_init(r31224);
        mpfr_init_set_str(r31225, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r31226, "5", 10, MPFR_RNDN);
        mpfr_init(r31227);
        mpfr_init(r31228);
        mpfr_init_set_str(r31229, "2", 10, MPFR_RNDN);
        mpfr_init(r31230);
        mpfr_init(r31231);
        mpfr_init(r31232);
        mpfr_init(r31233);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r31221, x, MPFR_RNDN);
        ;
        mpfr_pow(r31223, r31221, r31222, MPFR_RNDN);
        mpfr_mul(r31224, r31220, r31223, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r31227, r31221, r31226, MPFR_RNDN);
        mpfr_mul(r31228, r31225, r31227, MPFR_RNDN);
        ;
        mpfr_mul(r31230, r31229, r31221, MPFR_RNDN);
        mpfr_add(r31231, r31228, r31230, MPFR_RNDN);
        mpfr_add(r31232, r31224, r31231, MPFR_RNDN);
        mpfr_div(r31233, r31232, r31229, MPFR_RNDN);
        return mpfr_get_d(r31233, MPFR_RNDN);
}

static mpfr_t r31234, r31235, r31236, r31237, r31238, r31239, r31240, r31241, r31242, r31243, r31244, r31245, r31246, r31247;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31234, "1/3", 10, MPFR_RNDN);
        mpfr_init(r31235);
        mpfr_init_set_str(r31236, "3", 10, MPFR_RNDN);
        mpfr_init(r31237);
        mpfr_init(r31238);
        mpfr_init_set_str(r31239, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r31240, "5", 10, MPFR_RNDN);
        mpfr_init(r31241);
        mpfr_init(r31242);
        mpfr_init_set_str(r31243, "2", 10, MPFR_RNDN);
        mpfr_init(r31244);
        mpfr_init(r31245);
        mpfr_init(r31246);
        mpfr_init(r31247);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r31235, x, MPFR_RNDN);
        ;
        mpfr_pow(r31237, r31235, r31236, MPFR_RNDN);
        mpfr_mul(r31238, r31234, r31237, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r31241, r31235, r31240, MPFR_RNDN);
        mpfr_mul(r31242, r31239, r31241, MPFR_RNDN);
        ;
        mpfr_mul(r31244, r31243, r31235, MPFR_RNDN);
        mpfr_add(r31245, r31242, r31244, MPFR_RNDN);
        mpfr_add(r31246, r31238, r31245, MPFR_RNDN);
        mpfr_div(r31247, r31246, r31243, MPFR_RNDN);
        return mpfr_get_d(r31247, MPFR_RNDN);
}

