#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 r27384 = x;
        float r27385 = r27384 * r27384;
        float r27386 = 1;
        float r27387 = r27385 + r27386;
        float r27388 = sqrt(r27387);
        float r27389 = r27384 + r27388;
        float r27390 = log(r27389);
        return r27390;
}

double f_id(double x) {
        double r27391 = x;
        double r27392 = r27391 * r27391;
        double r27393 = 1;
        double r27394 = r27392 + r27393;
        double r27395 = sqrt(r27394);
        double r27396 = r27391 + r27395;
        double r27397 = log(r27396);
        return r27397;
}


double f_of(float x) {
        float r27398 = x;
        float r27399 = -1.0640424152383887;
        bool r27400 = r27398 <= r27399;
        float r27401 = 1;
        float r27402 = r27401 / r27398;
        float r27403 = 1/8;
        float r27404 = r27403 / r27398;
        float r27405 = 1/2;
        float r27406 = -r27405;
        float r27407 = fma(r27402, r27404, r27406);
        float r27408 = 1/16;
        float r27409 = -r27408;
        float r27410 = 5;
        float r27411 = pow(r27398, r27410);
        float r27412 = r27409 / r27411;
        float r27413 = fma(r27402, r27407, r27412);
        float r27414 = log(r27413);
        float r27415 = 0.008833614747124349;
        bool r27416 = r27398 <= r27415;
        float r27417 = 3/40;
        float r27418 = r27417 * r27411;
        float r27419 = r27418 + r27398;
        float r27420 = 1/6;
        float r27421 = 3;
        float r27422 = pow(r27398, r27421);
        float r27423 = r27420 * r27422;
        float r27424 = r27419 - r27423;
        float r27425 = hypot(r27401, r27398);
        float r27426 = r27425 + r27398;
        float r27427 = sqrt(r27426);
        float r27428 = log(r27427);
        float r27429 = r27428 + r27428;
        float r27430 = r27416 ? r27424 : r27429;
        float r27431 = r27400 ? r27414 : r27430;
        return r27431;
}

double f_od(double x) {
        double r27432 = x;
        double r27433 = -1.0640424152383887;
        bool r27434 = r27432 <= r27433;
        double r27435 = 1;
        double r27436 = r27435 / r27432;
        double r27437 = 1/8;
        double r27438 = r27437 / r27432;
        double r27439 = 1/2;
        double r27440 = -r27439;
        double r27441 = fma(r27436, r27438, r27440);
        double r27442 = 1/16;
        double r27443 = -r27442;
        double r27444 = 5;
        double r27445 = pow(r27432, r27444);
        double r27446 = r27443 / r27445;
        double r27447 = fma(r27436, r27441, r27446);
        double r27448 = log(r27447);
        double r27449 = 0.008833614747124349;
        bool r27450 = r27432 <= r27449;
        double r27451 = 3/40;
        double r27452 = r27451 * r27445;
        double r27453 = r27452 + r27432;
        double r27454 = 1/6;
        double r27455 = 3;
        double r27456 = pow(r27432, r27455);
        double r27457 = r27454 * r27456;
        double r27458 = r27453 - r27457;
        double r27459 = hypot(r27435, r27432);
        double r27460 = r27459 + r27432;
        double r27461 = sqrt(r27460);
        double r27462 = log(r27461);
        double r27463 = r27462 + r27462;
        double r27464 = r27450 ? r27458 : r27463;
        double r27465 = r27434 ? r27448 : r27464;
        return r27465;
}

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 r27466, r27467, r27468, r27469, r27470, r27471, r27472;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27466);
        mpfr_init(r27467);
        mpfr_init_set_str(r27468, "1", 10, MPFR_RNDN);
        mpfr_init(r27469);
        mpfr_init(r27470);
        mpfr_init(r27471);
        mpfr_init(r27472);
}

double f_im(double x) {
        mpfr_set_d(r27466, x, MPFR_RNDN);
        mpfr_mul(r27467, r27466, r27466, MPFR_RNDN);
        ;
        mpfr_add(r27469, r27467, r27468, MPFR_RNDN);
        mpfr_sqrt(r27470, r27469, MPFR_RNDN);
        mpfr_add(r27471, r27466, r27470, MPFR_RNDN);
        mpfr_log(r27472, r27471, MPFR_RNDN);
        return mpfr_get_d(r27472, MPFR_RNDN);
}

static mpfr_t r27473, r27474, r27475, r27476, r27477, r27478, r27479, r27480, r27481, r27482, r27483, r27484, r27485, r27486, r27487, r27488, r27489, r27490, r27491, r27492, r27493, r27494, r27495, r27496, r27497, r27498, r27499, r27500, r27501, r27502, r27503, r27504, r27505, r27506;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27473);
        mpfr_init_set_str(r27474, "-1.0640424152383887", 10, MPFR_RNDN);
        mpfr_init(r27475);
        mpfr_init_set_str(r27476, "1", 10, MPFR_RNDN);
        mpfr_init(r27477);
        mpfr_init_set_str(r27478, "1/8", 10, MPFR_RNDN);
        mpfr_init(r27479);
        mpfr_init_set_str(r27480, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27481);
        mpfr_init(r27482);
        mpfr_init_set_str(r27483, "1/16", 10, MPFR_RNDN);
        mpfr_init(r27484);
        mpfr_init_set_str(r27485, "5", 10, MPFR_RNDN);
        mpfr_init(r27486);
        mpfr_init(r27487);
        mpfr_init(r27488);
        mpfr_init(r27489);
        mpfr_init_set_str(r27490, "0.008833614747124349", 10, MPFR_RNDN);
        mpfr_init(r27491);
        mpfr_init_set_str(r27492, "3/40", 10, MPFR_RNDN);
        mpfr_init(r27493);
        mpfr_init(r27494);
        mpfr_init_set_str(r27495, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r27496, "3", 10, MPFR_RNDN);
        mpfr_init(r27497);
        mpfr_init(r27498);
        mpfr_init(r27499);
        mpfr_init(r27500);
        mpfr_init(r27501);
        mpfr_init(r27502);
        mpfr_init(r27503);
        mpfr_init(r27504);
        mpfr_init(r27505);
        mpfr_init(r27506);
}

double f_fm(double x) {
        mpfr_set_d(r27473, x, MPFR_RNDN);
        ;
        mpfr_set_si(r27475, mpfr_cmp(r27473, r27474) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27477, r27476, r27473, MPFR_RNDN);
        ;
        mpfr_div(r27479, r27478, r27473, MPFR_RNDN);
        ;
        mpfr_neg(r27481, r27480, MPFR_RNDN);
        mpfr_fma(r27482, r27477, r27479, r27481, MPFR_RNDN);
        ;
        mpfr_neg(r27484, r27483, MPFR_RNDN);
        ;
        mpfr_pow(r27486, r27473, r27485, MPFR_RNDN);
        mpfr_div(r27487, r27484, r27486, MPFR_RNDN);
        mpfr_fma(r27488, r27477, r27482, r27487, MPFR_RNDN);
        mpfr_log(r27489, r27488, MPFR_RNDN);
        ;
        mpfr_set_si(r27491, mpfr_cmp(r27473, r27490) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27493, r27492, r27486, MPFR_RNDN);
        mpfr_add(r27494, r27493, r27473, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r27497, r27473, r27496, MPFR_RNDN);
        mpfr_mul(r27498, r27495, r27497, MPFR_RNDN);
        mpfr_sub(r27499, r27494, r27498, MPFR_RNDN);
        mpfr_hypot(r27500, r27476, r27473, MPFR_RNDN);
        mpfr_add(r27501, r27500, r27473, MPFR_RNDN);
        mpfr_sqrt(r27502, r27501, MPFR_RNDN);
        mpfr_log(r27503, r27502, MPFR_RNDN);
        mpfr_add(r27504, r27503, r27503, MPFR_RNDN);
        if (mpfr_get_si(r27491, MPFR_RNDN)) { mpfr_set(r27505, r27499, MPFR_RNDN); } else { mpfr_set(r27505, r27504, MPFR_RNDN); };
        if (mpfr_get_si(r27475, MPFR_RNDN)) { mpfr_set(r27506, r27489, MPFR_RNDN); } else { mpfr_set(r27506, r27505, MPFR_RNDN); };
        return mpfr_get_d(r27506, MPFR_RNDN);
}

static mpfr_t r27507, r27508, r27509, r27510, r27511, r27512, r27513, r27514, r27515, r27516, r27517, r27518, r27519, r27520, r27521, r27522, r27523, r27524, r27525, r27526, r27527, r27528, r27529, r27530, r27531, r27532, r27533, r27534, r27535, r27536, r27537, r27538, r27539, r27540;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27507);
        mpfr_init_set_str(r27508, "-1.0640424152383887", 10, MPFR_RNDN);
        mpfr_init(r27509);
        mpfr_init_set_str(r27510, "1", 10, MPFR_RNDN);
        mpfr_init(r27511);
        mpfr_init_set_str(r27512, "1/8", 10, MPFR_RNDN);
        mpfr_init(r27513);
        mpfr_init_set_str(r27514, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27515);
        mpfr_init(r27516);
        mpfr_init_set_str(r27517, "1/16", 10, MPFR_RNDN);
        mpfr_init(r27518);
        mpfr_init_set_str(r27519, "5", 10, MPFR_RNDN);
        mpfr_init(r27520);
        mpfr_init(r27521);
        mpfr_init(r27522);
        mpfr_init(r27523);
        mpfr_init_set_str(r27524, "0.008833614747124349", 10, MPFR_RNDN);
        mpfr_init(r27525);
        mpfr_init_set_str(r27526, "3/40", 10, MPFR_RNDN);
        mpfr_init(r27527);
        mpfr_init(r27528);
        mpfr_init_set_str(r27529, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r27530, "3", 10, MPFR_RNDN);
        mpfr_init(r27531);
        mpfr_init(r27532);
        mpfr_init(r27533);
        mpfr_init(r27534);
        mpfr_init(r27535);
        mpfr_init(r27536);
        mpfr_init(r27537);
        mpfr_init(r27538);
        mpfr_init(r27539);
        mpfr_init(r27540);
}

double f_dm(double x) {
        mpfr_set_d(r27507, x, MPFR_RNDN);
        ;
        mpfr_set_si(r27509, mpfr_cmp(r27507, r27508) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27511, r27510, r27507, MPFR_RNDN);
        ;
        mpfr_div(r27513, r27512, r27507, MPFR_RNDN);
        ;
        mpfr_neg(r27515, r27514, MPFR_RNDN);
        mpfr_fma(r27516, r27511, r27513, r27515, MPFR_RNDN);
        ;
        mpfr_neg(r27518, r27517, MPFR_RNDN);
        ;
        mpfr_pow(r27520, r27507, r27519, MPFR_RNDN);
        mpfr_div(r27521, r27518, r27520, MPFR_RNDN);
        mpfr_fma(r27522, r27511, r27516, r27521, MPFR_RNDN);
        mpfr_log(r27523, r27522, MPFR_RNDN);
        ;
        mpfr_set_si(r27525, mpfr_cmp(r27507, r27524) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27527, r27526, r27520, MPFR_RNDN);
        mpfr_add(r27528, r27527, r27507, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r27531, r27507, r27530, MPFR_RNDN);
        mpfr_mul(r27532, r27529, r27531, MPFR_RNDN);
        mpfr_sub(r27533, r27528, r27532, MPFR_RNDN);
        mpfr_hypot(r27534, r27510, r27507, MPFR_RNDN);
        mpfr_add(r27535, r27534, r27507, MPFR_RNDN);
        mpfr_sqrt(r27536, r27535, MPFR_RNDN);
        mpfr_log(r27537, r27536, MPFR_RNDN);
        mpfr_add(r27538, r27537, r27537, MPFR_RNDN);
        if (mpfr_get_si(r27525, MPFR_RNDN)) { mpfr_set(r27539, r27533, MPFR_RNDN); } else { mpfr_set(r27539, r27538, MPFR_RNDN); };
        if (mpfr_get_si(r27509, MPFR_RNDN)) { mpfr_set(r27540, r27523, MPFR_RNDN); } else { mpfr_set(r27540, r27539, MPFR_RNDN); };
        return mpfr_get_d(r27540, MPFR_RNDN);
}

