#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 r42093 = x;
        float r42094 = y;
        float r42095 = z;
        float r42096 = 3.13060547623;
        float r42097 = r42095 * r42096;
        float r42098 = 11.1667541262;
        float r42099 = r42097 + r42098;
        float r42100 = r42099 * r42095;
        float r42101 = t;
        float r42102 = r42100 + r42101;
        float r42103 = r42102 * r42095;
        float r42104 = a;
        float r42105 = r42103 + r42104;
        float r42106 = r42105 * r42095;
        float r42107 = b;
        float r42108 = r42106 + r42107;
        float r42109 = r42094 * r42108;
        float r42110 = 15.234687407;
        float r42111 = r42095 + r42110;
        float r42112 = r42111 * r42095;
        float r42113 = 31.4690115749;
        float r42114 = r42112 + r42113;
        float r42115 = r42114 * r42095;
        float r42116 = 11.9400905721;
        float r42117 = r42115 + r42116;
        float r42118 = r42117 * r42095;
        float r42119 = 0.607771387771;
        float r42120 = r42118 + r42119;
        float r42121 = r42109 / r42120;
        float r42122 = r42093 + r42121;
        return r42122;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r42123 = x;
        double r42124 = y;
        double r42125 = z;
        double r42126 = 3.13060547623;
        double r42127 = r42125 * r42126;
        double r42128 = 11.1667541262;
        double r42129 = r42127 + r42128;
        double r42130 = r42129 * r42125;
        double r42131 = t;
        double r42132 = r42130 + r42131;
        double r42133 = r42132 * r42125;
        double r42134 = a;
        double r42135 = r42133 + r42134;
        double r42136 = r42135 * r42125;
        double r42137 = b;
        double r42138 = r42136 + r42137;
        double r42139 = r42124 * r42138;
        double r42140 = 15.234687407;
        double r42141 = r42125 + r42140;
        double r42142 = r42141 * r42125;
        double r42143 = 31.4690115749;
        double r42144 = r42142 + r42143;
        double r42145 = r42144 * r42125;
        double r42146 = 11.9400905721;
        double r42147 = r42145 + r42146;
        double r42148 = r42147 * r42125;
        double r42149 = 0.607771387771;
        double r42150 = r42148 + r42149;
        double r42151 = r42139 / r42150;
        double r42152 = r42123 + r42151;
        return r42152;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r42153 = z;
        float r42154 = -3.5705970230653727e+71;
        bool r42155 = r42153 <= r42154;
        float r42156 = y;
        float r42157 = r42156 / r42153;
        float r42158 = t;
        float r42159 = r42158 / r42153;
        float r42160 = 36.527041698806414;
        float r42161 = r42159 - r42160;
        float r42162 = r42157 * r42161;
        float r42163 = x;
        float r42164 = 3.13060547623;
        float r42165 = r42156 * r42164;
        float r42166 = r42163 + r42165;
        float r42167 = r42162 + r42166;
        float r42168 = 1.8451957059749226e+26;
        bool r42169 = r42153 <= r42168;
        float r42170 = 1;
        float r42171 = r42156 / r42170;
        float r42172 = r42153 * r42164;
        float r42173 = 11.1667541262;
        float r42174 = r42172 + r42173;
        float r42175 = r42174 * r42153;
        float r42176 = r42175 + r42158;
        float r42177 = r42176 * r42153;
        float r42178 = a;
        float r42179 = r42177 + r42178;
        float r42180 = r42179 * r42153;
        float r42181 = b;
        float r42182 = r42180 + r42181;
        float r42183 = 15.234687407;
        float r42184 = r42153 + r42183;
        float r42185 = r42184 * r42153;
        float r42186 = 31.4690115749;
        float r42187 = r42185 + r42186;
        float r42188 = r42187 * r42153;
        float r42189 = 11.9400905721;
        float r42190 = r42188 + r42189;
        float r42191 = r42190 * r42153;
        float r42192 = 0.607771387771;
        float r42193 = r42191 + r42192;
        float r42194 = r42182 / r42193;
        float r42195 = r42171 * r42194;
        float r42196 = r42163 + r42195;
        float r42197 = r42169 ? r42196 : r42167;
        float r42198 = r42155 ? r42167 : r42197;
        return r42198;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r42199 = z;
        double r42200 = -3.5705970230653727e+71;
        bool r42201 = r42199 <= r42200;
        double r42202 = y;
        double r42203 = r42202 / r42199;
        double r42204 = t;
        double r42205 = r42204 / r42199;
        double r42206 = 36.527041698806414;
        double r42207 = r42205 - r42206;
        double r42208 = r42203 * r42207;
        double r42209 = x;
        double r42210 = 3.13060547623;
        double r42211 = r42202 * r42210;
        double r42212 = r42209 + r42211;
        double r42213 = r42208 + r42212;
        double r42214 = 1.8451957059749226e+26;
        bool r42215 = r42199 <= r42214;
        double r42216 = 1;
        double r42217 = r42202 / r42216;
        double r42218 = r42199 * r42210;
        double r42219 = 11.1667541262;
        double r42220 = r42218 + r42219;
        double r42221 = r42220 * r42199;
        double r42222 = r42221 + r42204;
        double r42223 = r42222 * r42199;
        double r42224 = a;
        double r42225 = r42223 + r42224;
        double r42226 = r42225 * r42199;
        double r42227 = b;
        double r42228 = r42226 + r42227;
        double r42229 = 15.234687407;
        double r42230 = r42199 + r42229;
        double r42231 = r42230 * r42199;
        double r42232 = 31.4690115749;
        double r42233 = r42231 + r42232;
        double r42234 = r42233 * r42199;
        double r42235 = 11.9400905721;
        double r42236 = r42234 + r42235;
        double r42237 = r42236 * r42199;
        double r42238 = 0.607771387771;
        double r42239 = r42237 + r42238;
        double r42240 = r42228 / r42239;
        double r42241 = r42217 * r42240;
        double r42242 = r42209 + r42241;
        double r42243 = r42215 ? r42242 : r42213;
        double r42244 = r42201 ? r42213 : r42243;
        return r42244;
}

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 r42245, r42246, r42247, r42248, r42249, r42250, r42251, r42252, r42253, r42254, r42255, r42256, r42257, r42258, r42259, r42260, r42261, r42262, r42263, r42264, r42265, r42266, r42267, r42268, r42269, r42270, r42271, r42272, r42273, r42274;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r42245);
        mpfr_init(r42246);
        mpfr_init(r42247);
        mpfr_init_set_str(r42248, "3.13060547623", 10, MPFR_RNDN);
        mpfr_init(r42249);
        mpfr_init_set_str(r42250, "11.1667541262", 10, MPFR_RNDN);
        mpfr_init(r42251);
        mpfr_init(r42252);
        mpfr_init(r42253);
        mpfr_init(r42254);
        mpfr_init(r42255);
        mpfr_init(r42256);
        mpfr_init(r42257);
        mpfr_init(r42258);
        mpfr_init(r42259);
        mpfr_init(r42260);
        mpfr_init(r42261);
        mpfr_init_set_str(r42262, "15.234687407", 10, MPFR_RNDN);
        mpfr_init(r42263);
        mpfr_init(r42264);
        mpfr_init_set_str(r42265, "31.4690115749", 10, MPFR_RNDN);
        mpfr_init(r42266);
        mpfr_init(r42267);
        mpfr_init_set_str(r42268, "11.9400905721", 10, MPFR_RNDN);
        mpfr_init(r42269);
        mpfr_init(r42270);
        mpfr_init_set_str(r42271, "0.607771387771", 10, MPFR_RNDN);
        mpfr_init(r42272);
        mpfr_init(r42273);
        mpfr_init(r42274);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r42245, x, MPFR_RNDN);
        mpfr_set_d(r42246, y, MPFR_RNDN);
        mpfr_set_d(r42247, z, MPFR_RNDN);
        ;
        mpfr_mul(r42249, r42247, r42248, MPFR_RNDN);
        ;
        mpfr_add(r42251, r42249, r42250, MPFR_RNDN);
        mpfr_mul(r42252, r42251, r42247, MPFR_RNDN);
        mpfr_set_d(r42253, t, MPFR_RNDN);
        mpfr_add(r42254, r42252, r42253, MPFR_RNDN);
        mpfr_mul(r42255, r42254, r42247, MPFR_RNDN);
        mpfr_set_d(r42256, a, MPFR_RNDN);
        mpfr_add(r42257, r42255, r42256, MPFR_RNDN);
        mpfr_mul(r42258, r42257, r42247, MPFR_RNDN);
        mpfr_set_d(r42259, b, MPFR_RNDN);
        mpfr_add(r42260, r42258, r42259, MPFR_RNDN);
        mpfr_mul(r42261, r42246, r42260, MPFR_RNDN);
        ;
        mpfr_add(r42263, r42247, r42262, MPFR_RNDN);
        mpfr_mul(r42264, r42263, r42247, MPFR_RNDN);
        ;
        mpfr_add(r42266, r42264, r42265, MPFR_RNDN);
        mpfr_mul(r42267, r42266, r42247, MPFR_RNDN);
        ;
        mpfr_add(r42269, r42267, r42268, MPFR_RNDN);
        mpfr_mul(r42270, r42269, r42247, MPFR_RNDN);
        ;
        mpfr_add(r42272, r42270, r42271, MPFR_RNDN);
        mpfr_div(r42273, r42261, r42272, MPFR_RNDN);
        mpfr_add(r42274, r42245, r42273, MPFR_RNDN);
        return mpfr_get_d(r42274, MPFR_RNDN);
}

static mpfr_t r42275, r42276, r42277, r42278, r42279, r42280, r42281, r42282, r42283, r42284, r42285, r42286, r42287, r42288, r42289, r42290, r42291, r42292, r42293, r42294, r42295, r42296, r42297, r42298, r42299, r42300, r42301, r42302, r42303, r42304, r42305, r42306, r42307, r42308, r42309, r42310, r42311, r42312, r42313, r42314, r42315, r42316, r42317, r42318, r42319, r42320;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42275);
        mpfr_init_set_str(r42276, "-3.5705970230653727e+71", 10, MPFR_RNDN);
        mpfr_init(r42277);
        mpfr_init(r42278);
        mpfr_init(r42279);
        mpfr_init(r42280);
        mpfr_init(r42281);
        mpfr_init_set_str(r42282, "36.527041698806414", 10, MPFR_RNDN);
        mpfr_init(r42283);
        mpfr_init(r42284);
        mpfr_init(r42285);
        mpfr_init_set_str(r42286, "3.13060547623", 10, MPFR_RNDN);
        mpfr_init(r42287);
        mpfr_init(r42288);
        mpfr_init(r42289);
        mpfr_init_set_str(r42290, "1.8451957059749226e+26", 10, MPFR_RNDN);
        mpfr_init(r42291);
        mpfr_init_set_str(r42292, "1", 10, MPFR_RNDN);
        mpfr_init(r42293);
        mpfr_init(r42294);
        mpfr_init_set_str(r42295, "11.1667541262", 10, MPFR_RNDN);
        mpfr_init(r42296);
        mpfr_init(r42297);
        mpfr_init(r42298);
        mpfr_init(r42299);
        mpfr_init(r42300);
        mpfr_init(r42301);
        mpfr_init(r42302);
        mpfr_init(r42303);
        mpfr_init(r42304);
        mpfr_init_set_str(r42305, "15.234687407", 10, MPFR_RNDN);
        mpfr_init(r42306);
        mpfr_init(r42307);
        mpfr_init_set_str(r42308, "31.4690115749", 10, MPFR_RNDN);
        mpfr_init(r42309);
        mpfr_init(r42310);
        mpfr_init_set_str(r42311, "11.9400905721", 10, MPFR_RNDN);
        mpfr_init(r42312);
        mpfr_init(r42313);
        mpfr_init_set_str(r42314, "0.607771387771", 10, MPFR_RNDN);
        mpfr_init(r42315);
        mpfr_init(r42316);
        mpfr_init(r42317);
        mpfr_init(r42318);
        mpfr_init(r42319);
        mpfr_init(r42320);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r42275, z, MPFR_RNDN);
        ;
        mpfr_set_si(r42277, mpfr_cmp(r42275, r42276) <= 0, MPFR_RNDN);
        mpfr_set_d(r42278, y, MPFR_RNDN);
        mpfr_div(r42279, r42278, r42275, MPFR_RNDN);
        mpfr_set_d(r42280, t, MPFR_RNDN);
        mpfr_div(r42281, r42280, r42275, MPFR_RNDN);
        ;
        mpfr_sub(r42283, r42281, r42282, MPFR_RNDN);
        mpfr_mul(r42284, r42279, r42283, MPFR_RNDN);
        mpfr_set_d(r42285, x, MPFR_RNDN);
        ;
        mpfr_mul(r42287, r42278, r42286, MPFR_RNDN);
        mpfr_add(r42288, r42285, r42287, MPFR_RNDN);
        mpfr_add(r42289, r42284, r42288, MPFR_RNDN);
        ;
        mpfr_set_si(r42291, mpfr_cmp(r42275, r42290) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r42293, r42278, r42292, MPFR_RNDN);
        mpfr_mul(r42294, r42275, r42286, MPFR_RNDN);
        ;
        mpfr_add(r42296, r42294, r42295, MPFR_RNDN);
        mpfr_mul(r42297, r42296, r42275, MPFR_RNDN);
        mpfr_add(r42298, r42297, r42280, MPFR_RNDN);
        mpfr_mul(r42299, r42298, r42275, MPFR_RNDN);
        mpfr_set_d(r42300, a, MPFR_RNDN);
        mpfr_add(r42301, r42299, r42300, MPFR_RNDN);
        mpfr_mul(r42302, r42301, r42275, MPFR_RNDN);
        mpfr_set_d(r42303, b, MPFR_RNDN);
        mpfr_add(r42304, r42302, r42303, MPFR_RNDN);
        ;
        mpfr_add(r42306, r42275, r42305, MPFR_RNDN);
        mpfr_mul(r42307, r42306, r42275, MPFR_RNDN);
        ;
        mpfr_add(r42309, r42307, r42308, MPFR_RNDN);
        mpfr_mul(r42310, r42309, r42275, MPFR_RNDN);
        ;
        mpfr_add(r42312, r42310, r42311, MPFR_RNDN);
        mpfr_mul(r42313, r42312, r42275, MPFR_RNDN);
        ;
        mpfr_add(r42315, r42313, r42314, MPFR_RNDN);
        mpfr_div(r42316, r42304, r42315, MPFR_RNDN);
        mpfr_mul(r42317, r42293, r42316, MPFR_RNDN);
        mpfr_add(r42318, r42285, r42317, MPFR_RNDN);
        if (mpfr_get_si(r42291, MPFR_RNDN)) { mpfr_set(r42319, r42318, MPFR_RNDN); } else { mpfr_set(r42319, r42289, MPFR_RNDN); };
        if (mpfr_get_si(r42277, MPFR_RNDN)) { mpfr_set(r42320, r42289, MPFR_RNDN); } else { mpfr_set(r42320, r42319, MPFR_RNDN); };
        return mpfr_get_d(r42320, MPFR_RNDN);
}

static mpfr_t r42321, r42322, r42323, r42324, r42325, r42326, r42327, r42328, r42329, r42330, r42331, r42332, r42333, r42334, r42335, r42336, r42337, r42338, r42339, r42340, r42341, r42342, r42343, r42344, r42345, r42346, r42347, r42348, r42349, r42350, r42351, r42352, r42353, r42354, r42355, r42356, r42357, r42358, r42359, r42360, r42361, r42362, r42363, r42364, r42365, r42366;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42321);
        mpfr_init_set_str(r42322, "-3.5705970230653727e+71", 10, MPFR_RNDN);
        mpfr_init(r42323);
        mpfr_init(r42324);
        mpfr_init(r42325);
        mpfr_init(r42326);
        mpfr_init(r42327);
        mpfr_init_set_str(r42328, "36.527041698806414", 10, MPFR_RNDN);
        mpfr_init(r42329);
        mpfr_init(r42330);
        mpfr_init(r42331);
        mpfr_init_set_str(r42332, "3.13060547623", 10, MPFR_RNDN);
        mpfr_init(r42333);
        mpfr_init(r42334);
        mpfr_init(r42335);
        mpfr_init_set_str(r42336, "1.8451957059749226e+26", 10, MPFR_RNDN);
        mpfr_init(r42337);
        mpfr_init_set_str(r42338, "1", 10, MPFR_RNDN);
        mpfr_init(r42339);
        mpfr_init(r42340);
        mpfr_init_set_str(r42341, "11.1667541262", 10, MPFR_RNDN);
        mpfr_init(r42342);
        mpfr_init(r42343);
        mpfr_init(r42344);
        mpfr_init(r42345);
        mpfr_init(r42346);
        mpfr_init(r42347);
        mpfr_init(r42348);
        mpfr_init(r42349);
        mpfr_init(r42350);
        mpfr_init_set_str(r42351, "15.234687407", 10, MPFR_RNDN);
        mpfr_init(r42352);
        mpfr_init(r42353);
        mpfr_init_set_str(r42354, "31.4690115749", 10, MPFR_RNDN);
        mpfr_init(r42355);
        mpfr_init(r42356);
        mpfr_init_set_str(r42357, "11.9400905721", 10, MPFR_RNDN);
        mpfr_init(r42358);
        mpfr_init(r42359);
        mpfr_init_set_str(r42360, "0.607771387771", 10, MPFR_RNDN);
        mpfr_init(r42361);
        mpfr_init(r42362);
        mpfr_init(r42363);
        mpfr_init(r42364);
        mpfr_init(r42365);
        mpfr_init(r42366);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r42321, z, MPFR_RNDN);
        ;
        mpfr_set_si(r42323, mpfr_cmp(r42321, r42322) <= 0, MPFR_RNDN);
        mpfr_set_d(r42324, y, MPFR_RNDN);
        mpfr_div(r42325, r42324, r42321, MPFR_RNDN);
        mpfr_set_d(r42326, t, MPFR_RNDN);
        mpfr_div(r42327, r42326, r42321, MPFR_RNDN);
        ;
        mpfr_sub(r42329, r42327, r42328, MPFR_RNDN);
        mpfr_mul(r42330, r42325, r42329, MPFR_RNDN);
        mpfr_set_d(r42331, x, MPFR_RNDN);
        ;
        mpfr_mul(r42333, r42324, r42332, MPFR_RNDN);
        mpfr_add(r42334, r42331, r42333, MPFR_RNDN);
        mpfr_add(r42335, r42330, r42334, MPFR_RNDN);
        ;
        mpfr_set_si(r42337, mpfr_cmp(r42321, r42336) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r42339, r42324, r42338, MPFR_RNDN);
        mpfr_mul(r42340, r42321, r42332, MPFR_RNDN);
        ;
        mpfr_add(r42342, r42340, r42341, MPFR_RNDN);
        mpfr_mul(r42343, r42342, r42321, MPFR_RNDN);
        mpfr_add(r42344, r42343, r42326, MPFR_RNDN);
        mpfr_mul(r42345, r42344, r42321, MPFR_RNDN);
        mpfr_set_d(r42346, a, MPFR_RNDN);
        mpfr_add(r42347, r42345, r42346, MPFR_RNDN);
        mpfr_mul(r42348, r42347, r42321, MPFR_RNDN);
        mpfr_set_d(r42349, b, MPFR_RNDN);
        mpfr_add(r42350, r42348, r42349, MPFR_RNDN);
        ;
        mpfr_add(r42352, r42321, r42351, MPFR_RNDN);
        mpfr_mul(r42353, r42352, r42321, MPFR_RNDN);
        ;
        mpfr_add(r42355, r42353, r42354, MPFR_RNDN);
        mpfr_mul(r42356, r42355, r42321, MPFR_RNDN);
        ;
        mpfr_add(r42358, r42356, r42357, MPFR_RNDN);
        mpfr_mul(r42359, r42358, r42321, MPFR_RNDN);
        ;
        mpfr_add(r42361, r42359, r42360, MPFR_RNDN);
        mpfr_div(r42362, r42350, r42361, MPFR_RNDN);
        mpfr_mul(r42363, r42339, r42362, MPFR_RNDN);
        mpfr_add(r42364, r42331, r42363, MPFR_RNDN);
        if (mpfr_get_si(r42337, MPFR_RNDN)) { mpfr_set(r42365, r42364, MPFR_RNDN); } else { mpfr_set(r42365, r42335, MPFR_RNDN); };
        if (mpfr_get_si(r42323, MPFR_RNDN)) { mpfr_set(r42366, r42335, MPFR_RNDN); } else { mpfr_set(r42366, r42365, MPFR_RNDN); };
        return mpfr_get_d(r42366, MPFR_RNDN);
}

