#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 r47784 = x;
        float r47785 = r47784 * r47784;
        float r47786 = 1;
        float r47787 = r47785 + r47786;
        float r47788 = sqrt(r47787);
        float r47789 = r47784 + r47788;
        float r47790 = log(r47789);
        return r47790;
}

double f_id(double x) {
        double r47791 = x;
        double r47792 = r47791 * r47791;
        double r47793 = 1;
        double r47794 = r47792 + r47793;
        double r47795 = sqrt(r47794);
        double r47796 = r47791 + r47795;
        double r47797 = log(r47796);
        return r47797;
}


double f_of(float x) {
        float r47798 = x;
        float r47799 = -1.0800267154469456;
        bool r47800 = r47798 <= r47799;
        float r47801 = 1/8;
        float r47802 = r47801 / r47798;
        float r47803 = r47798 * r47798;
        float r47804 = r47802 / r47803;
        float r47805 = 1/16;
        float r47806 = 5;
        float r47807 = pow(r47798, r47806);
        float r47808 = r47805 / r47807;
        float r47809 = 1/2;
        float r47810 = r47809 / r47798;
        float r47811 = r47808 + r47810;
        float r47812 = r47804 - r47811;
        float r47813 = log(r47812);
        float r47814 = 0.95385117411035;
        bool r47815 = r47798 <= r47814;
        float r47816 = 3/40;
        float r47817 = r47816 * r47807;
        float r47818 = r47817 + r47798;
        float r47819 = 1/6;
        float r47820 = 3;
        float r47821 = pow(r47798, r47820);
        float r47822 = r47819 * r47821;
        float r47823 = r47818 - r47822;
        float r47824 = r47798 + r47798;
        float r47825 = r47810 + r47824;
        float r47826 = r47825 - r47804;
        float r47827 = log(r47826);
        float r47828 = r47815 ? r47823 : r47827;
        float r47829 = r47800 ? r47813 : r47828;
        return r47829;
}

double f_od(double x) {
        double r47830 = x;
        double r47831 = -1.0800267154469456;
        bool r47832 = r47830 <= r47831;
        double r47833 = 1/8;
        double r47834 = r47833 / r47830;
        double r47835 = r47830 * r47830;
        double r47836 = r47834 / r47835;
        double r47837 = 1/16;
        double r47838 = 5;
        double r47839 = pow(r47830, r47838);
        double r47840 = r47837 / r47839;
        double r47841 = 1/2;
        double r47842 = r47841 / r47830;
        double r47843 = r47840 + r47842;
        double r47844 = r47836 - r47843;
        double r47845 = log(r47844);
        double r47846 = 0.95385117411035;
        bool r47847 = r47830 <= r47846;
        double r47848 = 3/40;
        double r47849 = r47848 * r47839;
        double r47850 = r47849 + r47830;
        double r47851 = 1/6;
        double r47852 = 3;
        double r47853 = pow(r47830, r47852);
        double r47854 = r47851 * r47853;
        double r47855 = r47850 - r47854;
        double r47856 = r47830 + r47830;
        double r47857 = r47842 + r47856;
        double r47858 = r47857 - r47836;
        double r47859 = log(r47858);
        double r47860 = r47847 ? r47855 : r47859;
        double r47861 = r47832 ? r47845 : r47860;
        return r47861;
}

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 r47862, r47863, r47864, r47865, r47866, r47867, r47868;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r47862);
        mpfr_init(r47863);
        mpfr_init_set_str(r47864, "1", 10, MPFR_RNDN);
        mpfr_init(r47865);
        mpfr_init(r47866);
        mpfr_init(r47867);
        mpfr_init(r47868);
}

double f_im(double x) {
        mpfr_set_d(r47862, x, MPFR_RNDN);
        mpfr_mul(r47863, r47862, r47862, MPFR_RNDN);
        ;
        mpfr_add(r47865, r47863, r47864, MPFR_RNDN);
        mpfr_sqrt(r47866, r47865, MPFR_RNDN);
        mpfr_add(r47867, r47862, r47866, MPFR_RNDN);
        mpfr_log(r47868, r47867, MPFR_RNDN);
        return mpfr_get_d(r47868, MPFR_RNDN);
}

static mpfr_t r47869, r47870, r47871, r47872, r47873, r47874, r47875, r47876, r47877, r47878, r47879, r47880, r47881, r47882, r47883, r47884, r47885, r47886, r47887, r47888, r47889, r47890, r47891, r47892, r47893, r47894, r47895, r47896, r47897, r47898, r47899, r47900;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r47869);
        mpfr_init_set_str(r47870, "-1.0800267154469456", 10, MPFR_RNDN);
        mpfr_init(r47871);
        mpfr_init_set_str(r47872, "1/8", 10, MPFR_RNDN);
        mpfr_init(r47873);
        mpfr_init(r47874);
        mpfr_init(r47875);
        mpfr_init_set_str(r47876, "1/16", 10, MPFR_RNDN);
        mpfr_init_set_str(r47877, "5", 10, MPFR_RNDN);
        mpfr_init(r47878);
        mpfr_init(r47879);
        mpfr_init_set_str(r47880, "1/2", 10, MPFR_RNDN);
        mpfr_init(r47881);
        mpfr_init(r47882);
        mpfr_init(r47883);
        mpfr_init(r47884);
        mpfr_init_set_str(r47885, "0.95385117411035", 10, MPFR_RNDN);
        mpfr_init(r47886);
        mpfr_init_set_str(r47887, "3/40", 10, MPFR_RNDN);
        mpfr_init(r47888);
        mpfr_init(r47889);
        mpfr_init_set_str(r47890, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r47891, "3", 10, MPFR_RNDN);
        mpfr_init(r47892);
        mpfr_init(r47893);
        mpfr_init(r47894);
        mpfr_init(r47895);
        mpfr_init(r47896);
        mpfr_init(r47897);
        mpfr_init(r47898);
        mpfr_init(r47899);
        mpfr_init(r47900);
}

double f_fm(double x) {
        mpfr_set_d(r47869, x, MPFR_RNDN);
        ;
        mpfr_set_si(r47871, mpfr_cmp(r47869, r47870) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r47873, r47872, r47869, MPFR_RNDN);
        mpfr_mul(r47874, r47869, r47869, MPFR_RNDN);
        mpfr_div(r47875, r47873, r47874, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r47878, r47869, r47877, MPFR_RNDN);
        mpfr_div(r47879, r47876, r47878, MPFR_RNDN);
        ;
        mpfr_div(r47881, r47880, r47869, MPFR_RNDN);
        mpfr_add(r47882, r47879, r47881, MPFR_RNDN);
        mpfr_sub(r47883, r47875, r47882, MPFR_RNDN);
        mpfr_log(r47884, r47883, MPFR_RNDN);
        ;
        mpfr_set_si(r47886, mpfr_cmp(r47869, r47885) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r47888, r47887, r47878, MPFR_RNDN);
        mpfr_add(r47889, r47888, r47869, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r47892, r47869, r47891, MPFR_RNDN);
        mpfr_mul(r47893, r47890, r47892, MPFR_RNDN);
        mpfr_sub(r47894, r47889, r47893, MPFR_RNDN);
        mpfr_add(r47895, r47869, r47869, MPFR_RNDN);
        mpfr_add(r47896, r47881, r47895, MPFR_RNDN);
        mpfr_sub(r47897, r47896, r47875, MPFR_RNDN);
        mpfr_log(r47898, r47897, MPFR_RNDN);
        if (mpfr_get_si(r47886, MPFR_RNDN)) { mpfr_set(r47899, r47894, MPFR_RNDN); } else { mpfr_set(r47899, r47898, MPFR_RNDN); };
        if (mpfr_get_si(r47871, MPFR_RNDN)) { mpfr_set(r47900, r47884, MPFR_RNDN); } else { mpfr_set(r47900, r47899, MPFR_RNDN); };
        return mpfr_get_d(r47900, MPFR_RNDN);
}

static mpfr_t r47901, r47902, r47903, r47904, r47905, r47906, r47907, r47908, r47909, r47910, r47911, r47912, r47913, r47914, r47915, r47916, r47917, r47918, r47919, r47920, r47921, r47922, r47923, r47924, r47925, r47926, r47927, r47928, r47929, r47930, r47931, r47932;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r47901);
        mpfr_init_set_str(r47902, "-1.0800267154469456", 10, MPFR_RNDN);
        mpfr_init(r47903);
        mpfr_init_set_str(r47904, "1/8", 10, MPFR_RNDN);
        mpfr_init(r47905);
        mpfr_init(r47906);
        mpfr_init(r47907);
        mpfr_init_set_str(r47908, "1/16", 10, MPFR_RNDN);
        mpfr_init_set_str(r47909, "5", 10, MPFR_RNDN);
        mpfr_init(r47910);
        mpfr_init(r47911);
        mpfr_init_set_str(r47912, "1/2", 10, MPFR_RNDN);
        mpfr_init(r47913);
        mpfr_init(r47914);
        mpfr_init(r47915);
        mpfr_init(r47916);
        mpfr_init_set_str(r47917, "0.95385117411035", 10, MPFR_RNDN);
        mpfr_init(r47918);
        mpfr_init_set_str(r47919, "3/40", 10, MPFR_RNDN);
        mpfr_init(r47920);
        mpfr_init(r47921);
        mpfr_init_set_str(r47922, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r47923, "3", 10, MPFR_RNDN);
        mpfr_init(r47924);
        mpfr_init(r47925);
        mpfr_init(r47926);
        mpfr_init(r47927);
        mpfr_init(r47928);
        mpfr_init(r47929);
        mpfr_init(r47930);
        mpfr_init(r47931);
        mpfr_init(r47932);
}

double f_dm(double x) {
        mpfr_set_d(r47901, x, MPFR_RNDN);
        ;
        mpfr_set_si(r47903, mpfr_cmp(r47901, r47902) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r47905, r47904, r47901, MPFR_RNDN);
        mpfr_mul(r47906, r47901, r47901, MPFR_RNDN);
        mpfr_div(r47907, r47905, r47906, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r47910, r47901, r47909, MPFR_RNDN);
        mpfr_div(r47911, r47908, r47910, MPFR_RNDN);
        ;
        mpfr_div(r47913, r47912, r47901, MPFR_RNDN);
        mpfr_add(r47914, r47911, r47913, MPFR_RNDN);
        mpfr_sub(r47915, r47907, r47914, MPFR_RNDN);
        mpfr_log(r47916, r47915, MPFR_RNDN);
        ;
        mpfr_set_si(r47918, mpfr_cmp(r47901, r47917) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r47920, r47919, r47910, MPFR_RNDN);
        mpfr_add(r47921, r47920, r47901, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r47924, r47901, r47923, MPFR_RNDN);
        mpfr_mul(r47925, r47922, r47924, MPFR_RNDN);
        mpfr_sub(r47926, r47921, r47925, MPFR_RNDN);
        mpfr_add(r47927, r47901, r47901, MPFR_RNDN);
        mpfr_add(r47928, r47913, r47927, MPFR_RNDN);
        mpfr_sub(r47929, r47928, r47907, MPFR_RNDN);
        mpfr_log(r47930, r47929, MPFR_RNDN);
        if (mpfr_get_si(r47918, MPFR_RNDN)) { mpfr_set(r47931, r47926, MPFR_RNDN); } else { mpfr_set(r47931, r47930, MPFR_RNDN); };
        if (mpfr_get_si(r47903, MPFR_RNDN)) { mpfr_set(r47932, r47916, MPFR_RNDN); } else { mpfr_set(r47932, r47931, MPFR_RNDN); };
        return mpfr_get_d(r47932, MPFR_RNDN);
}

