#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 r18361046 = x;
        float r18361047 = exp(r18361046);
        float r18361048 = -r18361046;
        float r18361049 = exp(r18361048);
        float r18361050 = r18361047 - r18361049;
        float r18361051 = 2;
        float r18361052 = r18361050 / r18361051;
        return r18361052;
}

double f_id(double x) {
        double r18361053 = x;
        double r18361054 = exp(r18361053);
        double r18361055 = -r18361053;
        double r18361056 = exp(r18361055);
        double r18361057 = r18361054 - r18361056;
        double r18361058 = 2;
        double r18361059 = r18361057 / r18361058;
        return r18361059;
}


double f_of(float x) {
        float r18361060 = 1/3;
        float r18361061 = x;
        float r18361062 = 3;
        float r18361063 = pow(r18361061, r18361062);
        float r18361064 = r18361060 * r18361063;
        float r18361065 = 1/60;
        float r18361066 = 5;
        float r18361067 = pow(r18361061, r18361066);
        float r18361068 = r18361065 * r18361067;
        float r18361069 = 2;
        float r18361070 = r18361069 * r18361061;
        float r18361071 = r18361068 + r18361070;
        float r18361072 = r18361064 + r18361071;
        float r18361073 = r18361072 / r18361069;
        return r18361073;
}

double f_od(double x) {
        double r18361074 = 1/3;
        double r18361075 = x;
        double r18361076 = 3;
        double r18361077 = pow(r18361075, r18361076);
        double r18361078 = r18361074 * r18361077;
        double r18361079 = 1/60;
        double r18361080 = 5;
        double r18361081 = pow(r18361075, r18361080);
        double r18361082 = r18361079 * r18361081;
        double r18361083 = 2;
        double r18361084 = r18361083 * r18361075;
        double r18361085 = r18361082 + r18361084;
        double r18361086 = r18361078 + r18361085;
        double r18361087 = r18361086 / r18361083;
        return r18361087;
}

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 r18361088, r18361089, r18361090, r18361091, r18361092, r18361093, r18361094;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r18361088);
        mpfr_init(r18361089);
        mpfr_init(r18361090);
        mpfr_init(r18361091);
        mpfr_init(r18361092);
        mpfr_init_set_str(r18361093, "2", 10, MPFR_RNDN);
        mpfr_init(r18361094);
}

double f_im(double x) {
        mpfr_set_d(r18361088, x, MPFR_RNDN);
        mpfr_exp(r18361089, r18361088, MPFR_RNDN);
        mpfr_neg(r18361090, r18361088, MPFR_RNDN);
        mpfr_exp(r18361091, r18361090, MPFR_RNDN);
        mpfr_sub(r18361092, r18361089, r18361091, MPFR_RNDN);
        ;
        mpfr_div(r18361094, r18361092, r18361093, MPFR_RNDN);
        return mpfr_get_d(r18361094, MPFR_RNDN);
}

static mpfr_t r18361095, r18361096, r18361097, r18361098, r18361099, r18361100, r18361101, r18361102, r18361103, r18361104, r18361105, r18361106, r18361107, r18361108;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r18361095, "1/3", 10, MPFR_RNDN);
        mpfr_init(r18361096);
        mpfr_init_set_str(r18361097, "3", 10, MPFR_RNDN);
        mpfr_init(r18361098);
        mpfr_init(r18361099);
        mpfr_init_set_str(r18361100, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r18361101, "5", 10, MPFR_RNDN);
        mpfr_init(r18361102);
        mpfr_init(r18361103);
        mpfr_init_set_str(r18361104, "2", 10, MPFR_RNDN);
        mpfr_init(r18361105);
        mpfr_init(r18361106);
        mpfr_init(r18361107);
        mpfr_init(r18361108);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r18361096, x, MPFR_RNDN);
        ;
        mpfr_pow(r18361098, r18361096, r18361097, MPFR_RNDN);
        mpfr_mul(r18361099, r18361095, r18361098, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r18361102, r18361096, r18361101, MPFR_RNDN);
        mpfr_mul(r18361103, r18361100, r18361102, MPFR_RNDN);
        ;
        mpfr_mul(r18361105, r18361104, r18361096, MPFR_RNDN);
        mpfr_add(r18361106, r18361103, r18361105, MPFR_RNDN);
        mpfr_add(r18361107, r18361099, r18361106, MPFR_RNDN);
        mpfr_div(r18361108, r18361107, r18361104, MPFR_RNDN);
        return mpfr_get_d(r18361108, MPFR_RNDN);
}

static mpfr_t r18361109, r18361110, r18361111, r18361112, r18361113, r18361114, r18361115, r18361116, r18361117, r18361118, r18361119, r18361120, r18361121, r18361122;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r18361109, "1/3", 10, MPFR_RNDN);
        mpfr_init(r18361110);
        mpfr_init_set_str(r18361111, "3", 10, MPFR_RNDN);
        mpfr_init(r18361112);
        mpfr_init(r18361113);
        mpfr_init_set_str(r18361114, "1/60", 10, MPFR_RNDN);
        mpfr_init_set_str(r18361115, "5", 10, MPFR_RNDN);
        mpfr_init(r18361116);
        mpfr_init(r18361117);
        mpfr_init_set_str(r18361118, "2", 10, MPFR_RNDN);
        mpfr_init(r18361119);
        mpfr_init(r18361120);
        mpfr_init(r18361121);
        mpfr_init(r18361122);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r18361110, x, MPFR_RNDN);
        ;
        mpfr_pow(r18361112, r18361110, r18361111, MPFR_RNDN);
        mpfr_mul(r18361113, r18361109, r18361112, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r18361116, r18361110, r18361115, MPFR_RNDN);
        mpfr_mul(r18361117, r18361114, r18361116, MPFR_RNDN);
        ;
        mpfr_mul(r18361119, r18361118, r18361110, MPFR_RNDN);
        mpfr_add(r18361120, r18361117, r18361119, MPFR_RNDN);
        mpfr_add(r18361121, r18361113, r18361120, MPFR_RNDN);
        mpfr_div(r18361122, r18361121, r18361118, MPFR_RNDN);
        return mpfr_get_d(r18361122, MPFR_RNDN);
}

