#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 r27736 = x;
        float r27737 = r27736 * r27736;
        float r27738 = 1;
        float r27739 = r27737 + r27738;
        float r27740 = sqrt(r27739);
        float r27741 = r27736 + r27740;
        float r27742 = log(r27741);
        return r27742;
}

double f_id(double x) {
        double r27743 = x;
        double r27744 = r27743 * r27743;
        double r27745 = 1;
        double r27746 = r27744 + r27745;
        double r27747 = sqrt(r27746);
        double r27748 = r27743 + r27747;
        double r27749 = log(r27748);
        return r27749;
}


double f_of(float x) {
        float r27750 = x;
        float r27751 = -1.0740806814635735;
        bool r27752 = r27750 <= r27751;
        float r27753 = 1;
        float r27754 = r27753 / r27750;
        float r27755 = 1/8;
        float r27756 = r27755 / r27750;
        float r27757 = 1/2;
        float r27758 = -r27757;
        float r27759 = fma(r27754, r27756, r27758);
        float r27760 = 1/16;
        float r27761 = -r27760;
        float r27762 = 5;
        float r27763 = pow(r27750, r27762);
        float r27764 = r27761 / r27763;
        float r27765 = fma(r27754, r27759, r27764);
        float r27766 = log(r27765);
        float r27767 = 0.004985663317943214;
        bool r27768 = r27750 <= r27767;
        float r27769 = 3/40;
        float r27770 = r27769 * r27763;
        float r27771 = r27770 + r27750;
        float r27772 = 1/6;
        float r27773 = 3;
        float r27774 = pow(r27750, r27773);
        float r27775 = r27772 * r27774;
        float r27776 = exp(r27775);
        float r27777 = log(r27776);
        float r27778 = r27771 - r27777;
        float r27779 = hypot(r27753, r27750);
        float r27780 = r27779 + r27750;
        float r27781 = sqrt(r27780);
        float r27782 = log(r27781);
        float r27783 = sqrt(r27781);
        float r27784 = log(r27783);
        float r27785 = r27784 + r27784;
        float r27786 = r27782 + r27785;
        float r27787 = r27768 ? r27778 : r27786;
        float r27788 = r27752 ? r27766 : r27787;
        return r27788;
}

double f_od(double x) {
        double r27789 = x;
        double r27790 = -1.0740806814635735;
        bool r27791 = r27789 <= r27790;
        double r27792 = 1;
        double r27793 = r27792 / r27789;
        double r27794 = 1/8;
        double r27795 = r27794 / r27789;
        double r27796 = 1/2;
        double r27797 = -r27796;
        double r27798 = fma(r27793, r27795, r27797);
        double r27799 = 1/16;
        double r27800 = -r27799;
        double r27801 = 5;
        double r27802 = pow(r27789, r27801);
        double r27803 = r27800 / r27802;
        double r27804 = fma(r27793, r27798, r27803);
        double r27805 = log(r27804);
        double r27806 = 0.004985663317943214;
        bool r27807 = r27789 <= r27806;
        double r27808 = 3/40;
        double r27809 = r27808 * r27802;
        double r27810 = r27809 + r27789;
        double r27811 = 1/6;
        double r27812 = 3;
        double r27813 = pow(r27789, r27812);
        double r27814 = r27811 * r27813;
        double r27815 = exp(r27814);
        double r27816 = log(r27815);
        double r27817 = r27810 - r27816;
        double r27818 = hypot(r27792, r27789);
        double r27819 = r27818 + r27789;
        double r27820 = sqrt(r27819);
        double r27821 = log(r27820);
        double r27822 = sqrt(r27820);
        double r27823 = log(r27822);
        double r27824 = r27823 + r27823;
        double r27825 = r27821 + r27824;
        double r27826 = r27807 ? r27817 : r27825;
        double r27827 = r27791 ? r27805 : r27826;
        return r27827;
}

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 r27828, r27829, r27830, r27831, r27832, r27833, r27834;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27828);
        mpfr_init(r27829);
        mpfr_init_set_str(r27830, "1", 10, MPFR_RNDN);
        mpfr_init(r27831);
        mpfr_init(r27832);
        mpfr_init(r27833);
        mpfr_init(r27834);
}

double f_im(double x) {
        mpfr_set_d(r27828, x, MPFR_RNDN);
        mpfr_mul(r27829, r27828, r27828, MPFR_RNDN);
        ;
        mpfr_add(r27831, r27829, r27830, MPFR_RNDN);
        mpfr_sqrt(r27832, r27831, MPFR_RNDN);
        mpfr_add(r27833, r27828, r27832, MPFR_RNDN);
        mpfr_log(r27834, r27833, MPFR_RNDN);
        return mpfr_get_d(r27834, MPFR_RNDN);
}

static mpfr_t r27835, r27836, r27837, r27838, r27839, r27840, r27841, r27842, r27843, r27844, r27845, r27846, r27847, r27848, r27849, r27850, r27851, r27852, r27853, r27854, r27855, r27856, r27857, r27858, r27859, r27860, r27861, r27862, r27863, r27864, r27865, r27866, r27867, r27868, r27869, r27870, r27871, r27872, r27873;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27835);
        mpfr_init_set_str(r27836, "-1.0740806814635735", 10, MPFR_RNDN);
        mpfr_init(r27837);
        mpfr_init_set_str(r27838, "1", 10, MPFR_RNDN);
        mpfr_init(r27839);
        mpfr_init_set_str(r27840, "1/8", 10, MPFR_RNDN);
        mpfr_init(r27841);
        mpfr_init_set_str(r27842, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27843);
        mpfr_init(r27844);
        mpfr_init_set_str(r27845, "1/16", 10, MPFR_RNDN);
        mpfr_init(r27846);
        mpfr_init_set_str(r27847, "5", 10, MPFR_RNDN);
        mpfr_init(r27848);
        mpfr_init(r27849);
        mpfr_init(r27850);
        mpfr_init(r27851);
        mpfr_init_set_str(r27852, "0.004985663317943214", 10, MPFR_RNDN);
        mpfr_init(r27853);
        mpfr_init_set_str(r27854, "3/40", 10, MPFR_RNDN);
        mpfr_init(r27855);
        mpfr_init(r27856);
        mpfr_init_set_str(r27857, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r27858, "3", 10, MPFR_RNDN);
        mpfr_init(r27859);
        mpfr_init(r27860);
        mpfr_init(r27861);
        mpfr_init(r27862);
        mpfr_init(r27863);
        mpfr_init(r27864);
        mpfr_init(r27865);
        mpfr_init(r27866);
        mpfr_init(r27867);
        mpfr_init(r27868);
        mpfr_init(r27869);
        mpfr_init(r27870);
        mpfr_init(r27871);
        mpfr_init(r27872);
        mpfr_init(r27873);
}

double f_fm(double x) {
        mpfr_set_d(r27835, x, MPFR_RNDN);
        ;
        mpfr_set_si(r27837, mpfr_cmp(r27835, r27836) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27839, r27838, r27835, MPFR_RNDN);
        ;
        mpfr_div(r27841, r27840, r27835, MPFR_RNDN);
        ;
        mpfr_neg(r27843, r27842, MPFR_RNDN);
        mpfr_fma(r27844, r27839, r27841, r27843, MPFR_RNDN);
        ;
        mpfr_neg(r27846, r27845, MPFR_RNDN);
        ;
        mpfr_pow(r27848, r27835, r27847, MPFR_RNDN);
        mpfr_div(r27849, r27846, r27848, MPFR_RNDN);
        mpfr_fma(r27850, r27839, r27844, r27849, MPFR_RNDN);
        mpfr_log(r27851, r27850, MPFR_RNDN);
        ;
        mpfr_set_si(r27853, mpfr_cmp(r27835, r27852) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27855, r27854, r27848, MPFR_RNDN);
        mpfr_add(r27856, r27855, r27835, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r27859, r27835, r27858, MPFR_RNDN);
        mpfr_mul(r27860, r27857, r27859, MPFR_RNDN);
        mpfr_exp(r27861, r27860, MPFR_RNDN);
        mpfr_log(r27862, r27861, MPFR_RNDN);
        mpfr_sub(r27863, r27856, r27862, MPFR_RNDN);
        mpfr_hypot(r27864, r27838, r27835, MPFR_RNDN);
        mpfr_add(r27865, r27864, r27835, MPFR_RNDN);
        mpfr_sqrt(r27866, r27865, MPFR_RNDN);
        mpfr_log(r27867, r27866, MPFR_RNDN);
        mpfr_sqrt(r27868, r27866, MPFR_RNDN);
        mpfr_log(r27869, r27868, MPFR_RNDN);
        mpfr_add(r27870, r27869, r27869, MPFR_RNDN);
        mpfr_add(r27871, r27867, r27870, MPFR_RNDN);
        if (mpfr_get_si(r27853, MPFR_RNDN)) { mpfr_set(r27872, r27863, MPFR_RNDN); } else { mpfr_set(r27872, r27871, MPFR_RNDN); };
        if (mpfr_get_si(r27837, MPFR_RNDN)) { mpfr_set(r27873, r27851, MPFR_RNDN); } else { mpfr_set(r27873, r27872, MPFR_RNDN); };
        return mpfr_get_d(r27873, MPFR_RNDN);
}

static mpfr_t r27874, r27875, r27876, r27877, r27878, r27879, r27880, r27881, r27882, r27883, r27884, r27885, r27886, r27887, r27888, r27889, r27890, r27891, r27892, r27893, r27894, r27895, r27896, r27897, r27898, r27899, r27900, r27901, r27902, r27903, r27904, r27905, r27906, r27907, r27908, r27909, r27910, r27911, r27912;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2384);
        mpfr_init(r27874);
        mpfr_init_set_str(r27875, "-1.0740806814635735", 10, MPFR_RNDN);
        mpfr_init(r27876);
        mpfr_init_set_str(r27877, "1", 10, MPFR_RNDN);
        mpfr_init(r27878);
        mpfr_init_set_str(r27879, "1/8", 10, MPFR_RNDN);
        mpfr_init(r27880);
        mpfr_init_set_str(r27881, "1/2", 10, MPFR_RNDN);
        mpfr_init(r27882);
        mpfr_init(r27883);
        mpfr_init_set_str(r27884, "1/16", 10, MPFR_RNDN);
        mpfr_init(r27885);
        mpfr_init_set_str(r27886, "5", 10, MPFR_RNDN);
        mpfr_init(r27887);
        mpfr_init(r27888);
        mpfr_init(r27889);
        mpfr_init(r27890);
        mpfr_init_set_str(r27891, "0.004985663317943214", 10, MPFR_RNDN);
        mpfr_init(r27892);
        mpfr_init_set_str(r27893, "3/40", 10, MPFR_RNDN);
        mpfr_init(r27894);
        mpfr_init(r27895);
        mpfr_init_set_str(r27896, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r27897, "3", 10, MPFR_RNDN);
        mpfr_init(r27898);
        mpfr_init(r27899);
        mpfr_init(r27900);
        mpfr_init(r27901);
        mpfr_init(r27902);
        mpfr_init(r27903);
        mpfr_init(r27904);
        mpfr_init(r27905);
        mpfr_init(r27906);
        mpfr_init(r27907);
        mpfr_init(r27908);
        mpfr_init(r27909);
        mpfr_init(r27910);
        mpfr_init(r27911);
        mpfr_init(r27912);
}

double f_dm(double x) {
        mpfr_set_d(r27874, x, MPFR_RNDN);
        ;
        mpfr_set_si(r27876, mpfr_cmp(r27874, r27875) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27878, r27877, r27874, MPFR_RNDN);
        ;
        mpfr_div(r27880, r27879, r27874, MPFR_RNDN);
        ;
        mpfr_neg(r27882, r27881, MPFR_RNDN);
        mpfr_fma(r27883, r27878, r27880, r27882, MPFR_RNDN);
        ;
        mpfr_neg(r27885, r27884, MPFR_RNDN);
        ;
        mpfr_pow(r27887, r27874, r27886, MPFR_RNDN);
        mpfr_div(r27888, r27885, r27887, MPFR_RNDN);
        mpfr_fma(r27889, r27878, r27883, r27888, MPFR_RNDN);
        mpfr_log(r27890, r27889, MPFR_RNDN);
        ;
        mpfr_set_si(r27892, mpfr_cmp(r27874, r27891) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r27894, r27893, r27887, MPFR_RNDN);
        mpfr_add(r27895, r27894, r27874, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r27898, r27874, r27897, MPFR_RNDN);
        mpfr_mul(r27899, r27896, r27898, MPFR_RNDN);
        mpfr_exp(r27900, r27899, MPFR_RNDN);
        mpfr_log(r27901, r27900, MPFR_RNDN);
        mpfr_sub(r27902, r27895, r27901, MPFR_RNDN);
        mpfr_hypot(r27903, r27877, r27874, MPFR_RNDN);
        mpfr_add(r27904, r27903, r27874, MPFR_RNDN);
        mpfr_sqrt(r27905, r27904, MPFR_RNDN);
        mpfr_log(r27906, r27905, MPFR_RNDN);
        mpfr_sqrt(r27907, r27905, MPFR_RNDN);
        mpfr_log(r27908, r27907, MPFR_RNDN);
        mpfr_add(r27909, r27908, r27908, MPFR_RNDN);
        mpfr_add(r27910, r27906, r27909, MPFR_RNDN);
        if (mpfr_get_si(r27892, MPFR_RNDN)) { mpfr_set(r27911, r27902, MPFR_RNDN); } else { mpfr_set(r27911, r27910, MPFR_RNDN); };
        if (mpfr_get_si(r27876, MPFR_RNDN)) { mpfr_set(r27912, r27890, MPFR_RNDN); } else { mpfr_set(r27912, r27911, MPFR_RNDN); };
        return mpfr_get_d(r27912, MPFR_RNDN);
}

