#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Hyperbolic arcsine";

double f_if(float x) {
        float r48218 = x;
        float r48219 = r48218 * r48218;
        float r48220 = 1;
        float r48221 = r48219 + r48220;
        float r48222 = sqrt(r48221);
        float r48223 = r48218 + r48222;
        float r48224 = log(r48223);
        return r48224;
}

double f_id(double x) {
        double r48225 = x;
        double r48226 = r48225 * r48225;
        double r48227 = 1;
        double r48228 = r48226 + r48227;
        double r48229 = sqrt(r48228);
        double r48230 = r48225 + r48229;
        double r48231 = log(r48230);
        return r48231;
}


double f_of(float x) {
        float r48232 = x;
        float r48233 = -0.6133087509099974;
        bool r48234 = r48232 <= r48233;
        float r48235 = 1/8;
        float r48236 = r48235 / r48232;
        float r48237 = r48232 * r48232;
        float r48238 = r48236 / r48237;
        float r48239 = 1/2;
        float r48240 = r48239 / r48232;
        float r48241 = r48238 - r48240;
        float r48242 = log(r48241);
        float r48243 = 28.914529720558605;
        bool r48244 = r48232 <= r48243;
        float r48245 = 3/40;
        float r48246 = 5;
        float r48247 = pow(r48232, r48246);
        float r48248 = r48245 * r48247;
        float r48249 = r48248 + r48232;
        float r48250 = 1/6;
        float r48251 = 3;
        float r48252 = pow(r48232, r48251);
        float r48253 = r48250 * r48252;
        float r48254 = r48249 - r48253;
        float r48255 = r48232 + r48232;
        float r48256 = r48240 + r48255;
        float r48257 = r48256 - r48238;
        float r48258 = log(r48257);
        float r48259 = r48244 ? r48254 : r48258;
        float r48260 = r48234 ? r48242 : r48259;
        return r48260;
}

double f_od(double x) {
        double r48261 = x;
        double r48262 = -0.6133087509099974;
        bool r48263 = r48261 <= r48262;
        double r48264 = 1/8;
        double r48265 = r48264 / r48261;
        double r48266 = r48261 * r48261;
        double r48267 = r48265 / r48266;
        double r48268 = 1/2;
        double r48269 = r48268 / r48261;
        double r48270 = r48267 - r48269;
        double r48271 = log(r48270);
        double r48272 = 28.914529720558605;
        bool r48273 = r48261 <= r48272;
        double r48274 = 3/40;
        double r48275 = 5;
        double r48276 = pow(r48261, r48275);
        double r48277 = r48274 * r48276;
        double r48278 = r48277 + r48261;
        double r48279 = 1/6;
        double r48280 = 3;
        double r48281 = pow(r48261, r48280);
        double r48282 = r48279 * r48281;
        double r48283 = r48278 - r48282;
        double r48284 = r48261 + r48261;
        double r48285 = r48269 + r48284;
        double r48286 = r48285 - r48267;
        double r48287 = log(r48286);
        double r48288 = r48273 ? r48283 : r48287;
        double r48289 = r48263 ? r48271 : r48288;
        return r48289;
}

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 r48290, r48291, r48292, r48293, r48294, r48295, r48296;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r48290);
        mpfr_init(r48291);
        mpfr_init_set_str(r48292, "1", 10, MPFR_RNDN);
        mpfr_init(r48293);
        mpfr_init(r48294);
        mpfr_init(r48295);
        mpfr_init(r48296);
}

double f_im(double x) {
        mpfr_set_d(r48290, x, MPFR_RNDN);
        mpfr_mul(r48291, r48290, r48290, MPFR_RNDN);
        ;
        mpfr_add(r48293, r48291, r48292, MPFR_RNDN);
        mpfr_sqrt(r48294, r48293, MPFR_RNDN);
        mpfr_add(r48295, r48290, r48294, MPFR_RNDN);
        mpfr_log(r48296, r48295, MPFR_RNDN);
        return mpfr_get_d(r48296, MPFR_RNDN);
}

static mpfr_t r48297, r48298, r48299, r48300, r48301, r48302, r48303, r48304, r48305, r48306, r48307, r48308, r48309, r48310, r48311, r48312, r48313, r48314, r48315, r48316, r48317, r48318, r48319, r48320, r48321, r48322, r48323, r48324, r48325;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r48297);
        mpfr_init_set_str(r48298, "-0.6133087509099974", 10, MPFR_RNDN);
        mpfr_init(r48299);
        mpfr_init_set_str(r48300, "1/8", 10, MPFR_RNDN);
        mpfr_init(r48301);
        mpfr_init(r48302);
        mpfr_init(r48303);
        mpfr_init_set_str(r48304, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48305);
        mpfr_init(r48306);
        mpfr_init(r48307);
        mpfr_init_set_str(r48308, "28.914529720558605", 10, MPFR_RNDN);
        mpfr_init(r48309);
        mpfr_init_set_str(r48310, "3/40", 10, MPFR_RNDN);
        mpfr_init_set_str(r48311, "5", 10, MPFR_RNDN);
        mpfr_init(r48312);
        mpfr_init(r48313);
        mpfr_init(r48314);
        mpfr_init_set_str(r48315, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r48316, "3", 10, MPFR_RNDN);
        mpfr_init(r48317);
        mpfr_init(r48318);
        mpfr_init(r48319);
        mpfr_init(r48320);
        mpfr_init(r48321);
        mpfr_init(r48322);
        mpfr_init(r48323);
        mpfr_init(r48324);
        mpfr_init(r48325);
}

double f_fm(double x) {
        mpfr_set_d(r48297, x, MPFR_RNDN);
        ;
        mpfr_set_si(r48299, mpfr_cmp(r48297, r48298) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r48301, r48300, r48297, MPFR_RNDN);
        mpfr_mul(r48302, r48297, r48297, MPFR_RNDN);
        mpfr_div(r48303, r48301, r48302, MPFR_RNDN);
        ;
        mpfr_div(r48305, r48304, r48297, MPFR_RNDN);
        mpfr_sub(r48306, r48303, r48305, MPFR_RNDN);
        mpfr_log(r48307, r48306, MPFR_RNDN);
        ;
        mpfr_set_si(r48309, mpfr_cmp(r48297, r48308) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r48312, r48297, r48311, MPFR_RNDN);
        mpfr_mul(r48313, r48310, r48312, MPFR_RNDN);
        mpfr_add(r48314, r48313, r48297, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r48317, r48297, r48316, MPFR_RNDN);
        mpfr_mul(r48318, r48315, r48317, MPFR_RNDN);
        mpfr_sub(r48319, r48314, r48318, MPFR_RNDN);
        mpfr_add(r48320, r48297, r48297, MPFR_RNDN);
        mpfr_add(r48321, r48305, r48320, MPFR_RNDN);
        mpfr_sub(r48322, r48321, r48303, MPFR_RNDN);
        mpfr_log(r48323, r48322, MPFR_RNDN);
        if (mpfr_get_si(r48309, MPFR_RNDN)) { mpfr_set(r48324, r48319, MPFR_RNDN); } else { mpfr_set(r48324, r48323, MPFR_RNDN); };
        if (mpfr_get_si(r48299, MPFR_RNDN)) { mpfr_set(r48325, r48307, MPFR_RNDN); } else { mpfr_set(r48325, r48324, MPFR_RNDN); };
        return mpfr_get_d(r48325, MPFR_RNDN);
}

static mpfr_t r48326, r48327, r48328, r48329, r48330, r48331, r48332, r48333, r48334, r48335, r48336, r48337, r48338, r48339, r48340, r48341, r48342, r48343, r48344, r48345, r48346, r48347, r48348, r48349, r48350, r48351, r48352, r48353, r48354;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r48326);
        mpfr_init_set_str(r48327, "-0.6133087509099974", 10, MPFR_RNDN);
        mpfr_init(r48328);
        mpfr_init_set_str(r48329, "1/8", 10, MPFR_RNDN);
        mpfr_init(r48330);
        mpfr_init(r48331);
        mpfr_init(r48332);
        mpfr_init_set_str(r48333, "1/2", 10, MPFR_RNDN);
        mpfr_init(r48334);
        mpfr_init(r48335);
        mpfr_init(r48336);
        mpfr_init_set_str(r48337, "28.914529720558605", 10, MPFR_RNDN);
        mpfr_init(r48338);
        mpfr_init_set_str(r48339, "3/40", 10, MPFR_RNDN);
        mpfr_init_set_str(r48340, "5", 10, MPFR_RNDN);
        mpfr_init(r48341);
        mpfr_init(r48342);
        mpfr_init(r48343);
        mpfr_init_set_str(r48344, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r48345, "3", 10, MPFR_RNDN);
        mpfr_init(r48346);
        mpfr_init(r48347);
        mpfr_init(r48348);
        mpfr_init(r48349);
        mpfr_init(r48350);
        mpfr_init(r48351);
        mpfr_init(r48352);
        mpfr_init(r48353);
        mpfr_init(r48354);
}

double f_dm(double x) {
        mpfr_set_d(r48326, x, MPFR_RNDN);
        ;
        mpfr_set_si(r48328, mpfr_cmp(r48326, r48327) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r48330, r48329, r48326, MPFR_RNDN);
        mpfr_mul(r48331, r48326, r48326, MPFR_RNDN);
        mpfr_div(r48332, r48330, r48331, MPFR_RNDN);
        ;
        mpfr_div(r48334, r48333, r48326, MPFR_RNDN);
        mpfr_sub(r48335, r48332, r48334, MPFR_RNDN);
        mpfr_log(r48336, r48335, MPFR_RNDN);
        ;
        mpfr_set_si(r48338, mpfr_cmp(r48326, r48337) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r48341, r48326, r48340, MPFR_RNDN);
        mpfr_mul(r48342, r48339, r48341, MPFR_RNDN);
        mpfr_add(r48343, r48342, r48326, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r48346, r48326, r48345, MPFR_RNDN);
        mpfr_mul(r48347, r48344, r48346, MPFR_RNDN);
        mpfr_sub(r48348, r48343, r48347, MPFR_RNDN);
        mpfr_add(r48349, r48326, r48326, MPFR_RNDN);
        mpfr_add(r48350, r48334, r48349, MPFR_RNDN);
        mpfr_sub(r48351, r48350, r48332, MPFR_RNDN);
        mpfr_log(r48352, r48351, MPFR_RNDN);
        if (mpfr_get_si(r48338, MPFR_RNDN)) { mpfr_set(r48353, r48348, MPFR_RNDN); } else { mpfr_set(r48353, r48352, MPFR_RNDN); };
        if (mpfr_get_si(r48328, MPFR_RNDN)) { mpfr_set(r48354, r48336, MPFR_RNDN); } else { mpfr_set(r48354, r48353, MPFR_RNDN); };
        return mpfr_get_d(r48354, MPFR_RNDN);
}

