#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 r31380 = x;
        float r31381 = exp(r31380);
        float r31382 = -r31380;
        float r31383 = exp(r31382);
        float r31384 = r31381 - r31383;
        float r31385 = 2;
        float r31386 = r31384 / r31385;
        return r31386;
}

double f_id(double x) {
        double r31387 = x;
        double r31388 = exp(r31387);
        double r31389 = -r31387;
        double r31390 = exp(r31389);
        double r31391 = r31388 - r31390;
        double r31392 = 2;
        double r31393 = r31391 / r31392;
        return r31393;
}


double f_of(float x) {
        float r31394 = 1/3;
        float r31395 = x;
        float r31396 = 3;
        float r31397 = pow(r31395, r31396);
        float r31398 = r31394 * r31397;
        float r31399 = 1/60;
        float r31400 = 5;
        float r31401 = pow(r31395, r31400);
        float r31402 = r31399 * r31401;
        float r31403 = 2;
        float r31404 = r31403 * r31395;
        float r31405 = r31402 + r31404;
        float r31406 = r31398 + r31405;
        float r31407 = r31406 / r31403;
        return r31407;
}

double f_od(double x) {
        double r31408 = 1/3;
        double r31409 = x;
        double r31410 = 3;
        double r31411 = pow(r31409, r31410);
        double r31412 = r31408 * r31411;
        double r31413 = 1/60;
        double r31414 = 5;
        double r31415 = pow(r31409, r31414);
        double r31416 = r31413 * r31415;
        double r31417 = 2;
        double r31418 = r31417 * r31409;
        double r31419 = r31416 + r31418;
        double r31420 = r31412 + r31419;
        double r31421 = r31420 / r31417;
        return r31421;
}

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 r31422, r31423, r31424, r31425, r31426, r31427, r31428;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r31422);
        mpfr_init(r31423);
        mpfr_init(r31424);
        mpfr_init(r31425);
        mpfr_init(r31426);
        mpfr_init_set_str(r31427, "2", 10, MPFR_RNDN);
        mpfr_init(r31428);
}

double f_im(double x) {
        mpfr_set_d(r31422, x, MPFR_RNDN);
        mpfr_exp(r31423, r31422, MPFR_RNDN);
        mpfr_neg(r31424, r31422, MPFR_RNDN);
        mpfr_exp(r31425, r31424, MPFR_RNDN);
        mpfr_sub(r31426, r31423, r31425, MPFR_RNDN);
        ;
        mpfr_div(r31428, r31426, r31427, MPFR_RNDN);
        return mpfr_get_d(r31428, MPFR_RNDN);
}

static mpfr_t r31429, r31430, r31431, r31432, r31433, r31434, r31435, r31436, r31437, r31438, r31439, r31440, r31441, r31442;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31429, "1/3", 10, MPFR_RNDN);
        mpfr_init(r31430);
        mpfr_init_set_str(r31431, "3", 10, MPFR_RNDN);
        mpfr_init(r31432);
        mpfr_init(r31433);
        mpfr_init_set_str(r31434, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r31435, "5", 10, MPFR_RNDN);
        mpfr_init(r31436);
        mpfr_init(r31437);
        mpfr_init_set_str(r31438, "2", 10, MPFR_RNDN);
        mpfr_init(r31439);
        mpfr_init(r31440);
        mpfr_init(r31441);
        mpfr_init(r31442);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r31430, x, MPFR_RNDN);
        ;
        mpfr_pow(r31432, r31430, r31431, MPFR_RNDN);
        mpfr_mul(r31433, r31429, r31432, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r31436, r31430, r31435, MPFR_RNDN);
        mpfr_mul(r31437, r31434, r31436, MPFR_RNDN);
        ;
        mpfr_mul(r31439, r31438, r31430, MPFR_RNDN);
        mpfr_add(r31440, r31437, r31439, MPFR_RNDN);
        mpfr_add(r31441, r31433, r31440, MPFR_RNDN);
        mpfr_div(r31442, r31441, r31438, MPFR_RNDN);
        return mpfr_get_d(r31442, MPFR_RNDN);
}

static mpfr_t r31443, r31444, r31445, r31446, r31447, r31448, r31449, r31450, r31451, r31452, r31453, r31454, r31455, r31456;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31443, "1/3", 10, MPFR_RNDN);
        mpfr_init(r31444);
        mpfr_init_set_str(r31445, "3", 10, MPFR_RNDN);
        mpfr_init(r31446);
        mpfr_init(r31447);
        mpfr_init_set_str(r31448, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r31449, "5", 10, MPFR_RNDN);
        mpfr_init(r31450);
        mpfr_init(r31451);
        mpfr_init_set_str(r31452, "2", 10, MPFR_RNDN);
        mpfr_init(r31453);
        mpfr_init(r31454);
        mpfr_init(r31455);
        mpfr_init(r31456);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r31444, x, MPFR_RNDN);
        ;
        mpfr_pow(r31446, r31444, r31445, MPFR_RNDN);
        mpfr_mul(r31447, r31443, r31446, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r31450, r31444, r31449, MPFR_RNDN);
        mpfr_mul(r31451, r31448, r31450, MPFR_RNDN);
        ;
        mpfr_mul(r31453, r31452, r31444, MPFR_RNDN);
        mpfr_add(r31454, r31451, r31453, MPFR_RNDN);
        mpfr_add(r31455, r31447, r31454, MPFR_RNDN);
        mpfr_div(r31456, r31455, r31452, MPFR_RNDN);
        return mpfr_get_d(r31456, MPFR_RNDN);
}

