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

char *name = "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2, C";

double f_if(float x, float y, float z) {
        float r38825 = x;
        float r38826 = 2.0f;
        float r38827 = r38825 - r38826;
        float r38828 = 4.16438922228f;
        float r38829 = r38825 * r38828;
        float r38830 = 78.6994924154f;
        float r38831 = r38829 + r38830;
        float r38832 = r38831 * r38825;
        float r38833 = 137.519416416f;
        float r38834 = r38832 + r38833;
        float r38835 = r38834 * r38825;
        float r38836 = y;
        float r38837 = r38835 + r38836;
        float r38838 = r38837 * r38825;
        float r38839 = z;
        float r38840 = r38838 + r38839;
        float r38841 = r38827 * r38840;
        float r38842 = 43.3400022514f;
        float r38843 = r38825 + r38842;
        float r38844 = r38843 * r38825;
        float r38845 = 263.505074721f;
        float r38846 = r38844 + r38845;
        float r38847 = r38846 * r38825;
        float r38848 = 313.399215894f;
        float r38849 = r38847 + r38848;
        float r38850 = r38849 * r38825;
        float r38851 = 47.066876606f;
        float r38852 = r38850 + r38851;
        float r38853 = r38841 / r38852;
        return r38853;
}

double f_id(double x, double y, double z) {
        double r38854 = x;
        double r38855 = 2.0;
        double r38856 = r38854 - r38855;
        double r38857 = 4.16438922228;
        double r38858 = r38854 * r38857;
        double r38859 = 78.6994924154;
        double r38860 = r38858 + r38859;
        double r38861 = r38860 * r38854;
        double r38862 = 137.519416416;
        double r38863 = r38861 + r38862;
        double r38864 = r38863 * r38854;
        double r38865 = y;
        double r38866 = r38864 + r38865;
        double r38867 = r38866 * r38854;
        double r38868 = z;
        double r38869 = r38867 + r38868;
        double r38870 = r38856 * r38869;
        double r38871 = 43.3400022514;
        double r38872 = r38854 + r38871;
        double r38873 = r38872 * r38854;
        double r38874 = 263.505074721;
        double r38875 = r38873 + r38874;
        double r38876 = r38875 * r38854;
        double r38877 = 313.399215894;
        double r38878 = r38876 + r38877;
        double r38879 = r38878 * r38854;
        double r38880 = 47.066876606;
        double r38881 = r38879 + r38880;
        double r38882 = r38870 / r38881;
        return r38882;
}


double f_of(float x, float y, float z) {
        float r38883 = x;
        float r38884 = -3.1392156119995164e+40f;
        bool r38885 = r38883 <= r38884;
        float r38886 = y;
        float r38887 = r38883 * r38883;
        float r38888 = r38886 / r38887;
        float r38889 = 4.16438922228f;
        float r38890 = r38889 * r38883;
        float r38891 = r38888 + r38890;
        float r38892 = 110.1139242984811f;
        float r38893 = r38891 - r38892;
        float r38894 = 3.559627588458501e+81f;
        bool r38895 = r38883 <= r38894;
        float r38896 = 2.0f;
        float r38897 = r38883 - r38896;
        float r38898 = 1.0f;
        float r38899 = r38897 / r38898;
        float r38900 = r38883 * r38889;
        float r38901 = 78.6994924154f;
        float r38902 = r38900 + r38901;
        float r38903 = r38902 * r38883;
        float r38904 = 137.519416416f;
        float r38905 = r38903 + r38904;
        float r38906 = r38905 * r38883;
        float r38907 = r38906 + r38886;
        float r38908 = r38907 * r38883;
        float r38909 = z;
        float r38910 = r38908 + r38909;
        float r38911 = 43.3400022514f;
        float r38912 = r38883 + r38911;
        float r38913 = r38912 * r38883;
        float r38914 = 263.505074721f;
        float r38915 = r38913 + r38914;
        float r38916 = r38915 * r38883;
        float r38917 = 313.399215894f;
        float r38918 = r38916 + r38917;
        float r38919 = r38918 * r38883;
        float r38920 = 47.066876606f;
        float r38921 = r38919 + r38920;
        float r38922 = r38910 / r38921;
        float r38923 = r38899 * r38922;
        float r38924 = r38895 ? r38923 : r38893;
        float r38925 = r38885 ? r38893 : r38924;
        return r38925;
}

double f_od(double x, double y, double z) {
        double r38926 = x;
        double r38927 = -3.1392156119995164e+40;
        bool r38928 = r38926 <= r38927;
        double r38929 = y;
        double r38930 = r38926 * r38926;
        double r38931 = r38929 / r38930;
        double r38932 = 4.16438922228;
        double r38933 = r38932 * r38926;
        double r38934 = r38931 + r38933;
        double r38935 = 110.1139242984811;
        double r38936 = r38934 - r38935;
        double r38937 = 3.559627588458501e+81;
        bool r38938 = r38926 <= r38937;
        double r38939 = 2.0;
        double r38940 = r38926 - r38939;
        double r38941 = 1.0;
        double r38942 = r38940 / r38941;
        double r38943 = r38926 * r38932;
        double r38944 = 78.6994924154;
        double r38945 = r38943 + r38944;
        double r38946 = r38945 * r38926;
        double r38947 = 137.519416416;
        double r38948 = r38946 + r38947;
        double r38949 = r38948 * r38926;
        double r38950 = r38949 + r38929;
        double r38951 = r38950 * r38926;
        double r38952 = z;
        double r38953 = r38951 + r38952;
        double r38954 = 43.3400022514;
        double r38955 = r38926 + r38954;
        double r38956 = r38955 * r38926;
        double r38957 = 263.505074721;
        double r38958 = r38956 + r38957;
        double r38959 = r38958 * r38926;
        double r38960 = 313.399215894;
        double r38961 = r38959 + r38960;
        double r38962 = r38961 * r38926;
        double r38963 = 47.066876606;
        double r38964 = r38962 + r38963;
        double r38965 = r38953 / r38964;
        double r38966 = r38942 * r38965;
        double r38967 = r38938 ? r38966 : r38936;
        double r38968 = r38928 ? r38936 : r38967;
        return r38968;
}

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 r38969, r38970, r38971, r38972, r38973, r38974, r38975, r38976, r38977, r38978, r38979, r38980, r38981, r38982, r38983, r38984, r38985, r38986, r38987, r38988, r38989, r38990, r38991, r38992, r38993, r38994, r38995, r38996, r38997;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r38969);
        mpfr_init_set_str(r38970, "2.0", 10, MPFR_RNDN);
        mpfr_init(r38971);
        mpfr_init_set_str(r38972, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r38973);
        mpfr_init_set_str(r38974, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r38975);
        mpfr_init(r38976);
        mpfr_init_set_str(r38977, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r38978);
        mpfr_init(r38979);
        mpfr_init(r38980);
        mpfr_init(r38981);
        mpfr_init(r38982);
        mpfr_init(r38983);
        mpfr_init(r38984);
        mpfr_init(r38985);
        mpfr_init_set_str(r38986, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r38987);
        mpfr_init(r38988);
        mpfr_init_set_str(r38989, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r38990);
        mpfr_init(r38991);
        mpfr_init_set_str(r38992, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r38993);
        mpfr_init(r38994);
        mpfr_init_set_str(r38995, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r38996);
        mpfr_init(r38997);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r38969, x, MPFR_RNDN);
        ;
        mpfr_sub(r38971, r38969, r38970, MPFR_RNDN);
        ;
        mpfr_mul(r38973, r38969, r38972, MPFR_RNDN);
        ;
        mpfr_add(r38975, r38973, r38974, MPFR_RNDN);
        mpfr_mul(r38976, r38975, r38969, MPFR_RNDN);
        ;
        mpfr_add(r38978, r38976, r38977, MPFR_RNDN);
        mpfr_mul(r38979, r38978, r38969, MPFR_RNDN);
        mpfr_set_d(r38980, y, MPFR_RNDN);
        mpfr_add(r38981, r38979, r38980, MPFR_RNDN);
        mpfr_mul(r38982, r38981, r38969, MPFR_RNDN);
        mpfr_set_d(r38983, z, MPFR_RNDN);
        mpfr_add(r38984, r38982, r38983, MPFR_RNDN);
        mpfr_mul(r38985, r38971, r38984, MPFR_RNDN);
        ;
        mpfr_add(r38987, r38969, r38986, MPFR_RNDN);
        mpfr_mul(r38988, r38987, r38969, MPFR_RNDN);
        ;
        mpfr_add(r38990, r38988, r38989, MPFR_RNDN);
        mpfr_mul(r38991, r38990, r38969, MPFR_RNDN);
        ;
        mpfr_add(r38993, r38991, r38992, MPFR_RNDN);
        mpfr_mul(r38994, r38993, r38969, MPFR_RNDN);
        ;
        mpfr_add(r38996, r38994, r38995, MPFR_RNDN);
        mpfr_div(r38997, r38985, r38996, MPFR_RNDN);
        return mpfr_get_d(r38997, MPFR_RNDN);
}

static mpfr_t r38998, r38999, r39000, r39001, r39002, r39003, r39004, r39005, r39006, r39007, r39008, r39009, r39010, r39011, r39012, r39013, r39014, r39015, r39016, r39017, r39018, r39019, r39020, r39021, r39022, r39023, r39024, r39025, r39026, r39027, r39028, r39029, r39030, r39031, r39032, r39033, r39034, r39035, r39036, r39037, r39038, r39039, r39040;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r38998);
        mpfr_init_set_str(r38999, "-3.1392156119995164e+40", 10, MPFR_RNDN);
        mpfr_init(r39000);
        mpfr_init(r39001);
        mpfr_init(r39002);
        mpfr_init(r39003);
        mpfr_init_set_str(r39004, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r39005);
        mpfr_init(r39006);
        mpfr_init_set_str(r39007, "110.1139242984811", 10, MPFR_RNDN);
        mpfr_init(r39008);
        mpfr_init_set_str(r39009, "3.559627588458501e+81", 10, MPFR_RNDN);
        mpfr_init(r39010);
        mpfr_init_set_str(r39011, "2.0", 10, MPFR_RNDN);
        mpfr_init(r39012);
        mpfr_init_set_str(r39013, "1", 10, MPFR_RNDN);
        mpfr_init(r39014);
        mpfr_init(r39015);
        mpfr_init_set_str(r39016, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r39017);
        mpfr_init(r39018);
        mpfr_init_set_str(r39019, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r39020);
        mpfr_init(r39021);
        mpfr_init(r39022);
        mpfr_init(r39023);
        mpfr_init(r39024);
        mpfr_init(r39025);
        mpfr_init_set_str(r39026, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r39027);
        mpfr_init(r39028);
        mpfr_init_set_str(r39029, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r39030);
        mpfr_init(r39031);
        mpfr_init_set_str(r39032, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r39033);
        mpfr_init(r39034);
        mpfr_init_set_str(r39035, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r39036);
        mpfr_init(r39037);
        mpfr_init(r39038);
        mpfr_init(r39039);
        mpfr_init(r39040);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r38998, x, MPFR_RNDN);
        ;
        mpfr_set_si(r39000, mpfr_cmp(r38998, r38999) <= 0, MPFR_RNDN);
        mpfr_set_d(r39001, y, MPFR_RNDN);
        mpfr_sqr(r39002, r38998, MPFR_RNDN);
        mpfr_div(r39003, r39001, r39002, MPFR_RNDN);
        ;
        mpfr_mul(r39005, r39004, r38998, MPFR_RNDN);
        mpfr_add(r39006, r39003, r39005, MPFR_RNDN);
        ;
        mpfr_sub(r39008, r39006, r39007, MPFR_RNDN);
        ;
        mpfr_set_si(r39010, mpfr_cmp(r38998, r39009) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r39012, r38998, r39011, MPFR_RNDN);
        ;
        mpfr_div(r39014, r39012, r39013, MPFR_RNDN);
        mpfr_mul(r39015, r38998, r39004, MPFR_RNDN);
        ;
        mpfr_add(r39017, r39015, r39016, MPFR_RNDN);
        mpfr_mul(r39018, r39017, r38998, MPFR_RNDN);
        ;
        mpfr_add(r39020, r39018, r39019, MPFR_RNDN);
        mpfr_mul(r39021, r39020, r38998, MPFR_RNDN);
        mpfr_add(r39022, r39021, r39001, MPFR_RNDN);
        mpfr_mul(r39023, r39022, r38998, MPFR_RNDN);
        mpfr_set_d(r39024, z, MPFR_RNDN);
        mpfr_add(r39025, r39023, r39024, MPFR_RNDN);
        ;
        mpfr_add(r39027, r38998, r39026, MPFR_RNDN);
        mpfr_mul(r39028, r39027, r38998, MPFR_RNDN);
        ;
        mpfr_add(r39030, r39028, r39029, MPFR_RNDN);
        mpfr_mul(r39031, r39030, r38998, MPFR_RNDN);
        ;
        mpfr_add(r39033, r39031, r39032, MPFR_RNDN);
        mpfr_mul(r39034, r39033, r38998, MPFR_RNDN);
        ;
        mpfr_add(r39036, r39034, r39035, MPFR_RNDN);
        mpfr_div(r39037, r39025, r39036, MPFR_RNDN);
        mpfr_mul(r39038, r39014, r39037, MPFR_RNDN);
        if (mpfr_get_si(r39010, MPFR_RNDN)) { mpfr_set(r39039, r39038, MPFR_RNDN); } else { mpfr_set(r39039, r39008, MPFR_RNDN); };
        if (mpfr_get_si(r39000, MPFR_RNDN)) { mpfr_set(r39040, r39008, MPFR_RNDN); } else { mpfr_set(r39040, r39039, MPFR_RNDN); };
        return mpfr_get_d(r39040, MPFR_RNDN);
}

static mpfr_t r39041, r39042, r39043, r39044, r39045, r39046, r39047, r39048, r39049, r39050, r39051, r39052, r39053, r39054, r39055, r39056, r39057, r39058, r39059, r39060, r39061, r39062, r39063, r39064, r39065, r39066, r39067, r39068, r39069, r39070, r39071, r39072, r39073, r39074, r39075, r39076, r39077, r39078, r39079, r39080, r39081, r39082, r39083;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r39041);
        mpfr_init_set_str(r39042, "-3.1392156119995164e+40", 10, MPFR_RNDN);
        mpfr_init(r39043);
        mpfr_init(r39044);
        mpfr_init(r39045);
        mpfr_init(r39046);
        mpfr_init_set_str(r39047, "4.16438922228", 10, MPFR_RNDN);
        mpfr_init(r39048);
        mpfr_init(r39049);
        mpfr_init_set_str(r39050, "110.1139242984811", 10, MPFR_RNDN);
        mpfr_init(r39051);
        mpfr_init_set_str(r39052, "3.559627588458501e+81", 10, MPFR_RNDN);
        mpfr_init(r39053);
        mpfr_init_set_str(r39054, "2.0", 10, MPFR_RNDN);
        mpfr_init(r39055);
        mpfr_init_set_str(r39056, "1", 10, MPFR_RNDN);
        mpfr_init(r39057);
        mpfr_init(r39058);
        mpfr_init_set_str(r39059, "78.6994924154", 10, MPFR_RNDN);
        mpfr_init(r39060);
        mpfr_init(r39061);
        mpfr_init_set_str(r39062, "137.519416416", 10, MPFR_RNDN);
        mpfr_init(r39063);
        mpfr_init(r39064);
        mpfr_init(r39065);
        mpfr_init(r39066);
        mpfr_init(r39067);
        mpfr_init(r39068);
        mpfr_init_set_str(r39069, "43.3400022514", 10, MPFR_RNDN);
        mpfr_init(r39070);
        mpfr_init(r39071);
        mpfr_init_set_str(r39072, "263.505074721", 10, MPFR_RNDN);
        mpfr_init(r39073);
        mpfr_init(r39074);
        mpfr_init_set_str(r39075, "313.399215894", 10, MPFR_RNDN);
        mpfr_init(r39076);
        mpfr_init(r39077);
        mpfr_init_set_str(r39078, "47.066876606", 10, MPFR_RNDN);
        mpfr_init(r39079);
        mpfr_init(r39080);
        mpfr_init(r39081);
        mpfr_init(r39082);
        mpfr_init(r39083);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r39041, x, MPFR_RNDN);
        ;
        mpfr_set_si(r39043, mpfr_cmp(r39041, r39042) <= 0, MPFR_RNDN);
        mpfr_set_d(r39044, y, MPFR_RNDN);
        mpfr_sqr(r39045, r39041, MPFR_RNDN);
        mpfr_div(r39046, r39044, r39045, MPFR_RNDN);
        ;
        mpfr_mul(r39048, r39047, r39041, MPFR_RNDN);
        mpfr_add(r39049, r39046, r39048, MPFR_RNDN);
        ;
        mpfr_sub(r39051, r39049, r39050, MPFR_RNDN);
        ;
        mpfr_set_si(r39053, mpfr_cmp(r39041, r39052) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r39055, r39041, r39054, MPFR_RNDN);
        ;
        mpfr_div(r39057, r39055, r39056, MPFR_RNDN);
        mpfr_mul(r39058, r39041, r39047, MPFR_RNDN);
        ;
        mpfr_add(r39060, r39058, r39059, MPFR_RNDN);
        mpfr_mul(r39061, r39060, r39041, MPFR_RNDN);
        ;
        mpfr_add(r39063, r39061, r39062, MPFR_RNDN);
        mpfr_mul(r39064, r39063, r39041, MPFR_RNDN);
        mpfr_add(r39065, r39064, r39044, MPFR_RNDN);
        mpfr_mul(r39066, r39065, r39041, MPFR_RNDN);
        mpfr_set_d(r39067, z, MPFR_RNDN);
        mpfr_add(r39068, r39066, r39067, MPFR_RNDN);
        ;
        mpfr_add(r39070, r39041, r39069, MPFR_RNDN);
        mpfr_mul(r39071, r39070, r39041, MPFR_RNDN);
        ;
        mpfr_add(r39073, r39071, r39072, MPFR_RNDN);
        mpfr_mul(r39074, r39073, r39041, MPFR_RNDN);
        ;
        mpfr_add(r39076, r39074, r39075, MPFR_RNDN);
        mpfr_mul(r39077, r39076, r39041, MPFR_RNDN);
        ;
        mpfr_add(r39079, r39077, r39078, MPFR_RNDN);
        mpfr_div(r39080, r39068, r39079, MPFR_RNDN);
        mpfr_mul(r39081, r39057, r39080, MPFR_RNDN);
        if (mpfr_get_si(r39053, MPFR_RNDN)) { mpfr_set(r39082, r39081, MPFR_RNDN); } else { mpfr_set(r39082, r39051, MPFR_RNDN); };
        if (mpfr_get_si(r39043, MPFR_RNDN)) { mpfr_set(r39083, r39051, MPFR_RNDN); } else { mpfr_set(r39083, r39082, MPFR_RNDN); };
        return mpfr_get_d(r39083, MPFR_RNDN);
}

