#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Jmat.Real.erfi, branch x greater than or equal to 5";

double f_if(float x) {
        float r18780 = 1.0f;
        float r18781 = atan2(1.0, 0.0);
        float r18782 = sqrt(r18781);
        float r18783 = r18780 / r18782;
        float r18784 = x;
        float r18785 = fabs(r18784);
        float r18786 = r18785 * r18785;
        float r18787 = exp(r18786);
        float r18788 = r18783 * r18787;
        float r18789 = r18780 / r18785;
        float r18790 = 2.0f;
        float r18791 = r18780 / r18790;
        float r18792 = r18789 * r18789;
        float r18793 = r18792 * r18789;
        float r18794 = r18791 * r18793;
        float r18795 = r18789 + r18794;
        float r18796 = 3.0f;
        float r18797 = 4.0f;
        float r18798 = r18796 / r18797;
        float r18799 = r18793 * r18789;
        float r18800 = r18799 * r18789;
        float r18801 = r18798 * r18800;
        float r18802 = r18795 + r18801;
        float r18803 = 15.0f;
        float r18804 = 8.0f;
        float r18805 = r18803 / r18804;
        float r18806 = r18800 * r18789;
        float r18807 = r18806 * r18789;
        float r18808 = r18805 * r18807;
        float r18809 = r18802 + r18808;
        float r18810 = r18788 * r18809;
        return r18810;
}

double f_id(double x) {
        double r18811 = 1.0;
        double r18812 = atan2(1.0, 0.0);
        double r18813 = sqrt(r18812);
        double r18814 = r18811 / r18813;
        double r18815 = x;
        double r18816 = fabs(r18815);
        double r18817 = r18816 * r18816;
        double r18818 = exp(r18817);
        double r18819 = r18814 * r18818;
        double r18820 = r18811 / r18816;
        double r18821 = 2.0;
        double r18822 = r18811 / r18821;
        double r18823 = r18820 * r18820;
        double r18824 = r18823 * r18820;
        double r18825 = r18822 * r18824;
        double r18826 = r18820 + r18825;
        double r18827 = 3.0;
        double r18828 = 4.0;
        double r18829 = r18827 / r18828;
        double r18830 = r18824 * r18820;
        double r18831 = r18830 * r18820;
        double r18832 = r18829 * r18831;
        double r18833 = r18826 + r18832;
        double r18834 = 15.0;
        double r18835 = 8.0;
        double r18836 = r18834 / r18835;
        double r18837 = r18831 * r18820;
        double r18838 = r18837 * r18820;
        double r18839 = r18836 * r18838;
        double r18840 = r18833 + r18839;
        double r18841 = r18819 * r18840;
        return r18841;
}


double f_of(float x) {
        float r18842 = x;
        float r18843 = fabs(r18842);
        float r18844 = r18843 * r18843;
        float r18845 = exp(r18844);
        float r18846 = atan2(1.0, 0.0);
        float r18847 = sqrt(r18846);
        float r18848 = sqrt(r18847);
        float r18849 = r18848 * r18848;
        float r18850 = r18845 / r18849;
        float r18851 = 1.0f;
        float r18852 = 2.0f;
        float r18853 = r18851 / r18852;
        float r18854 = r18843 * (r18843 * r18843);
        float r18855 = r18853 / r18854;
        float r18856 = 15.0f;
        float r18857 = 8.0f;
        float r18858 = r18857 / r18851;
        float r18859 = r18858 * r18843;
        float r18860 = r18856 / r18859;
        float r18861 = 3.0f;
        float r18862 = pow(r18844, r18861);
        float r18863 = r18860 / r18862;
        float r18864 = r18855 + r18863;
        float r18865 = r18851 / r18843;
        float r18866 = r18865 * (r18865 * r18865);
        float r18867 = 4.0f;
        float r18868 = r18861 / r18867;
        float r18869 = r18868 / r18843;
        float r18870 = r18843 / r18869;
        float r18871 = r18866 / r18870;
        float r18872 = r18871 + r18865;
        float r18873 = r18864 + r18872;
        float r18874 = r18850 * r18873;
        return r18874;
}

double f_od(double x) {
        double r18875 = x;
        double r18876 = fabs(r18875);
        double r18877 = r18876 * r18876;
        double r18878 = exp(r18877);
        double r18879 = atan2(1.0, 0.0);
        double r18880 = sqrt(r18879);
        double r18881 = sqrt(r18880);
        double r18882 = r18881 * r18881;
        double r18883 = r18878 / r18882;
        double r18884 = 1.0;
        double r18885 = 2.0;
        double r18886 = r18884 / r18885;
        double r18887 = r18876 * (r18876 * r18876);
        double r18888 = r18886 / r18887;
        double r18889 = 15.0;
        double r18890 = 8.0;
        double r18891 = r18890 / r18884;
        double r18892 = r18891 * r18876;
        double r18893 = r18889 / r18892;
        double r18894 = 3.0;
        double r18895 = pow(r18877, r18894);
        double r18896 = r18893 / r18895;
        double r18897 = r18888 + r18896;
        double r18898 = r18884 / r18876;
        double r18899 = r18898 * (r18898 * r18898);
        double r18900 = 4.0;
        double r18901 = r18894 / r18900;
        double r18902 = r18901 / r18876;
        double r18903 = r18876 / r18902;
        double r18904 = r18899 / r18903;
        double r18905 = r18904 + r18898;
        double r18906 = r18897 + r18905;
        double r18907 = r18883 * r18906;
        return r18907;
}

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 r18908, r18909, r18910, r18911, r18912, r18913, r18914, r18915, r18916, r18917, r18918, r18919, r18920, r18921, r18922, r18923, r18924, r18925, r18926, r18927, r18928, r18929, r18930, r18931, r18932, r18933, r18934, r18935, r18936, r18937, r18938;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r18908, "1", 10, MPFR_RNDN);
        mpfr_init(r18909);
        mpfr_init(r18910);
        mpfr_init(r18911);
        mpfr_init(r18912);
        mpfr_init(r18913);
        mpfr_init(r18914);
        mpfr_init(r18915);
        mpfr_init(r18916);
        mpfr_init(r18917);
        mpfr_init_set_str(r18918, "2", 10, MPFR_RNDN);
        mpfr_init(r18919);
        mpfr_init(r18920);
        mpfr_init(r18921);
        mpfr_init(r18922);
        mpfr_init(r18923);
        mpfr_init_set_str(r18924, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r18925, "4", 10, MPFR_RNDN);
        mpfr_init(r18926);
        mpfr_init(r18927);
        mpfr_init(r18928);
        mpfr_init(r18929);
        mpfr_init(r18930);
        mpfr_init_set_str(r18931, "15", 10, MPFR_RNDN);
        mpfr_init_set_str(r18932, "8", 10, MPFR_RNDN);
        mpfr_init(r18933);
        mpfr_init(r18934);
        mpfr_init(r18935);
        mpfr_init(r18936);
        mpfr_init(r18937);
        mpfr_init(r18938);
}

double f_im(double x) {
        ;
        mpfr_const_pi(r18909, MPFR_RNDN);
        mpfr_sqrt(r18910, r18909, MPFR_RNDN);
        mpfr_div(r18911, r18908, r18910, MPFR_RNDN);
        mpfr_set_d(r18912, x, MPFR_RNDN);
        mpfr_abs(r18913, r18912, MPFR_RNDN);
        mpfr_mul(r18914, r18913, r18913, MPFR_RNDN);
        mpfr_exp(r18915, r18914, MPFR_RNDN);
        mpfr_mul(r18916, r18911, r18915, MPFR_RNDN);
        mpfr_div(r18917, r18908, r18913, MPFR_RNDN);
        ;
        mpfr_div(r18919, r18908, r18918, MPFR_RNDN);
        mpfr_mul(r18920, r18917, r18917, MPFR_RNDN);
        mpfr_mul(r18921, r18920, r18917, MPFR_RNDN);
        mpfr_mul(r18922, r18919, r18921, MPFR_RNDN);
        mpfr_add(r18923, r18917, r18922, MPFR_RNDN);
        ;
        ;
        mpfr_div(r18926, r18924, r18925, MPFR_RNDN);
        mpfr_mul(r18927, r18921, r18917, MPFR_RNDN);
        mpfr_mul(r18928, r18927, r18917, MPFR_RNDN);
        mpfr_mul(r18929, r18926, r18928, MPFR_RNDN);
        mpfr_add(r18930, r18923, r18929, MPFR_RNDN);
        ;
        ;
        mpfr_div(r18933, r18931, r18932, MPFR_RNDN);
        mpfr_mul(r18934, r18928, r18917, MPFR_RNDN);
        mpfr_mul(r18935, r18934, r18917, MPFR_RNDN);
        mpfr_mul(r18936, r18933, r18935, MPFR_RNDN);
        mpfr_add(r18937, r18930, r18936, MPFR_RNDN);
        mpfr_mul(r18938, r18916, r18937, MPFR_RNDN);
        return mpfr_get_d(r18938, MPFR_RNDN);
}

static mpfr_t r18939, r18940, r18941, r18942, r18943, r18944, r18945, r18946, r18947, r18948, r18949, r18950, r18951, r18952, r18953, r18954, r18955, r18956, r18957, r18958, r18959, r18960, r18961, r18962, r18963, r18964, r18965, r18966, r18967, r18968, r18969, r18970, r18971;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18939);
        mpfr_init(r18940);
        mpfr_init(r18941);
        mpfr_init(r18942);
        mpfr_init(r18943);
        mpfr_init(r18944);
        mpfr_init(r18945);
        mpfr_init(r18946);
        mpfr_init(r18947);
        mpfr_init_set_str(r18948, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r18949, "2", 10, MPFR_RNDN);
        mpfr_init(r18950);
        mpfr_init(r18951);
        mpfr_init(r18952);
        mpfr_init_set_str(r18953, "15", 10, MPFR_RNDN);
        mpfr_init_set_str(r18954, "8", 10, MPFR_RNDN);
        mpfr_init(r18955);
        mpfr_init(r18956);
        mpfr_init(r18957);
        mpfr_init_set_str(r18958, "3", 10, MPFR_RNDN);
        mpfr_init(r18959);
        mpfr_init(r18960);
        mpfr_init(r18961);
        mpfr_init(r18962);
        mpfr_init(r18963);
        mpfr_init_set_str(r18964, "4", 10, MPFR_RNDN);
        mpfr_init(r18965);
        mpfr_init(r18966);
        mpfr_init(r18967);
        mpfr_init(r18968);
        mpfr_init(r18969);
        mpfr_init(r18970);
        mpfr_init(r18971);
}

double f_fm(double x) {
        mpfr_set_d(r18939, x, MPFR_RNDN);
        mpfr_abs(r18940, r18939, MPFR_RNDN);
        mpfr_mul(r18941, r18940, r18940, MPFR_RNDN);
        mpfr_exp(r18942, r18941, MPFR_RNDN);
        mpfr_const_pi(r18943, MPFR_RNDN);
        mpfr_sqrt(r18944, r18943, MPFR_RNDN);
        mpfr_sqrt(r18945, r18944, MPFR_RNDN);
        mpfr_sqr(r18946, r18945, MPFR_RNDN);
        mpfr_div(r18947, r18942, r18946, MPFR_RNDN);
        ;
        ;
        mpfr_div(r18950, r18948, r18949, MPFR_RNDN);
        mpfr_mul(r18951, r18940, r18940, MPFR_RNDN); mpfr_mul(r18951, r18951, r18940, MPFR_RNDN);
        mpfr_div(r18952, r18950, r18951, MPFR_RNDN);
        ;
        ;
        mpfr_div(r18955, r18954, r18948, MPFR_RNDN);
        mpfr_mul(r18956, r18955, r18940, MPFR_RNDN);
        mpfr_div(r18957, r18953, r18956, MPFR_RNDN);
        ;
        mpfr_pow(r18959, r18941, r18958, MPFR_RNDN);
        mpfr_div(r18960, r18957, r18959, MPFR_RNDN);
        mpfr_add(r18961, r18952, r18960, MPFR_RNDN);
        mpfr_div(r18962, r18948, r18940, MPFR_RNDN);
        mpfr_mul(r18963, r18962, r18962, MPFR_RNDN); mpfr_mul(r18963, r18963, r18962, MPFR_RNDN);
        ;
        mpfr_div(r18965, r18958, r18964, MPFR_RNDN);
        mpfr_div(r18966, r18965, r18940, MPFR_RNDN);
        mpfr_div(r18967, r18940, r18966, MPFR_RNDN);
        mpfr_div(r18968, r18963, r18967, MPFR_RNDN);
        mpfr_add(r18969, r18968, r18962, MPFR_RNDN);
        mpfr_add(r18970, r18961, r18969, MPFR_RNDN);
        mpfr_mul(r18971, r18947, r18970, MPFR_RNDN);
        return mpfr_get_d(r18971, MPFR_RNDN);
}

static mpfr_t r18972, r18973, r18974, r18975, r18976, r18977, r18978, r18979, r18980, r18981, r18982, r18983, r18984, r18985, r18986, r18987, r18988, r18989, r18990, r18991, r18992, r18993, r18994, r18995, r18996, r18997, r18998, r18999, r19000, r19001, r19002, r19003, r19004;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18972);
        mpfr_init(r18973);
        mpfr_init(r18974);
        mpfr_init(r18975);
        mpfr_init(r18976);
        mpfr_init(r18977);
        mpfr_init(r18978);
        mpfr_init(r18979);
        mpfr_init(r18980);
        mpfr_init_set_str(r18981, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r18982, "2", 10, MPFR_RNDN);
        mpfr_init(r18983);
        mpfr_init(r18984);
        mpfr_init(r18985);
        mpfr_init_set_str(r18986, "15", 10, MPFR_RNDN);
        mpfr_init_set_str(r18987, "8", 10, MPFR_RNDN);
        mpfr_init(r18988);
        mpfr_init(r18989);
        mpfr_init(r18990);
        mpfr_init_set_str(r18991, "3", 10, MPFR_RNDN);
        mpfr_init(r18992);
        mpfr_init(r18993);
        mpfr_init(r18994);
        mpfr_init(r18995);
        mpfr_init(r18996);
        mpfr_init_set_str(r18997, "4", 10, MPFR_RNDN);
        mpfr_init(r18998);
        mpfr_init(r18999);
        mpfr_init(r19000);
        mpfr_init(r19001);
        mpfr_init(r19002);
        mpfr_init(r19003);
        mpfr_init(r19004);
}

double f_dm(double x) {
        mpfr_set_d(r18972, x, MPFR_RNDN);
        mpfr_abs(r18973, r18972, MPFR_RNDN);
        mpfr_mul(r18974, r18973, r18973, MPFR_RNDN);
        mpfr_exp(r18975, r18974, MPFR_RNDN);
        mpfr_const_pi(r18976, MPFR_RNDN);
        mpfr_sqrt(r18977, r18976, MPFR_RNDN);
        mpfr_sqrt(r18978, r18977, MPFR_RNDN);
        mpfr_sqr(r18979, r18978, MPFR_RNDN);
        mpfr_div(r18980, r18975, r18979, MPFR_RNDN);
        ;
        ;
        mpfr_div(r18983, r18981, r18982, MPFR_RNDN);
        mpfr_mul(r18984, r18973, r18973, MPFR_RNDN); mpfr_mul(r18984, r18984, r18973, MPFR_RNDN);
        mpfr_div(r18985, r18983, r18984, MPFR_RNDN);
        ;
        ;
        mpfr_div(r18988, r18987, r18981, MPFR_RNDN);
        mpfr_mul(r18989, r18988, r18973, MPFR_RNDN);
        mpfr_div(r18990, r18986, r18989, MPFR_RNDN);
        ;
        mpfr_pow(r18992, r18974, r18991, MPFR_RNDN);
        mpfr_div(r18993, r18990, r18992, MPFR_RNDN);
        mpfr_add(r18994, r18985, r18993, MPFR_RNDN);
        mpfr_div(r18995, r18981, r18973, MPFR_RNDN);
        mpfr_mul(r18996, r18995, r18995, MPFR_RNDN); mpfr_mul(r18996, r18996, r18995, MPFR_RNDN);
        ;
        mpfr_div(r18998, r18991, r18997, MPFR_RNDN);
        mpfr_div(r18999, r18998, r18973, MPFR_RNDN);
        mpfr_div(r19000, r18973, r18999, MPFR_RNDN);
        mpfr_div(r19001, r18996, r19000, MPFR_RNDN);
        mpfr_add(r19002, r19001, r18995, MPFR_RNDN);
        mpfr_add(r19003, r18994, r19002, MPFR_RNDN);
        mpfr_mul(r19004, r18980, r19003, MPFR_RNDN);
        return mpfr_get_d(r19004, MPFR_RNDN);
}

