#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 r27230 = x;
        float r27231 = r27230 * r27230;
        float r27232 = 1;
        float r27233 = r27231 + r27232;
        float r27234 = sqrt(r27233);
        float r27235 = r27230 + r27234;
        float r27236 = log(r27235);
        return r27236;
}

double f_id(double x) {
        double r27237 = x;
        double r27238 = r27237 * r27237;
        double r27239 = 1;
        double r27240 = r27238 + r27239;
        double r27241 = sqrt(r27240);
        double r27242 = r27237 + r27241;
        double r27243 = log(r27242);
        return r27243;
}


double f_of(float x) {
        float r27244 = x;
        float r27245 = -1.0681877647337914;
        bool r27246 = r27244 <= r27245;
        float r27247 = 1;
        float r27248 = r27247 / r27244;
        float r27249 = 1/8;
        float r27250 = r27249 / r27244;
        float r27251 = 1/2;
        float r27252 = -r27251;
        float r27253 = fma(r27248, r27250, r27252);
        float r27254 = 1/16;
        float r27255 = -r27254;
        float r27256 = 5;
        float r27257 = pow(r27244, r27256);
        float r27258 = r27255 / r27257;
        float r27259 = fma(r27248, r27253, r27258);
        float r27260 = log(r27259);
        float r27261 = 0.00862471196456688;
        bool r27262 = r27244 <= r27261;
        float r27263 = 3/40;
        float r27264 = r27263 * r27257;
        float r27265 = r27264 + r27244;
        float r27266 = 1/6;
        float r27267 = 3;
        float r27268 = pow(r27244, r27267);
        float r27269 = r27266 * r27268;
        float r27270 = r27265 - r27269;
        float r27271 = hypot(r27247, r27244);
        float r27272 = sqrt(r27271);
        float r27273 = fma(r27272, r27272, r27244);
        float r27274 = log(r27273);
        float r27275 = r27262 ? r27270 : r27274;
        float r27276 = r27246 ? r27260 : r27275;
        return r27276;
}

double f_od(double x) {
        double r27277 = x;
        double r27278 = -1.0681877647337914;
        bool r27279 = r27277 <= r27278;
        double r27280 = 1;
        double r27281 = r27280 / r27277;
        double r27282 = 1/8;
        double r27283 = r27282 / r27277;
        double r27284 = 1/2;
        double r27285 = -r27284;
        double r27286 = fma(r27281, r27283, r27285);
        double r27287 = 1/16;
        double r27288 = -r27287;
        double r27289 = 5;
        double r27290 = pow(r27277, r27289);
        double r27291 = r27288 / r27290;
        double r27292 = fma(r27281, r27286, r27291);
        double r27293 = log(r27292);
        double r27294 = 0.00862471196456688;
        bool r27295 = r27277 <= r27294;
        double r27296 = 3/40;
        double r27297 = r27296 * r27290;
        double r27298 = r27297 + r27277;
        double r27299 = 1/6;
        double r27300 = 3;
        double r27301 = pow(r27277, r27300);
        double r27302 = r27299 * r27301;
        double r27303 = r27298 - r27302;
        double r27304 = hypot(r27280, r27277);
        double r27305 = sqrt(r27304);
        double r27306 = fma(r27305, r27305, r27277);
        double r27307 = log(r27306);
        double r27308 = r27295 ? r27303 : r27307;
        double r27309 = r27279 ? r27293 : r27308;
        return r27309;
}

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 r27310, r27311, r27312, r27313, r27314, r27315, r27316;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27310);
        mpfr_init(r27311);
        mpfr_init_set_str(r27312, "1", 10, MPFR_RNDN);
        mpfr_init(r27313);
        mpfr_init(r27314);
        mpfr_init(r27315);
        mpfr_init(r27316);
}

double f_im(double x) {
        mpfr_set_d(r27310, x, MPFR_RNDN);
        mpfr_mul(r27311, r27310, r27310, MPFR_RNDN);
        ;
        mpfr_add(r27313, r27311, r27312, MPFR_RNDN);
        mpfr_sqrt(r27314, r27313, MPFR_RNDN);
        mpfr_add(r27315, r27310, r27314, MPFR_RNDN);
        mpfr_log(r27316, r27315, MPFR_RNDN);
        return mpfr_get_d(r27316, MPFR_RNDN);
}

static mpfr_t r27317, r27318, r27319, r27320, r27321, r27322, r27323, r27324, r27325, r27326, r27327, r27328, r27329, r27330, r27331, r27332, r27333, r27334, r27335, r27336, r27337, r27338, r27339, r27340, r27341, r27342, r27343, r27344, r27345, r27346, r27347, r27348, r27349;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27317);
        mpfr_init_set_str(r27318, "-1.0681877647337914", 10, MPFR_RNDN);
        mpfr_init(r27319);
        mpfr_init_set_str(r27320, "1", 10, MPFR_RNDN);
        mpfr_init(r27321);
        mpfr_init_set_str(r27322, "1/8", 10, MPFR_RNDN);
        mpfr_init(r27323);
        mpfr_init_set_str(r27324, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27325);
        mpfr_init(r27326);
        mpfr_init_set_str(r27327, "1/16", 10, MPFR_RNDN);
        mpfr_init(r27328);
        mpfr_init_set_str(r27329, "5", 10, MPFR_RNDN);
        mpfr_init(r27330);
        mpfr_init(r27331);
        mpfr_init(r27332);
        mpfr_init(r27333);
        mpfr_init_set_str(r27334, "0.00862471196456688", 10, MPFR_RNDN);
        mpfr_init(r27335);
        mpfr_init_set_str(r27336, "3/40", 10, MPFR_RNDN);
        mpfr_init(r27337);
        mpfr_init(r27338);
        mpfr_init_set_str(r27339, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r27340, "3", 10, MPFR_RNDN);
        mpfr_init(r27341);
        mpfr_init(r27342);
        mpfr_init(r27343);
        mpfr_init(r27344);
        mpfr_init(r27345);
        mpfr_init(r27346);
        mpfr_init(r27347);
        mpfr_init(r27348);
        mpfr_init(r27349);
}

double f_fm(double x) {
        mpfr_set_d(r27317, x, MPFR_RNDN);
        ;
        mpfr_set_si(r27319, mpfr_cmp(r27317, r27318) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27321, r27320, r27317, MPFR_RNDN);
        ;
        mpfr_div(r27323, r27322, r27317, MPFR_RNDN);
        ;
        mpfr_neg(r27325, r27324, MPFR_RNDN);
        mpfr_fma(r27326, r27321, r27323, r27325, MPFR_RNDN);
        ;
        mpfr_neg(r27328, r27327, MPFR_RNDN);
        ;
        mpfr_pow(r27330, r27317, r27329, MPFR_RNDN);
        mpfr_div(r27331, r27328, r27330, MPFR_RNDN);
        mpfr_fma(r27332, r27321, r27326, r27331, MPFR_RNDN);
        mpfr_log(r27333, r27332, MPFR_RNDN);
        ;
        mpfr_set_si(r27335, mpfr_cmp(r27317, r27334) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27337, r27336, r27330, MPFR_RNDN);
        mpfr_add(r27338, r27337, r27317, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r27341, r27317, r27340, MPFR_RNDN);
        mpfr_mul(r27342, r27339, r27341, MPFR_RNDN);
        mpfr_sub(r27343, r27338, r27342, MPFR_RNDN);
        mpfr_hypot(r27344, r27320, r27317, MPFR_RNDN);
        mpfr_sqrt(r27345, r27344, MPFR_RNDN);
        mpfr_fma(r27346, r27345, r27345, r27317, MPFR_RNDN);
        mpfr_log(r27347, r27346, MPFR_RNDN);
        if (mpfr_get_si(r27335, MPFR_RNDN)) { mpfr_set(r27348, r27343, MPFR_RNDN); } else { mpfr_set(r27348, r27347, MPFR_RNDN); };
        if (mpfr_get_si(r27319, MPFR_RNDN)) { mpfr_set(r27349, r27333, MPFR_RNDN); } else { mpfr_set(r27349, r27348, MPFR_RNDN); };
        return mpfr_get_d(r27349, MPFR_RNDN);
}

static mpfr_t r27350, r27351, r27352, r27353, r27354, r27355, r27356, r27357, r27358, r27359, r27360, r27361, r27362, r27363, r27364, r27365, r27366, r27367, r27368, r27369, r27370, r27371, r27372, r27373, r27374, r27375, r27376, r27377, r27378, r27379, r27380, r27381, r27382;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27350);
        mpfr_init_set_str(r27351, "-1.0681877647337914", 10, MPFR_RNDN);
        mpfr_init(r27352);
        mpfr_init_set_str(r27353, "1", 10, MPFR_RNDN);
        mpfr_init(r27354);
        mpfr_init_set_str(r27355, "1/8", 10, MPFR_RNDN);
        mpfr_init(r27356);
        mpfr_init_set_str(r27357, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27358);
        mpfr_init(r27359);
        mpfr_init_set_str(r27360, "1/16", 10, MPFR_RNDN);
        mpfr_init(r27361);
        mpfr_init_set_str(r27362, "5", 10, MPFR_RNDN);
        mpfr_init(r27363);
        mpfr_init(r27364);
        mpfr_init(r27365);
        mpfr_init(r27366);
        mpfr_init_set_str(r27367, "0.00862471196456688", 10, MPFR_RNDN);
        mpfr_init(r27368);
        mpfr_init_set_str(r27369, "3/40", 10, MPFR_RNDN);
        mpfr_init(r27370);
        mpfr_init(r27371);
        mpfr_init_set_str(r27372, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r27373, "3", 10, MPFR_RNDN);
        mpfr_init(r27374);
        mpfr_init(r27375);
        mpfr_init(r27376);
        mpfr_init(r27377);
        mpfr_init(r27378);
        mpfr_init(r27379);
        mpfr_init(r27380);
        mpfr_init(r27381);
        mpfr_init(r27382);
}

double f_dm(double x) {
        mpfr_set_d(r27350, x, MPFR_RNDN);
        ;
        mpfr_set_si(r27352, mpfr_cmp(r27350, r27351) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27354, r27353, r27350, MPFR_RNDN);
        ;
        mpfr_div(r27356, r27355, r27350, MPFR_RNDN);
        ;
        mpfr_neg(r27358, r27357, MPFR_RNDN);
        mpfr_fma(r27359, r27354, r27356, r27358, MPFR_RNDN);
        ;
        mpfr_neg(r27361, r27360, MPFR_RNDN);
        ;
        mpfr_pow(r27363, r27350, r27362, MPFR_RNDN);
        mpfr_div(r27364, r27361, r27363, MPFR_RNDN);
        mpfr_fma(r27365, r27354, r27359, r27364, MPFR_RNDN);
        mpfr_log(r27366, r27365, MPFR_RNDN);
        ;
        mpfr_set_si(r27368, mpfr_cmp(r27350, r27367) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27370, r27369, r27363, MPFR_RNDN);
        mpfr_add(r27371, r27370, r27350, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r27374, r27350, r27373, MPFR_RNDN);
        mpfr_mul(r27375, r27372, r27374, MPFR_RNDN);
        mpfr_sub(r27376, r27371, r27375, MPFR_RNDN);
        mpfr_hypot(r27377, r27353, r27350, MPFR_RNDN);
        mpfr_sqrt(r27378, r27377, MPFR_RNDN);
        mpfr_fma(r27379, r27378, r27378, r27350, MPFR_RNDN);
        mpfr_log(r27380, r27379, MPFR_RNDN);
        if (mpfr_get_si(r27368, MPFR_RNDN)) { mpfr_set(r27381, r27376, MPFR_RNDN); } else { mpfr_set(r27381, r27380, MPFR_RNDN); };
        if (mpfr_get_si(r27352, MPFR_RNDN)) { mpfr_set(r27382, r27366, MPFR_RNDN); } else { mpfr_set(r27382, r27381, MPFR_RNDN); };
        return mpfr_get_d(r27382, MPFR_RNDN);
}

