#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, D";

double f_if(float x, float y, float z, float t, float a, float b) {
        float r41752 = x;
        float r41753 = y;
        float r41754 = z;
        float r41755 = 3.13060547623;
        float r41756 = r41754 * r41755;
        float r41757 = 11.1667541262;
        float r41758 = r41756 + r41757;
        float r41759 = r41758 * r41754;
        float r41760 = t;
        float r41761 = r41759 + r41760;
        float r41762 = r41761 * r41754;
        float r41763 = a;
        float r41764 = r41762 + r41763;
        float r41765 = r41764 * r41754;
        float r41766 = b;
        float r41767 = r41765 + r41766;
        float r41768 = r41753 * r41767;
        float r41769 = 15.234687407;
        float r41770 = r41754 + r41769;
        float r41771 = r41770 * r41754;
        float r41772 = 31.4690115749;
        float r41773 = r41771 + r41772;
        float r41774 = r41773 * r41754;
        float r41775 = 11.9400905721;
        float r41776 = r41774 + r41775;
        float r41777 = r41776 * r41754;
        float r41778 = 0.607771387771;
        float r41779 = r41777 + r41778;
        float r41780 = r41768 / r41779;
        float r41781 = r41752 + r41780;
        return r41781;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r41782 = x;
        double r41783 = y;
        double r41784 = z;
        double r41785 = 3.13060547623;
        double r41786 = r41784 * r41785;
        double r41787 = 11.1667541262;
        double r41788 = r41786 + r41787;
        double r41789 = r41788 * r41784;
        double r41790 = t;
        double r41791 = r41789 + r41790;
        double r41792 = r41791 * r41784;
        double r41793 = a;
        double r41794 = r41792 + r41793;
        double r41795 = r41794 * r41784;
        double r41796 = b;
        double r41797 = r41795 + r41796;
        double r41798 = r41783 * r41797;
        double r41799 = 15.234687407;
        double r41800 = r41784 + r41799;
        double r41801 = r41800 * r41784;
        double r41802 = 31.4690115749;
        double r41803 = r41801 + r41802;
        double r41804 = r41803 * r41784;
        double r41805 = 11.9400905721;
        double r41806 = r41804 + r41805;
        double r41807 = r41806 * r41784;
        double r41808 = 0.607771387771;
        double r41809 = r41807 + r41808;
        double r41810 = r41798 / r41809;
        double r41811 = r41782 + r41810;
        return r41811;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r41812 = z;
        float r41813 = -1.718170947433354e+69;
        bool r41814 = r41812 <= r41813;
        float r41815 = y;
        float r41816 = r41815 / r41812;
        float r41817 = t;
        float r41818 = r41817 / r41812;
        float r41819 = 36.527041698806414;
        float r41820 = r41818 - r41819;
        float r41821 = r41816 * r41820;
        float r41822 = x;
        float r41823 = 3.13060547623;
        float r41824 = r41815 * r41823;
        float r41825 = r41822 + r41824;
        float r41826 = r41821 + r41825;
        float r41827 = 1.8451957059749226e+26;
        bool r41828 = r41812 <= r41827;
        float r41829 = 1;
        float r41830 = r41815 / r41829;
        float r41831 = r41812 * r41823;
        float r41832 = 11.1667541262;
        float r41833 = r41831 + r41832;
        float r41834 = r41833 * r41812;
        float r41835 = r41834 + r41817;
        float r41836 = r41835 * r41812;
        float r41837 = a;
        float r41838 = r41836 + r41837;
        float r41839 = r41838 * r41812;
        float r41840 = b;
        float r41841 = r41839 + r41840;
        float r41842 = 15.234687407;
        float r41843 = r41812 + r41842;
        float r41844 = r41843 * r41812;
        float r41845 = 31.4690115749;
        float r41846 = r41844 + r41845;
        float r41847 = r41846 * r41812;
        float r41848 = 11.9400905721;
        float r41849 = r41847 + r41848;
        float r41850 = r41849 * r41812;
        float r41851 = 0.607771387771;
        float r41852 = r41850 + r41851;
        float r41853 = r41841 / r41852;
        float r41854 = r41830 * r41853;
        float r41855 = r41822 + r41854;
        float r41856 = r41828 ? r41855 : r41826;
        float r41857 = r41814 ? r41826 : r41856;
        return r41857;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r41858 = z;
        double r41859 = -1.718170947433354e+69;
        bool r41860 = r41858 <= r41859;
        double r41861 = y;
        double r41862 = r41861 / r41858;
        double r41863 = t;
        double r41864 = r41863 / r41858;
        double r41865 = 36.527041698806414;
        double r41866 = r41864 - r41865;
        double r41867 = r41862 * r41866;
        double r41868 = x;
        double r41869 = 3.13060547623;
        double r41870 = r41861 * r41869;
        double r41871 = r41868 + r41870;
        double r41872 = r41867 + r41871;
        double r41873 = 1.8451957059749226e+26;
        bool r41874 = r41858 <= r41873;
        double r41875 = 1;
        double r41876 = r41861 / r41875;
        double r41877 = r41858 * r41869;
        double r41878 = 11.1667541262;
        double r41879 = r41877 + r41878;
        double r41880 = r41879 * r41858;
        double r41881 = r41880 + r41863;
        double r41882 = r41881 * r41858;
        double r41883 = a;
        double r41884 = r41882 + r41883;
        double r41885 = r41884 * r41858;
        double r41886 = b;
        double r41887 = r41885 + r41886;
        double r41888 = 15.234687407;
        double r41889 = r41858 + r41888;
        double r41890 = r41889 * r41858;
        double r41891 = 31.4690115749;
        double r41892 = r41890 + r41891;
        double r41893 = r41892 * r41858;
        double r41894 = 11.9400905721;
        double r41895 = r41893 + r41894;
        double r41896 = r41895 * r41858;
        double r41897 = 0.607771387771;
        double r41898 = r41896 + r41897;
        double r41899 = r41887 / r41898;
        double r41900 = r41876 * r41899;
        double r41901 = r41868 + r41900;
        double r41902 = r41874 ? r41901 : r41872;
        double r41903 = r41860 ? r41872 : r41902;
        return r41903;
}

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 r41904, r41905, r41906, r41907, r41908, r41909, r41910, r41911, r41912, r41913, r41914, r41915, r41916, r41917, r41918, r41919, r41920, r41921, r41922, r41923, r41924, r41925, r41926, r41927, r41928, r41929, r41930, r41931, r41932, r41933;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r41904);
        mpfr_init(r41905);
        mpfr_init(r41906);
        mpfr_init_set_str(r41907, "3.13060547623", 10, MPFR_RNDN);
        mpfr_init(r41908);
        mpfr_init_set_str(r41909, "11.1667541262", 10, MPFR_RNDN);
        mpfr_init(r41910);
        mpfr_init(r41911);
        mpfr_init(r41912);
        mpfr_init(r41913);
        mpfr_init(r41914);
        mpfr_init(r41915);
        mpfr_init(r41916);
        mpfr_init(r41917);
        mpfr_init(r41918);
        mpfr_init(r41919);
        mpfr_init(r41920);
        mpfr_init_set_str(r41921, "15.234687407", 10, MPFR_RNDN);
        mpfr_init(r41922);
        mpfr_init(r41923);
        mpfr_init_set_str(r41924, "31.4690115749", 10, MPFR_RNDN);
        mpfr_init(r41925);
        mpfr_init(r41926);
        mpfr_init_set_str(r41927, "11.9400905721", 10, MPFR_RNDN);
        mpfr_init(r41928);
        mpfr_init(r41929);
        mpfr_init_set_str(r41930, "0.607771387771", 10, MPFR_RNDN);
        mpfr_init(r41931);
        mpfr_init(r41932);
        mpfr_init(r41933);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r41904, x, MPFR_RNDN);
        mpfr_set_d(r41905, y, MPFR_RNDN);
        mpfr_set_d(r41906, z, MPFR_RNDN);
        ;
        mpfr_mul(r41908, r41906, r41907, MPFR_RNDN);
        ;
        mpfr_add(r41910, r41908, r41909, MPFR_RNDN);
        mpfr_mul(r41911, r41910, r41906, MPFR_RNDN);
        mpfr_set_d(r41912, t, MPFR_RNDN);
        mpfr_add(r41913, r41911, r41912, MPFR_RNDN);
        mpfr_mul(r41914, r41913, r41906, MPFR_RNDN);
        mpfr_set_d(r41915, a, MPFR_RNDN);
        mpfr_add(r41916, r41914, r41915, MPFR_RNDN);
        mpfr_mul(r41917, r41916, r41906, MPFR_RNDN);
        mpfr_set_d(r41918, b, MPFR_RNDN);
        mpfr_add(r41919, r41917, r41918, MPFR_RNDN);
        mpfr_mul(r41920, r41905, r41919, MPFR_RNDN);
        ;
        mpfr_add(r41922, r41906, r41921, MPFR_RNDN);
        mpfr_mul(r41923, r41922, r41906, MPFR_RNDN);
        ;
        mpfr_add(r41925, r41923, r41924, MPFR_RNDN);
        mpfr_mul(r41926, r41925, r41906, MPFR_RNDN);
        ;
        mpfr_add(r41928, r41926, r41927, MPFR_RNDN);
        mpfr_mul(r41929, r41928, r41906, MPFR_RNDN);
        ;
        mpfr_add(r41931, r41929, r41930, MPFR_RNDN);
        mpfr_div(r41932, r41920, r41931, MPFR_RNDN);
        mpfr_add(r41933, r41904, r41932, MPFR_RNDN);
        return mpfr_get_d(r41933, MPFR_RNDN);
}

static mpfr_t r41934, r41935, r41936, r41937, r41938, r41939, r41940, r41941, r41942, r41943, r41944, r41945, r41946, r41947, r41948, r41949, r41950, r41951, r41952, r41953, r41954, r41955, r41956, r41957, r41958, r41959, r41960, r41961, r41962, r41963, r41964, r41965, r41966, r41967, r41968, r41969, r41970, r41971, r41972, r41973, r41974, r41975, r41976, r41977, r41978, r41979;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41934);
        mpfr_init_set_str(r41935, "-1.718170947433354e+69", 10, MPFR_RNDN);
        mpfr_init(r41936);
        mpfr_init(r41937);
        mpfr_init(r41938);
        mpfr_init(r41939);
        mpfr_init(r41940);
        mpfr_init_set_str(r41941, "36.527041698806414", 10, MPFR_RNDN);
        mpfr_init(r41942);
        mpfr_init(r41943);
        mpfr_init(r41944);
        mpfr_init_set_str(r41945, "3.13060547623", 10, MPFR_RNDN);
        mpfr_init(r41946);
        mpfr_init(r41947);
        mpfr_init(r41948);
        mpfr_init_set_str(r41949, "1.8451957059749226e+26", 10, MPFR_RNDN);
        mpfr_init(r41950);
        mpfr_init_set_str(r41951, "1", 10, MPFR_RNDN);
        mpfr_init(r41952);
        mpfr_init(r41953);
        mpfr_init_set_str(r41954, "11.1667541262", 10, MPFR_RNDN);
        mpfr_init(r41955);
        mpfr_init(r41956);
        mpfr_init(r41957);
        mpfr_init(r41958);
        mpfr_init(r41959);
        mpfr_init(r41960);
        mpfr_init(r41961);
        mpfr_init(r41962);
        mpfr_init(r41963);
        mpfr_init_set_str(r41964, "15.234687407", 10, MPFR_RNDN);
        mpfr_init(r41965);
        mpfr_init(r41966);
        mpfr_init_set_str(r41967, "31.4690115749", 10, MPFR_RNDN);
        mpfr_init(r41968);
        mpfr_init(r41969);
        mpfr_init_set_str(r41970, "11.9400905721", 10, MPFR_RNDN);
        mpfr_init(r41971);
        mpfr_init(r41972);
        mpfr_init_set_str(r41973, "0.607771387771", 10, MPFR_RNDN);
        mpfr_init(r41974);
        mpfr_init(r41975);
        mpfr_init(r41976);
        mpfr_init(r41977);
        mpfr_init(r41978);
        mpfr_init(r41979);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r41934, z, MPFR_RNDN);
        ;
        mpfr_set_si(r41936, mpfr_cmp(r41934, r41935) <= 0, MPFR_RNDN);
        mpfr_set_d(r41937, y, MPFR_RNDN);
        mpfr_div(r41938, r41937, r41934, MPFR_RNDN);
        mpfr_set_d(r41939, t, MPFR_RNDN);
        mpfr_div(r41940, r41939, r41934, MPFR_RNDN);
        ;
        mpfr_sub(r41942, r41940, r41941, MPFR_RNDN);
        mpfr_mul(r41943, r41938, r41942, MPFR_RNDN);
        mpfr_set_d(r41944, x, MPFR_RNDN);
        ;
        mpfr_mul(r41946, r41937, r41945, MPFR_RNDN);
        mpfr_add(r41947, r41944, r41946, MPFR_RNDN);
        mpfr_add(r41948, r41943, r41947, MPFR_RNDN);
        ;
        mpfr_set_si(r41950, mpfr_cmp(r41934, r41949) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r41952, r41937, r41951, MPFR_RNDN);
        mpfr_mul(r41953, r41934, r41945, MPFR_RNDN);
        ;
        mpfr_add(r41955, r41953, r41954, MPFR_RNDN);
        mpfr_mul(r41956, r41955, r41934, MPFR_RNDN);
        mpfr_add(r41957, r41956, r41939, MPFR_RNDN);
        mpfr_mul(r41958, r41957, r41934, MPFR_RNDN);
        mpfr_set_d(r41959, a, MPFR_RNDN);
        mpfr_add(r41960, r41958, r41959, MPFR_RNDN);
        mpfr_mul(r41961, r41960, r41934, MPFR_RNDN);
        mpfr_set_d(r41962, b, MPFR_RNDN);
        mpfr_add(r41963, r41961, r41962, MPFR_RNDN);
        ;
        mpfr_add(r41965, r41934, r41964, MPFR_RNDN);
        mpfr_mul(r41966, r41965, r41934, MPFR_RNDN);
        ;
        mpfr_add(r41968, r41966, r41967, MPFR_RNDN);
        mpfr_mul(r41969, r41968, r41934, MPFR_RNDN);
        ;
        mpfr_add(r41971, r41969, r41970, MPFR_RNDN);
        mpfr_mul(r41972, r41971, r41934, MPFR_RNDN);
        ;
        mpfr_add(r41974, r41972, r41973, MPFR_RNDN);
        mpfr_div(r41975, r41963, r41974, MPFR_RNDN);
        mpfr_mul(r41976, r41952, r41975, MPFR_RNDN);
        mpfr_add(r41977, r41944, r41976, MPFR_RNDN);
        if (mpfr_get_si(r41950, MPFR_RNDN)) { mpfr_set(r41978, r41977, MPFR_RNDN); } else { mpfr_set(r41978, r41948, MPFR_RNDN); };
        if (mpfr_get_si(r41936, MPFR_RNDN)) { mpfr_set(r41979, r41948, MPFR_RNDN); } else { mpfr_set(r41979, r41978, MPFR_RNDN); };
        return mpfr_get_d(r41979, MPFR_RNDN);
}

static mpfr_t r41980, r41981, r41982, r41983, r41984, r41985, r41986, r41987, r41988, r41989, r41990, r41991, r41992, r41993, r41994, r41995, r41996, r41997, r41998, r41999, r42000, r42001, r42002, r42003, r42004, r42005, r42006, r42007, r42008, r42009, r42010, r42011, r42012, r42013, r42014, r42015, r42016, r42017, r42018, r42019, r42020, r42021, r42022, r42023, r42024, r42025;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41980);
        mpfr_init_set_str(r41981, "-1.718170947433354e+69", 10, MPFR_RNDN);
        mpfr_init(r41982);
        mpfr_init(r41983);
        mpfr_init(r41984);
        mpfr_init(r41985);
        mpfr_init(r41986);
        mpfr_init_set_str(r41987, "36.527041698806414", 10, MPFR_RNDN);
        mpfr_init(r41988);
        mpfr_init(r41989);
        mpfr_init(r41990);
        mpfr_init_set_str(r41991, "3.13060547623", 10, MPFR_RNDN);
        mpfr_init(r41992);
        mpfr_init(r41993);
        mpfr_init(r41994);
        mpfr_init_set_str(r41995, "1.8451957059749226e+26", 10, MPFR_RNDN);
        mpfr_init(r41996);
        mpfr_init_set_str(r41997, "1", 10, MPFR_RNDN);
        mpfr_init(r41998);
        mpfr_init(r41999);
        mpfr_init_set_str(r42000, "11.1667541262", 10, MPFR_RNDN);
        mpfr_init(r42001);
        mpfr_init(r42002);
        mpfr_init(r42003);
        mpfr_init(r42004);
        mpfr_init(r42005);
        mpfr_init(r42006);
        mpfr_init(r42007);
        mpfr_init(r42008);
        mpfr_init(r42009);
        mpfr_init_set_str(r42010, "15.234687407", 10, MPFR_RNDN);
        mpfr_init(r42011);
        mpfr_init(r42012);
        mpfr_init_set_str(r42013, "31.4690115749", 10, MPFR_RNDN);
        mpfr_init(r42014);
        mpfr_init(r42015);
        mpfr_init_set_str(r42016, "11.9400905721", 10, MPFR_RNDN);
        mpfr_init(r42017);
        mpfr_init(r42018);
        mpfr_init_set_str(r42019, "0.607771387771", 10, MPFR_RNDN);
        mpfr_init(r42020);
        mpfr_init(r42021);
        mpfr_init(r42022);
        mpfr_init(r42023);
        mpfr_init(r42024);
        mpfr_init(r42025);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r41980, z, MPFR_RNDN);
        ;
        mpfr_set_si(r41982, mpfr_cmp(r41980, r41981) <= 0, MPFR_RNDN);
        mpfr_set_d(r41983, y, MPFR_RNDN);
        mpfr_div(r41984, r41983, r41980, MPFR_RNDN);
        mpfr_set_d(r41985, t, MPFR_RNDN);
        mpfr_div(r41986, r41985, r41980, MPFR_RNDN);
        ;
        mpfr_sub(r41988, r41986, r41987, MPFR_RNDN);
        mpfr_mul(r41989, r41984, r41988, MPFR_RNDN);
        mpfr_set_d(r41990, x, MPFR_RNDN);
        ;
        mpfr_mul(r41992, r41983, r41991, MPFR_RNDN);
        mpfr_add(r41993, r41990, r41992, MPFR_RNDN);
        mpfr_add(r41994, r41989, r41993, MPFR_RNDN);
        ;
        mpfr_set_si(r41996, mpfr_cmp(r41980, r41995) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r41998, r41983, r41997, MPFR_RNDN);
        mpfr_mul(r41999, r41980, r41991, MPFR_RNDN);
        ;
        mpfr_add(r42001, r41999, r42000, MPFR_RNDN);
        mpfr_mul(r42002, r42001, r41980, MPFR_RNDN);
        mpfr_add(r42003, r42002, r41985, MPFR_RNDN);
        mpfr_mul(r42004, r42003, r41980, MPFR_RNDN);
        mpfr_set_d(r42005, a, MPFR_RNDN);
        mpfr_add(r42006, r42004, r42005, MPFR_RNDN);
        mpfr_mul(r42007, r42006, r41980, MPFR_RNDN);
        mpfr_set_d(r42008, b, MPFR_RNDN);
        mpfr_add(r42009, r42007, r42008, MPFR_RNDN);
        ;
        mpfr_add(r42011, r41980, r42010, MPFR_RNDN);
        mpfr_mul(r42012, r42011, r41980, MPFR_RNDN);
        ;
        mpfr_add(r42014, r42012, r42013, MPFR_RNDN);
        mpfr_mul(r42015, r42014, r41980, MPFR_RNDN);
        ;
        mpfr_add(r42017, r42015, r42016, MPFR_RNDN);
        mpfr_mul(r42018, r42017, r41980, MPFR_RNDN);
        ;
        mpfr_add(r42020, r42018, r42019, MPFR_RNDN);
        mpfr_div(r42021, r42009, r42020, MPFR_RNDN);
        mpfr_mul(r42022, r41998, r42021, MPFR_RNDN);
        mpfr_add(r42023, r41990, r42022, MPFR_RNDN);
        if (mpfr_get_si(r41996, MPFR_RNDN)) { mpfr_set(r42024, r42023, MPFR_RNDN); } else { mpfr_set(r42024, r41994, MPFR_RNDN); };
        if (mpfr_get_si(r41982, MPFR_RNDN)) { mpfr_set(r42025, r41994, MPFR_RNDN); } else { mpfr_set(r42025, r42024, MPFR_RNDN); };
        return mpfr_get_d(r42025, MPFR_RNDN);
}

