#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 r10978 = x;
        float r10979 = r10978 * r10978;
        float r10980 = 1.0f;
        float r10981 = r10979 + r10980;
        float r10982 = sqrt(r10981);
        float r10983 = r10978 + r10982;
        float r10984 = log(r10983);
        return r10984;
}

double f_id(double x) {
        double r10985 = x;
        double r10986 = r10985 * r10985;
        double r10987 = 1.0;
        double r10988 = r10986 + r10987;
        double r10989 = sqrt(r10988);
        double r10990 = r10985 + r10989;
        double r10991 = log(r10990);
        return r10991;
}


double f_of(float x) {
        float r10992 = x;
        float r10993 = -1.0508372426442374f;
        bool r10994 = r10992 <= r10993;
        float r10995 = 0.125f;
        float r10996 = r10995 / r10992;
        float r10997 = 1.0f;
        float r10998 = r10997 / r10992;
        float r10999 = 0.5f;
        float r11000 = -r10999;
        float r11001 = fma(r10996, r10998, r11000);
        float r11002 = 0.0625f;
        float r11003 = -r11002;
        float r11004 = 5.0f;
        float r11005 = pow(r10992, r11004);
        float r11006 = r11003 / r11005;
        float r11007 = fma(r11001, r10998, r11006);
        float r11008 = log(r11007);
        float r11009 = 0.008701166011638582f;
        bool r11010 = r10992 <= r11009;
        float r11011 = 0.075f;
        float r11012 = r11005 * r11011;
        float r11013 = r11012 + r10992;
        float r11014 = 3.0f;
        float r11015 = pow(r10992, r11014);
        float r11016 = 0.16666666666666666f;
        float r11017 = r11015 * r11016;
        float r11018 = r11013 - r11017;
        float r11019 = hypot(r10997, r10992);
        float r11020 = r11019 + r10992;
        float r11021 = sqrt(r11020);
        float r11022 = log(r11021);
        float r11023 = r11022 + r11022;
        float r11024 = r11010 ? r11018 : r11023;
        float r11025 = r10994 ? r11008 : r11024;
        return r11025;
}

double f_od(double x) {
        double r11026 = x;
        double r11027 = -1.0508372426442374;
        bool r11028 = r11026 <= r11027;
        double r11029 = 0.125;
        double r11030 = r11029 / r11026;
        double r11031 = 1.0;
        double r11032 = r11031 / r11026;
        double r11033 = 0.5;
        double r11034 = -r11033;
        double r11035 = fma(r11030, r11032, r11034);
        double r11036 = 0.0625;
        double r11037 = -r11036;
        double r11038 = 5.0;
        double r11039 = pow(r11026, r11038);
        double r11040 = r11037 / r11039;
        double r11041 = fma(r11035, r11032, r11040);
        double r11042 = log(r11041);
        double r11043 = 0.008701166011638582;
        bool r11044 = r11026 <= r11043;
        double r11045 = 0.075;
        double r11046 = r11039 * r11045;
        double r11047 = r11046 + r11026;
        double r11048 = 3.0;
        double r11049 = pow(r11026, r11048);
        double r11050 = 0.16666666666666666;
        double r11051 = r11049 * r11050;
        double r11052 = r11047 - r11051;
        double r11053 = hypot(r11031, r11026);
        double r11054 = r11053 + r11026;
        double r11055 = sqrt(r11054);
        double r11056 = log(r11055);
        double r11057 = r11056 + r11056;
        double r11058 = r11044 ? r11052 : r11057;
        double r11059 = r11028 ? r11042 : r11058;
        return r11059;
}

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 r11060, r11061, r11062, r11063, r11064, r11065, r11066;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11060);
        mpfr_init(r11061);
        mpfr_init_set_str(r11062, "1", 10, MPFR_RNDN);
        mpfr_init(r11063);
        mpfr_init(r11064);
        mpfr_init(r11065);
        mpfr_init(r11066);
}

double f_im(double x) {
        mpfr_set_d(r11060, x, MPFR_RNDN);
        mpfr_mul(r11061, r11060, r11060, MPFR_RNDN);
        ;
        mpfr_add(r11063, r11061, r11062, MPFR_RNDN);
        mpfr_sqrt(r11064, r11063, MPFR_RNDN);
        mpfr_add(r11065, r11060, r11064, MPFR_RNDN);
        mpfr_log(r11066, r11065, MPFR_RNDN);
        return mpfr_get_d(r11066, MPFR_RNDN);
}

static mpfr_t r11067, r11068, r11069, r11070, r11071, r11072, r11073, r11074, r11075, r11076, r11077, r11078, r11079, r11080, r11081, r11082, r11083, r11084, r11085, r11086, r11087, r11088, r11089, r11090, r11091, r11092, r11093, r11094, r11095, r11096, r11097, r11098, r11099, r11100;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11067);
        mpfr_init_set_str(r11068, "-1.0508372426442374", 10, MPFR_RNDN);
        mpfr_init(r11069);
        mpfr_init_set_str(r11070, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11071);
        mpfr_init_set_str(r11072, "1", 10, MPFR_RNDN);
        mpfr_init(r11073);
        mpfr_init_set_str(r11074, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11075);
        mpfr_init(r11076);
        mpfr_init_set_str(r11077, "1/16", 10, MPFR_RNDN);
        mpfr_init(r11078);
        mpfr_init_set_str(r11079, "5", 10, MPFR_RNDN);
        mpfr_init(r11080);
        mpfr_init(r11081);
        mpfr_init(r11082);
        mpfr_init(r11083);
        mpfr_init_set_str(r11084, "0.008701166011638582", 10, MPFR_RNDN);
        mpfr_init(r11085);
        mpfr_init_set_str(r11086, "3/40", 10, MPFR_RNDN);
        mpfr_init(r11087);
        mpfr_init(r11088);
        mpfr_init_set_str(r11089, "3", 10, MPFR_RNDN);
        mpfr_init(r11090);
        mpfr_init_set_str(r11091, "1/6", 10, MPFR_RNDN);
        mpfr_init(r11092);
        mpfr_init(r11093);
        mpfr_init(r11094);
        mpfr_init(r11095);
        mpfr_init(r11096);
        mpfr_init(r11097);
        mpfr_init(r11098);
        mpfr_init(r11099);
        mpfr_init(r11100);
}

double f_fm(double x) {
        mpfr_set_d(r11067, x, MPFR_RNDN);
        ;
        mpfr_set_si(r11069, mpfr_cmp(r11067, r11068) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11071, r11070, r11067, MPFR_RNDN);
        ;
        mpfr_div(r11073, r11072, r11067, MPFR_RNDN);
        ;
        mpfr_neg(r11075, r11074, MPFR_RNDN);
        mpfr_fma(r11076, r11071, r11073, r11075, MPFR_RNDN);
        ;
        mpfr_neg(r11078, r11077, MPFR_RNDN);
        ;
        mpfr_pow(r11080, r11067, r11079, MPFR_RNDN);
        mpfr_div(r11081, r11078, r11080, MPFR_RNDN);
        mpfr_fma(r11082, r11076, r11073, r11081, MPFR_RNDN);
        mpfr_log(r11083, r11082, MPFR_RNDN);
        ;
        mpfr_set_si(r11085, mpfr_cmp(r11067, r11084) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r11087, r11080, r11086, MPFR_RNDN);
        mpfr_add(r11088, r11087, r11067, MPFR_RNDN);
        ;
        mpfr_pow(r11090, r11067, r11089, MPFR_RNDN);
        ;
        mpfr_mul(r11092, r11090, r11091, MPFR_RNDN);
        mpfr_sub(r11093, r11088, r11092, MPFR_RNDN);
        mpfr_hypot(r11094, r11072, r11067, MPFR_RNDN);
        mpfr_add(r11095, r11094, r11067, MPFR_RNDN);
        mpfr_sqrt(r11096, r11095, MPFR_RNDN);
        mpfr_log(r11097, r11096, MPFR_RNDN);
        mpfr_add(r11098, r11097, r11097, MPFR_RNDN);
        if (mpfr_get_si(r11085, MPFR_RNDN)) { mpfr_set(r11099, r11093, MPFR_RNDN); } else { mpfr_set(r11099, r11098, MPFR_RNDN); };
        if (mpfr_get_si(r11069, MPFR_RNDN)) { mpfr_set(r11100, r11083, MPFR_RNDN); } else { mpfr_set(r11100, r11099, MPFR_RNDN); };
        return mpfr_get_d(r11100, MPFR_RNDN);
}

static mpfr_t r11101, r11102, r11103, r11104, r11105, r11106, r11107, r11108, r11109, r11110, r11111, r11112, r11113, r11114, r11115, r11116, r11117, r11118, r11119, r11120, r11121, r11122, r11123, r11124, r11125, r11126, r11127, r11128, r11129, r11130, r11131, r11132, r11133, r11134;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r11101);
        mpfr_init_set_str(r11102, "-1.0508372426442374", 10, MPFR_RNDN);
        mpfr_init(r11103);
        mpfr_init_set_str(r11104, "1/8", 10, MPFR_RNDN);
        mpfr_init(r11105);
        mpfr_init_set_str(r11106, "1", 10, MPFR_RNDN);
        mpfr_init(r11107);
        mpfr_init_set_str(r11108, "1/2", 10, MPFR_RNDN);
        mpfr_init(r11109);
        mpfr_init(r11110);
        mpfr_init_set_str(r11111, "1/16", 10, MPFR_RNDN);
        mpfr_init(r11112);
        mpfr_init_set_str(r11113, "5", 10, MPFR_RNDN);
        mpfr_init(r11114);
        mpfr_init(r11115);
        mpfr_init(r11116);
        mpfr_init(r11117);
        mpfr_init_set_str(r11118, "0.008701166011638582", 10, MPFR_RNDN);
        mpfr_init(r11119);
        mpfr_init_set_str(r11120, "3/40", 10, MPFR_RNDN);
        mpfr_init(r11121);
        mpfr_init(r11122);
        mpfr_init_set_str(r11123, "3", 10, MPFR_RNDN);
        mpfr_init(r11124);
        mpfr_init_set_str(r11125, "1/6", 10, MPFR_RNDN);
        mpfr_init(r11126);
        mpfr_init(r11127);
        mpfr_init(r11128);
        mpfr_init(r11129);
        mpfr_init(r11130);
        mpfr_init(r11131);
        mpfr_init(r11132);
        mpfr_init(r11133);
        mpfr_init(r11134);
}

double f_dm(double x) {
        mpfr_set_d(r11101, x, MPFR_RNDN);
        ;
        mpfr_set_si(r11103, mpfr_cmp(r11101, r11102) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r11105, r11104, r11101, MPFR_RNDN);
        ;
        mpfr_div(r11107, r11106, r11101, MPFR_RNDN);
        ;
        mpfr_neg(r11109, r11108, MPFR_RNDN);
        mpfr_fma(r11110, r11105, r11107, r11109, MPFR_RNDN);
        ;
        mpfr_neg(r11112, r11111, MPFR_RNDN);
        ;
        mpfr_pow(r11114, r11101, r11113, MPFR_RNDN);
        mpfr_div(r11115, r11112, r11114, MPFR_RNDN);
        mpfr_fma(r11116, r11110, r11107, r11115, MPFR_RNDN);
        mpfr_log(r11117, r11116, MPFR_RNDN);
        ;
        mpfr_set_si(r11119, mpfr_cmp(r11101, r11118) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r11121, r11114, r11120, MPFR_RNDN);
        mpfr_add(r11122, r11121, r11101, MPFR_RNDN);
        ;
        mpfr_pow(r11124, r11101, r11123, MPFR_RNDN);
        ;
        mpfr_mul(r11126, r11124, r11125, MPFR_RNDN);
        mpfr_sub(r11127, r11122, r11126, MPFR_RNDN);
        mpfr_hypot(r11128, r11106, r11101, MPFR_RNDN);
        mpfr_add(r11129, r11128, r11101, MPFR_RNDN);
        mpfr_sqrt(r11130, r11129, MPFR_RNDN);
        mpfr_log(r11131, r11130, MPFR_RNDN);
        mpfr_add(r11132, r11131, r11131, MPFR_RNDN);
        if (mpfr_get_si(r11119, MPFR_RNDN)) { mpfr_set(r11133, r11127, MPFR_RNDN); } else { mpfr_set(r11133, r11132, MPFR_RNDN); };
        if (mpfr_get_si(r11103, MPFR_RNDN)) { mpfr_set(r11134, r11117, MPFR_RNDN); } else { mpfr_set(r11134, r11133, MPFR_RNDN); };
        return mpfr_get_d(r11134, MPFR_RNDN);
}

