#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 r24955 = x;
        float r24956 = r24955 * r24955;
        float r24957 = 1;
        float r24958 = r24956 + r24957;
        float r24959 = sqrt(r24958);
        float r24960 = r24955 + r24959;
        float r24961 = log(r24960);
        return r24961;
}

double f_id(double x) {
        double r24962 = x;
        double r24963 = r24962 * r24962;
        double r24964 = 1;
        double r24965 = r24963 + r24964;
        double r24966 = sqrt(r24965);
        double r24967 = r24962 + r24966;
        double r24968 = log(r24967);
        return r24968;
}


double f_of(float x) {
        float r24969 = 1/8;
        float r24970 = x;
        float r24971 = r24969 / r24970;
        float r24972 = r24970 * r24970;
        float r24973 = r24971 / r24972;
        float r24974 = 1/2;
        float r24975 = r24974 / r24970;
        float r24976 = r24973 - r24975;
        float r24977 = -536.0230928176488;
        bool r24978 = r24976 <= r24977;
        float r24979 = 3/40;
        float r24980 = 5;
        float r24981 = pow(r24970, r24980);
        float r24982 = r24979 * r24981;
        float r24983 = r24982 + r24970;
        float r24984 = 1/6;
        float r24985 = 3;
        float r24986 = pow(r24970, r24985);
        float r24987 = r24984 * r24986;
        float r24988 = r24983 - r24987;
        float r24989 = 1.3496677481081412e-294;
        bool r24990 = r24976 <= r24989;
        float r24991 = 1;
        float r24992 = hypot(r24991, r24970);
        float r24993 = r24992 + r24970;
        float r24994 = sqrt(r24993);
        float r24995 = log(r24994);
        float r24996 = r24995 + r24995;
        float r24997 = 1.245804171722264e-06;
        bool r24998 = r24976 <= r24997;
        float r24999 = log(r24976);
        float r25000 = r24998 ? r24999 : r24988;
        float r25001 = r24990 ? r24996 : r25000;
        float r25002 = r24978 ? r24988 : r25001;
        return r25002;
}

double f_od(double x) {
        double r25003 = 1/8;
        double r25004 = x;
        double r25005 = r25003 / r25004;
        double r25006 = r25004 * r25004;
        double r25007 = r25005 / r25006;
        double r25008 = 1/2;
        double r25009 = r25008 / r25004;
        double r25010 = r25007 - r25009;
        double r25011 = -536.0230928176488;
        bool r25012 = r25010 <= r25011;
        double r25013 = 3/40;
        double r25014 = 5;
        double r25015 = pow(r25004, r25014);
        double r25016 = r25013 * r25015;
        double r25017 = r25016 + r25004;
        double r25018 = 1/6;
        double r25019 = 3;
        double r25020 = pow(r25004, r25019);
        double r25021 = r25018 * r25020;
        double r25022 = r25017 - r25021;
        double r25023 = 1.3496677481081412e-294;
        bool r25024 = r25010 <= r25023;
        double r25025 = 1;
        double r25026 = hypot(r25025, r25004);
        double r25027 = r25026 + r25004;
        double r25028 = sqrt(r25027);
        double r25029 = log(r25028);
        double r25030 = r25029 + r25029;
        double r25031 = 1.245804171722264e-06;
        bool r25032 = r25010 <= r25031;
        double r25033 = log(r25010);
        double r25034 = r25032 ? r25033 : r25022;
        double r25035 = r25024 ? r25030 : r25034;
        double r25036 = r25012 ? r25022 : r25035;
        return r25036;
}

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 r25037, r25038, r25039, r25040, r25041, r25042, r25043;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r25037);
        mpfr_init(r25038);
        mpfr_init_set_str(r25039, "1", 10, MPFR_RNDN);
        mpfr_init(r25040);
        mpfr_init(r25041);
        mpfr_init(r25042);
        mpfr_init(r25043);
}

double f_im(double x) {
        mpfr_set_d(r25037, x, MPFR_RNDN);
        mpfr_mul(r25038, r25037, r25037, MPFR_RNDN);
        ;
        mpfr_add(r25040, r25038, r25039, MPFR_RNDN);
        mpfr_sqrt(r25041, r25040, MPFR_RNDN);
        mpfr_add(r25042, r25037, r25041, MPFR_RNDN);
        mpfr_log(r25043, r25042, MPFR_RNDN);
        return mpfr_get_d(r25043, MPFR_RNDN);
}

static mpfr_t r25044, r25045, r25046, r25047, r25048, r25049, r25050, r25051, r25052, r25053, r25054, r25055, r25056, r25057, r25058, r25059, r25060, r25061, r25062, r25063, r25064, r25065, r25066, r25067, r25068, r25069, r25070, r25071, r25072, r25073, r25074, r25075, r25076, r25077;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r25044, "1/8", 10, MPFR_RNDN);
        mpfr_init(r25045);
        mpfr_init(r25046);
        mpfr_init(r25047);
        mpfr_init(r25048);
        mpfr_init_set_str(r25049, "1/2", 10, MPFR_RNDN);
        mpfr_init(r25050);
        mpfr_init(r25051);
        mpfr_init_set_str(r25052, "-536.0230928176488", 10, MPFR_RNDN);
        mpfr_init(r25053);
        mpfr_init_set_str(r25054, "3/40", 10, MPFR_RNDN);
        mpfr_init_set_str(r25055, "5", 10, MPFR_RNDN);
        mpfr_init(r25056);
        mpfr_init(r25057);
        mpfr_init(r25058);
        mpfr_init_set_str(r25059, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r25060, "3", 10, MPFR_RNDN);
        mpfr_init(r25061);
        mpfr_init(r25062);
        mpfr_init(r25063);
        mpfr_init_set_str(r25064, "1.3496677481081412e-294", 10, MPFR_RNDN);
        mpfr_init(r25065);
        mpfr_init_set_str(r25066, "1", 10, MPFR_RNDN);
        mpfr_init(r25067);
        mpfr_init(r25068);
        mpfr_init(r25069);
        mpfr_init(r25070);
        mpfr_init(r25071);
        mpfr_init_set_str(r25072, "1.245804171722264e-06", 10, MPFR_RNDN);
        mpfr_init(r25073);
        mpfr_init(r25074);
        mpfr_init(r25075);
        mpfr_init(r25076);
        mpfr_init(r25077);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r25045, x, MPFR_RNDN);
        mpfr_div(r25046, r25044, r25045, MPFR_RNDN);
        mpfr_mul(r25047, r25045, r25045, MPFR_RNDN);
        mpfr_div(r25048, r25046, r25047, MPFR_RNDN);
        ;
        mpfr_div(r25050, r25049, r25045, MPFR_RNDN);
        mpfr_sub(r25051, r25048, r25050, MPFR_RNDN);
        ;
        mpfr_set_si(r25053, mpfr_cmp(r25051, r25052) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r25056, r25045, r25055, MPFR_RNDN);
        mpfr_mul(r25057, r25054, r25056, MPFR_RNDN);
        mpfr_add(r25058, r25057, r25045, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r25061, r25045, r25060, MPFR_RNDN);
        mpfr_mul(r25062, r25059, r25061, MPFR_RNDN);
        mpfr_sub(r25063, r25058, r25062, MPFR_RNDN);
        ;
        mpfr_set_si(r25065, mpfr_cmp(r25051, r25064) <= 0, MPFR_RNDN);
        ;
        mpfr_hypot(r25067, r25066, r25045, MPFR_RNDN);
        mpfr_add(r25068, r25067, r25045, MPFR_RNDN);
        mpfr_sqrt(r25069, r25068, MPFR_RNDN);
        mpfr_log(r25070, r25069, MPFR_RNDN);
        mpfr_add(r25071, r25070, r25070, MPFR_RNDN);
        ;
        mpfr_set_si(r25073, mpfr_cmp(r25051, r25072) <= 0, MPFR_RNDN);
        mpfr_log(r25074, r25051, MPFR_RNDN);
        if (mpfr_get_si(r25073, MPFR_RNDN)) { mpfr_set(r25075, r25074, MPFR_RNDN); } else { mpfr_set(r25075, r25063, MPFR_RNDN); };
        if (mpfr_get_si(r25065, MPFR_RNDN)) { mpfr_set(r25076, r25071, MPFR_RNDN); } else { mpfr_set(r25076, r25075, MPFR_RNDN); };
        if (mpfr_get_si(r25053, MPFR_RNDN)) { mpfr_set(r25077, r25063, MPFR_RNDN); } else { mpfr_set(r25077, r25076, MPFR_RNDN); };
        return mpfr_get_d(r25077, MPFR_RNDN);
}

static mpfr_t r25078, r25079, r25080, r25081, r25082, r25083, r25084, r25085, r25086, r25087, r25088, r25089, r25090, r25091, r25092, r25093, r25094, r25095, r25096, r25097, r25098, r25099, r25100, r25101, r25102, r25103, r25104, r25105, r25106, r25107, r25108, r25109, r25110, r25111;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r25078, "1/8", 10, MPFR_RNDN);
        mpfr_init(r25079);
        mpfr_init(r25080);
        mpfr_init(r25081);
        mpfr_init(r25082);
        mpfr_init_set_str(r25083, "1/2", 10, MPFR_RNDN);
        mpfr_init(r25084);
        mpfr_init(r25085);
        mpfr_init_set_str(r25086, "-536.0230928176488", 10, MPFR_RNDN);
        mpfr_init(r25087);
        mpfr_init_set_str(r25088, "3/40", 10, MPFR_RNDN);
        mpfr_init_set_str(r25089, "5", 10, MPFR_RNDN);
        mpfr_init(r25090);
        mpfr_init(r25091);
        mpfr_init(r25092);
        mpfr_init_set_str(r25093, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r25094, "3", 10, MPFR_RNDN);
        mpfr_init(r25095);
        mpfr_init(r25096);
        mpfr_init(r25097);
        mpfr_init_set_str(r25098, "1.3496677481081412e-294", 10, MPFR_RNDN);
        mpfr_init(r25099);
        mpfr_init_set_str(r25100, "1", 10, MPFR_RNDN);
        mpfr_init(r25101);
        mpfr_init(r25102);
        mpfr_init(r25103);
        mpfr_init(r25104);
        mpfr_init(r25105);
        mpfr_init_set_str(r25106, "1.245804171722264e-06", 10, MPFR_RNDN);
        mpfr_init(r25107);
        mpfr_init(r25108);
        mpfr_init(r25109);
        mpfr_init(r25110);
        mpfr_init(r25111);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r25079, x, MPFR_RNDN);
        mpfr_div(r25080, r25078, r25079, MPFR_RNDN);
        mpfr_mul(r25081, r25079, r25079, MPFR_RNDN);
        mpfr_div(r25082, r25080, r25081, MPFR_RNDN);
        ;
        mpfr_div(r25084, r25083, r25079, MPFR_RNDN);
        mpfr_sub(r25085, r25082, r25084, MPFR_RNDN);
        ;
        mpfr_set_si(r25087, mpfr_cmp(r25085, r25086) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r25090, r25079, r25089, MPFR_RNDN);
        mpfr_mul(r25091, r25088, r25090, MPFR_RNDN);
        mpfr_add(r25092, r25091, r25079, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r25095, r25079, r25094, MPFR_RNDN);
        mpfr_mul(r25096, r25093, r25095, MPFR_RNDN);
        mpfr_sub(r25097, r25092, r25096, MPFR_RNDN);
        ;
        mpfr_set_si(r25099, mpfr_cmp(r25085, r25098) <= 0, MPFR_RNDN);
        ;
        mpfr_hypot(r25101, r25100, r25079, MPFR_RNDN);
        mpfr_add(r25102, r25101, r25079, MPFR_RNDN);
        mpfr_sqrt(r25103, r25102, MPFR_RNDN);
        mpfr_log(r25104, r25103, MPFR_RNDN);
        mpfr_add(r25105, r25104, r25104, MPFR_RNDN);
        ;
        mpfr_set_si(r25107, mpfr_cmp(r25085, r25106) <= 0, MPFR_RNDN);
        mpfr_log(r25108, r25085, MPFR_RNDN);
        if (mpfr_get_si(r25107, MPFR_RNDN)) { mpfr_set(r25109, r25108, MPFR_RNDN); } else { mpfr_set(r25109, r25097, MPFR_RNDN); };
        if (mpfr_get_si(r25099, MPFR_RNDN)) { mpfr_set(r25110, r25105, MPFR_RNDN); } else { mpfr_set(r25110, r25109, MPFR_RNDN); };
        if (mpfr_get_si(r25087, MPFR_RNDN)) { mpfr_set(r25111, r25097, MPFR_RNDN); } else { mpfr_set(r25111, r25110, MPFR_RNDN); };
        return mpfr_get_d(r25111, MPFR_RNDN);
}

