#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 r11290 = x;
        float r11291 = r11290 * r11290;
        float r11292 = 1;
        float r11293 = r11291 + r11292;
        float r11294 = sqrt(r11293);
        float r11295 = r11290 + r11294;
        float r11296 = log(r11295);
        return r11296;
}

double f_id(double x) {
        double r11297 = x;
        double r11298 = r11297 * r11297;
        double r11299 = 1;
        double r11300 = r11298 + r11299;
        double r11301 = sqrt(r11300);
        double r11302 = r11297 + r11301;
        double r11303 = log(r11302);
        return r11303;
}


double f_of(float x) {
        float r11304 = x;
        float r11305 = -1.080417316984728;
        bool r11306 = r11304 <= r11305;
        float r11307 = 1/8;
        float r11308 = r11307 / r11304;
        float r11309 = r11304 * r11304;
        float r11310 = r11308 / r11309;
        float r11311 = 1/2;
        float r11312 = r11311 / r11304;
        float r11313 = r11310 - r11312;
        float r11314 = 1/16;
        float r11315 = 5;
        float r11316 = pow(r11304, r11315);
        float r11317 = r11314 / r11316;
        float r11318 = r11313 - r11317;
        float r11319 = log(r11318);
        float r11320 = 0.9514253049954038;
        bool r11321 = r11304 <= r11320;
        float r11322 = 3/40;
        float r11323 = r11322 * r11316;
        float r11324 = r11304 + r11323;
        float r11325 = 1/6;
        float r11326 = 3;
        float r11327 = pow(r11304, r11326);
        float r11328 = r11325 * r11327;
        float r11329 = r11324 - r11328;
        float r11330 = 2;
        float r11331 = r11330 * r11304;
        float r11332 = r11331 + r11312;
        float r11333 = r11332 - r11310;
        float r11334 = log(r11333);
        float r11335 = r11321 ? r11329 : r11334;
        float r11336 = r11306 ? r11319 : r11335;
        return r11336;
}

double f_od(double x) {
        double r11337 = x;
        double r11338 = -1.080417316984728;
        bool r11339 = r11337 <= r11338;
        double r11340 = 1/8;
        double r11341 = r11340 / r11337;
        double r11342 = r11337 * r11337;
        double r11343 = r11341 / r11342;
        double r11344 = 1/2;
        double r11345 = r11344 / r11337;
        double r11346 = r11343 - r11345;
        double r11347 = 1/16;
        double r11348 = 5;
        double r11349 = pow(r11337, r11348);
        double r11350 = r11347 / r11349;
        double r11351 = r11346 - r11350;
        double r11352 = log(r11351);
        double r11353 = 0.9514253049954038;
        bool r11354 = r11337 <= r11353;
        double r11355 = 3/40;
        double r11356 = r11355 * r11349;
        double r11357 = r11337 + r11356;
        double r11358 = 1/6;
        double r11359 = 3;
        double r11360 = pow(r11337, r11359);
        double r11361 = r11358 * r11360;
        double r11362 = r11357 - r11361;
        double r11363 = 2;
        double r11364 = r11363 * r11337;
        double r11365 = r11364 + r11345;
        double r11366 = r11365 - r11343;
        double r11367 = log(r11366);
        double r11368 = r11354 ? r11362 : r11367;
        double r11369 = r11339 ? r11352 : r11368;
        return r11369;
}

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 r11370, r11371, r11372, r11373, r11374, r11375, r11376;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11370);
        mpfr_init(r11371);
        mpfr_init_set_str(r11372, "1", 10, MPFR_RNDN);
        mpfr_init(r11373);
        mpfr_init(r11374);
        mpfr_init(r11375);
        mpfr_init(r11376);
}

double f_im(double x) {
        mpfr_set_d(r11370, x, MPFR_RNDN);
        mpfr_mul(r11371, r11370, r11370, MPFR_RNDN);
        ;
        mpfr_add(r11373, r11371, r11372, MPFR_RNDN);
        mpfr_sqrt(r11374, r11373, MPFR_RNDN);
        mpfr_add(r11375, r11370, r11374, MPFR_RNDN);
        mpfr_log(r11376, r11375, MPFR_RNDN);
        return mpfr_get_d(r11376, MPFR_RNDN);
}

static mpfr_t r11377, r11378, r11379, r11380, r11381, r11382, r11383, r11384, r11385, r11386, r11387, r11388, r11389, r11390, r11391, r11392, r11393, r11394, r11395, r11396, r11397, r11398, r11399, r11400, r11401, r11402, r11403, r11404, r11405, r11406, r11407, r11408, r11409;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11377);
        mpfr_init_set_str(r11378, "-1.080417316984728", 10, MPFR_RNDN);
        mpfr_init(r11379);
        mpfr_init_set_str(r11380, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11381);
        mpfr_init(r11382);
        mpfr_init(r11383);
        mpfr_init_set_str(r11384, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11385);
        mpfr_init(r11386);
        mpfr_init_set_str(r11387, "1/16", 10, MPFR_RNDN);
        mpfr_init_set_str(r11388, "5", 10, MPFR_RNDN);
        mpfr_init(r11389);
        mpfr_init(r11390);
        mpfr_init(r11391);
        mpfr_init(r11392);
        mpfr_init_set_str(r11393, "0.9514253049954038", 10, MPFR_RNDN);
        mpfr_init(r11394);
        mpfr_init_set_str(r11395, "3/40", 10, MPFR_RNDN);
        mpfr_init(r11396);
        mpfr_init(r11397);
        mpfr_init_set_str(r11398, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r11399, "3", 10, MPFR_RNDN);
        mpfr_init(r11400);
        mpfr_init(r11401);
        mpfr_init(r11402);
        mpfr_init_set_str(r11403, "2", 10, MPFR_RNDN);
        mpfr_init(r11404);
        mpfr_init(r11405);
        mpfr_init(r11406);
        mpfr_init(r11407);
        mpfr_init(r11408);
        mpfr_init(r11409);
}

double f_fm(double x) {
        mpfr_set_d(r11377, x, MPFR_RNDN);
        ;
        mpfr_set_si(r11379, mpfr_cmp(r11377, r11378) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11381, r11380, r11377, MPFR_RNDN);
        mpfr_mul(r11382, r11377, r11377, MPFR_RNDN);
        mpfr_div(r11383, r11381, r11382, MPFR_RNDN);
        ;
        mpfr_div(r11385, r11384, r11377, MPFR_RNDN);
        mpfr_sub(r11386, r11383, r11385, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11389, r11377, r11388, MPFR_RNDN);
        mpfr_div(r11390, r11387, r11389, MPFR_RNDN);
        mpfr_sub(r11391, r11386, r11390, MPFR_RNDN);
        mpfr_log(r11392, r11391, MPFR_RNDN);
        ;
        mpfr_set_si(r11394, mpfr_cmp(r11377, r11393) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r11396, r11395, r11389, MPFR_RNDN);
        mpfr_add(r11397, r11377, r11396, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11400, r11377, r11399, MPFR_RNDN);
        mpfr_mul(r11401, r11398, r11400, MPFR_RNDN);
        mpfr_sub(r11402, r11397, r11401, MPFR_RNDN);
        ;
        mpfr_mul(r11404, r11403, r11377, MPFR_RNDN);
        mpfr_add(r11405, r11404, r11385, MPFR_RNDN);
        mpfr_sub(r11406, r11405, r11383, MPFR_RNDN);
        mpfr_log(r11407, r11406, MPFR_RNDN);
        if (mpfr_get_si(r11394, MPFR_RNDN)) { mpfr_set(r11408, r11402, MPFR_RNDN); } else { mpfr_set(r11408, r11407, MPFR_RNDN); };
        if (mpfr_get_si(r11379, MPFR_RNDN)) { mpfr_set(r11409, r11392, MPFR_RNDN); } else { mpfr_set(r11409, r11408, MPFR_RNDN); };
        return mpfr_get_d(r11409, MPFR_RNDN);
}

static mpfr_t r11410, r11411, r11412, r11413, r11414, r11415, r11416, r11417, r11418, r11419, r11420, r11421, r11422, r11423, r11424, r11425, r11426, r11427, r11428, r11429, r11430, r11431, r11432, r11433, r11434, r11435, r11436, r11437, r11438, r11439, r11440, r11441, r11442;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11410);
        mpfr_init_set_str(r11411, "-1.080417316984728", 10, MPFR_RNDN);
        mpfr_init(r11412);
        mpfr_init_set_str(r11413, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11414);
        mpfr_init(r11415);
        mpfr_init(r11416);
        mpfr_init_set_str(r11417, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11418);
        mpfr_init(r11419);
        mpfr_init_set_str(r11420, "1/16", 10, MPFR_RNDN);
        mpfr_init_set_str(r11421, "5", 10, MPFR_RNDN);
        mpfr_init(r11422);
        mpfr_init(r11423);
        mpfr_init(r11424);
        mpfr_init(r11425);
        mpfr_init_set_str(r11426, "0.9514253049954038", 10, MPFR_RNDN);
        mpfr_init(r11427);
        mpfr_init_set_str(r11428, "3/40", 10, MPFR_RNDN);
        mpfr_init(r11429);
        mpfr_init(r11430);
        mpfr_init_set_str(r11431, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r11432, "3", 10, MPFR_RNDN);
        mpfr_init(r11433);
        mpfr_init(r11434);
        mpfr_init(r11435);
        mpfr_init_set_str(r11436, "2", 10, MPFR_RNDN);
        mpfr_init(r11437);
        mpfr_init(r11438);
        mpfr_init(r11439);
        mpfr_init(r11440);
        mpfr_init(r11441);
        mpfr_init(r11442);
}

double f_dm(double x) {
        mpfr_set_d(r11410, x, MPFR_RNDN);
        ;
        mpfr_set_si(r11412, mpfr_cmp(r11410, r11411) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11414, r11413, r11410, MPFR_RNDN);
        mpfr_mul(r11415, r11410, r11410, MPFR_RNDN);
        mpfr_div(r11416, r11414, r11415, MPFR_RNDN);
        ;
        mpfr_div(r11418, r11417, r11410, MPFR_RNDN);
        mpfr_sub(r11419, r11416, r11418, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11422, r11410, r11421, MPFR_RNDN);
        mpfr_div(r11423, r11420, r11422, MPFR_RNDN);
        mpfr_sub(r11424, r11419, r11423, MPFR_RNDN);
        mpfr_log(r11425, r11424, MPFR_RNDN);
        ;
        mpfr_set_si(r11427, mpfr_cmp(r11410, r11426) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r11429, r11428, r11422, MPFR_RNDN);
        mpfr_add(r11430, r11410, r11429, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r11433, r11410, r11432, MPFR_RNDN);
        mpfr_mul(r11434, r11431, r11433, MPFR_RNDN);
        mpfr_sub(r11435, r11430, r11434, MPFR_RNDN);
        ;
        mpfr_mul(r11437, r11436, r11410, MPFR_RNDN);
        mpfr_add(r11438, r11437, r11418, MPFR_RNDN);
        mpfr_sub(r11439, r11438, r11416, MPFR_RNDN);
        mpfr_log(r11440, r11439, MPFR_RNDN);
        if (mpfr_get_si(r11427, MPFR_RNDN)) { mpfr_set(r11441, r11435, MPFR_RNDN); } else { mpfr_set(r11441, r11440, MPFR_RNDN); };
        if (mpfr_get_si(r11412, MPFR_RNDN)) { mpfr_set(r11442, r11425, MPFR_RNDN); } else { mpfr_set(r11442, r11441, MPFR_RNDN); };
        return mpfr_get_d(r11442, MPFR_RNDN);
}

