#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 r31364 = x;
        float r31365 = exp(r31364);
        float r31366 = -r31364;
        float r31367 = exp(r31366);
        float r31368 = r31365 - r31367;
        float r31369 = 2;
        float r31370 = r31368 / r31369;
        return r31370;
}

double f_id(double x) {
        double r31371 = x;
        double r31372 = exp(r31371);
        double r31373 = -r31371;
        double r31374 = exp(r31373);
        double r31375 = r31372 - r31374;
        double r31376 = 2;
        double r31377 = r31375 / r31376;
        return r31377;
}


double f_of(float x) {
        float r31378 = 1/3;
        float r31379 = x;
        float r31380 = 3;
        float r31381 = pow(r31379, r31380);
        float r31382 = r31378 * r31381;
        float r31383 = 1/60;
        float r31384 = 5;
        float r31385 = pow(r31379, r31384);
        float r31386 = r31383 * r31385;
        float r31387 = 2;
        float r31388 = r31387 * r31379;
        float r31389 = r31386 + r31388;
        float r31390 = r31382 + r31389;
        float r31391 = r31390 / r31387;
        return r31391;
}

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

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 r31406, r31407, r31408, r31409, r31410, r31411, r31412;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r31406);
        mpfr_init(r31407);
        mpfr_init(r31408);
        mpfr_init(r31409);
        mpfr_init(r31410);
        mpfr_init_set_str(r31411, "2", 10, MPFR_RNDN);
        mpfr_init(r31412);
}

double f_im(double x) {
        mpfr_set_d(r31406, x, MPFR_RNDN);
        mpfr_exp(r31407, r31406, MPFR_RNDN);
        mpfr_neg(r31408, r31406, MPFR_RNDN);
        mpfr_exp(r31409, r31408, MPFR_RNDN);
        mpfr_sub(r31410, r31407, r31409, MPFR_RNDN);
        ;
        mpfr_div(r31412, r31410, r31411, MPFR_RNDN);
        return mpfr_get_d(r31412, MPFR_RNDN);
}

static mpfr_t r31413, r31414, r31415, r31416, r31417, r31418, r31419, r31420, r31421, r31422, r31423, r31424, r31425, r31426;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r31413, "1/3", 10, MPFR_RNDN);
        mpfr_init(r31414);
        mpfr_init_set_str(r31415, "3", 10, MPFR_RNDN);
        mpfr_init(r31416);
        mpfr_init(r31417);
        mpfr_init_set_str(r31418, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r31419, "5", 10, MPFR_RNDN);
        mpfr_init(r31420);
        mpfr_init(r31421);
        mpfr_init_set_str(r31422, "2", 10, MPFR_RNDN);
        mpfr_init(r31423);
        mpfr_init(r31424);
        mpfr_init(r31425);
        mpfr_init(r31426);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r31414, x, MPFR_RNDN);
        ;
        mpfr_pow(r31416, r31414, r31415, MPFR_RNDN);
        mpfr_mul(r31417, r31413, r31416, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r31420, r31414, r31419, MPFR_RNDN);
        mpfr_mul(r31421, r31418, r31420, MPFR_RNDN);
        ;
        mpfr_mul(r31423, r31422, r31414, MPFR_RNDN);
        mpfr_add(r31424, r31421, r31423, MPFR_RNDN);
        mpfr_add(r31425, r31417, r31424, MPFR_RNDN);
        mpfr_div(r31426, r31425, r31422, MPFR_RNDN);
        return mpfr_get_d(r31426, MPFR_RNDN);
}

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

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

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

