#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 r42206 = x;
        float r42207 = y;
        float r42208 = z;
        float r42209 = 3.13060547623;
        float r42210 = r42208 * r42209;
        float r42211 = 11.1667541262;
        float r42212 = r42210 + r42211;
        float r42213 = r42212 * r42208;
        float r42214 = t;
        float r42215 = r42213 + r42214;
        float r42216 = r42215 * r42208;
        float r42217 = a;
        float r42218 = r42216 + r42217;
        float r42219 = r42218 * r42208;
        float r42220 = b;
        float r42221 = r42219 + r42220;
        float r42222 = r42207 * r42221;
        float r42223 = 15.234687407;
        float r42224 = r42208 + r42223;
        float r42225 = r42224 * r42208;
        float r42226 = 31.4690115749;
        float r42227 = r42225 + r42226;
        float r42228 = r42227 * r42208;
        float r42229 = 11.9400905721;
        float r42230 = r42228 + r42229;
        float r42231 = r42230 * r42208;
        float r42232 = 0.607771387771;
        float r42233 = r42231 + r42232;
        float r42234 = r42222 / r42233;
        float r42235 = r42206 + r42234;
        return r42235;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r42236 = x;
        double r42237 = y;
        double r42238 = z;
        double r42239 = 3.13060547623;
        double r42240 = r42238 * r42239;
        double r42241 = 11.1667541262;
        double r42242 = r42240 + r42241;
        double r42243 = r42242 * r42238;
        double r42244 = t;
        double r42245 = r42243 + r42244;
        double r42246 = r42245 * r42238;
        double r42247 = a;
        double r42248 = r42246 + r42247;
        double r42249 = r42248 * r42238;
        double r42250 = b;
        double r42251 = r42249 + r42250;
        double r42252 = r42237 * r42251;
        double r42253 = 15.234687407;
        double r42254 = r42238 + r42253;
        double r42255 = r42254 * r42238;
        double r42256 = 31.4690115749;
        double r42257 = r42255 + r42256;
        double r42258 = r42257 * r42238;
        double r42259 = 11.9400905721;
        double r42260 = r42258 + r42259;
        double r42261 = r42260 * r42238;
        double r42262 = 0.607771387771;
        double r42263 = r42261 + r42262;
        double r42264 = r42252 / r42263;
        double r42265 = r42236 + r42264;
        return r42265;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r42266 = z;
        float r42267 = -1.718170947433354e+69;
        bool r42268 = r42266 <= r42267;
        float r42269 = y;
        float r42270 = r42269 / r42266;
        float r42271 = t;
        float r42272 = r42271 / r42266;
        float r42273 = 36.527041698806414;
        float r42274 = r42272 - r42273;
        float r42275 = r42270 * r42274;
        float r42276 = x;
        float r42277 = 3.13060547623;
        float r42278 = r42269 * r42277;
        float r42279 = r42276 + r42278;
        float r42280 = r42275 + r42279;
        float r42281 = 1.8451957059749226e+26;
        bool r42282 = r42266 <= r42281;
        float r42283 = 1;
        float r42284 = r42269 / r42283;
        float r42285 = r42266 * r42277;
        float r42286 = 11.1667541262;
        float r42287 = r42285 + r42286;
        float r42288 = r42287 * r42266;
        float r42289 = r42288 + r42271;
        float r42290 = r42289 * r42266;
        float r42291 = a;
        float r42292 = r42290 + r42291;
        float r42293 = r42292 * r42266;
        float r42294 = b;
        float r42295 = r42293 + r42294;
        float r42296 = 15.234687407;
        float r42297 = r42266 + r42296;
        float r42298 = r42297 * r42266;
        float r42299 = 31.4690115749;
        float r42300 = r42298 + r42299;
        float r42301 = r42300 * r42266;
        float r42302 = 11.9400905721;
        float r42303 = r42301 + r42302;
        float r42304 = r42303 * r42266;
        float r42305 = 0.607771387771;
        float r42306 = r42304 + r42305;
        float r42307 = r42295 / r42306;
        float r42308 = r42284 * r42307;
        float r42309 = r42276 + r42308;
        float r42310 = r42282 ? r42309 : r42280;
        float r42311 = r42268 ? r42280 : r42310;
        return r42311;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r42312 = z;
        double r42313 = -1.718170947433354e+69;
        bool r42314 = r42312 <= r42313;
        double r42315 = y;
        double r42316 = r42315 / r42312;
        double r42317 = t;
        double r42318 = r42317 / r42312;
        double r42319 = 36.527041698806414;
        double r42320 = r42318 - r42319;
        double r42321 = r42316 * r42320;
        double r42322 = x;
        double r42323 = 3.13060547623;
        double r42324 = r42315 * r42323;
        double r42325 = r42322 + r42324;
        double r42326 = r42321 + r42325;
        double r42327 = 1.8451957059749226e+26;
        bool r42328 = r42312 <= r42327;
        double r42329 = 1;
        double r42330 = r42315 / r42329;
        double r42331 = r42312 * r42323;
        double r42332 = 11.1667541262;
        double r42333 = r42331 + r42332;
        double r42334 = r42333 * r42312;
        double r42335 = r42334 + r42317;
        double r42336 = r42335 * r42312;
        double r42337 = a;
        double r42338 = r42336 + r42337;
        double r42339 = r42338 * r42312;
        double r42340 = b;
        double r42341 = r42339 + r42340;
        double r42342 = 15.234687407;
        double r42343 = r42312 + r42342;
        double r42344 = r42343 * r42312;
        double r42345 = 31.4690115749;
        double r42346 = r42344 + r42345;
        double r42347 = r42346 * r42312;
        double r42348 = 11.9400905721;
        double r42349 = r42347 + r42348;
        double r42350 = r42349 * r42312;
        double r42351 = 0.607771387771;
        double r42352 = r42350 + r42351;
        double r42353 = r42341 / r42352;
        double r42354 = r42330 * r42353;
        double r42355 = r42322 + r42354;
        double r42356 = r42328 ? r42355 : r42326;
        double r42357 = r42314 ? r42326 : r42356;
        return r42357;
}

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 r42358, r42359, r42360, r42361, r42362, r42363, r42364, r42365, r42366, r42367, r42368, r42369, r42370, r42371, r42372, r42373, r42374, r42375, r42376, r42377, r42378, r42379, r42380, r42381, r42382, r42383, r42384, r42385, r42386, r42387;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r42358);
        mpfr_init(r42359);
        mpfr_init(r42360);
        mpfr_init_set_str(r42361, "3.13060547623", 10, MPFR_RNDN);
        mpfr_init(r42362);
        mpfr_init_set_str(r42363, "11.1667541262", 10, MPFR_RNDN);
        mpfr_init(r42364);
        mpfr_init(r42365);
        mpfr_init(r42366);
        mpfr_init(r42367);
        mpfr_init(r42368);
        mpfr_init(r42369);
        mpfr_init(r42370);
        mpfr_init(r42371);
        mpfr_init(r42372);
        mpfr_init(r42373);
        mpfr_init(r42374);
        mpfr_init_set_str(r42375, "15.234687407", 10, MPFR_RNDN);
        mpfr_init(r42376);
        mpfr_init(r42377);
        mpfr_init_set_str(r42378, "31.4690115749", 10, MPFR_RNDN);
        mpfr_init(r42379);
        mpfr_init(r42380);
        mpfr_init_set_str(r42381, "11.9400905721", 10, MPFR_RNDN);
        mpfr_init(r42382);
        mpfr_init(r42383);
        mpfr_init_set_str(r42384, "0.607771387771", 10, MPFR_RNDN);
        mpfr_init(r42385);
        mpfr_init(r42386);
        mpfr_init(r42387);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r42358, x, MPFR_RNDN);
        mpfr_set_d(r42359, y, MPFR_RNDN);
        mpfr_set_d(r42360, z, MPFR_RNDN);
        ;
        mpfr_mul(r42362, r42360, r42361, MPFR_RNDN);
        ;
        mpfr_add(r42364, r42362, r42363, MPFR_RNDN);
        mpfr_mul(r42365, r42364, r42360, MPFR_RNDN);
        mpfr_set_d(r42366, t, MPFR_RNDN);
        mpfr_add(r42367, r42365, r42366, MPFR_RNDN);
        mpfr_mul(r42368, r42367, r42360, MPFR_RNDN);
        mpfr_set_d(r42369, a, MPFR_RNDN);
        mpfr_add(r42370, r42368, r42369, MPFR_RNDN);
        mpfr_mul(r42371, r42370, r42360, MPFR_RNDN);
        mpfr_set_d(r42372, b, MPFR_RNDN);
        mpfr_add(r42373, r42371, r42372, MPFR_RNDN);
        mpfr_mul(r42374, r42359, r42373, MPFR_RNDN);
        ;
        mpfr_add(r42376, r42360, r42375, MPFR_RNDN);
        mpfr_mul(r42377, r42376, r42360, MPFR_RNDN);
        ;
        mpfr_add(r42379, r42377, r42378, MPFR_RNDN);
        mpfr_mul(r42380, r42379, r42360, MPFR_RNDN);
        ;
        mpfr_add(r42382, r42380, r42381, MPFR_RNDN);
        mpfr_mul(r42383, r42382, r42360, MPFR_RNDN);
        ;
        mpfr_add(r42385, r42383, r42384, MPFR_RNDN);
        mpfr_div(r42386, r42374, r42385, MPFR_RNDN);
        mpfr_add(r42387, r42358, r42386, MPFR_RNDN);
        return mpfr_get_d(r42387, MPFR_RNDN);
}

static mpfr_t r42388, r42389, r42390, r42391, r42392, r42393, r42394, r42395, r42396, r42397, r42398, r42399, r42400, r42401, r42402, r42403, r42404, r42405, r42406, r42407, r42408, r42409, r42410, r42411, r42412, r42413, r42414, r42415, r42416, r42417, r42418, r42419, r42420, r42421, r42422, r42423, r42424, r42425, r42426, r42427, r42428, r42429, r42430, r42431, r42432, r42433;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42388);
        mpfr_init_set_str(r42389, "-1.718170947433354e+69", 10, MPFR_RNDN);
        mpfr_init(r42390);
        mpfr_init(r42391);
        mpfr_init(r42392);
        mpfr_init(r42393);
        mpfr_init(r42394);
        mpfr_init_set_str(r42395, "36.527041698806414", 10, MPFR_RNDN);
        mpfr_init(r42396);
        mpfr_init(r42397);
        mpfr_init(r42398);
        mpfr_init_set_str(r42399, "3.13060547623", 10, MPFR_RNDN);
        mpfr_init(r42400);
        mpfr_init(r42401);
        mpfr_init(r42402);
        mpfr_init_set_str(r42403, "1.8451957059749226e+26", 10, MPFR_RNDN);
        mpfr_init(r42404);
        mpfr_init_set_str(r42405, "1", 10, MPFR_RNDN);
        mpfr_init(r42406);
        mpfr_init(r42407);
        mpfr_init_set_str(r42408, "11.1667541262", 10, MPFR_RNDN);
        mpfr_init(r42409);
        mpfr_init(r42410);
        mpfr_init(r42411);
        mpfr_init(r42412);
        mpfr_init(r42413);
        mpfr_init(r42414);
        mpfr_init(r42415);
        mpfr_init(r42416);
        mpfr_init(r42417);
        mpfr_init_set_str(r42418, "15.234687407", 10, MPFR_RNDN);
        mpfr_init(r42419);
        mpfr_init(r42420);
        mpfr_init_set_str(r42421, "31.4690115749", 10, MPFR_RNDN);
        mpfr_init(r42422);
        mpfr_init(r42423);
        mpfr_init_set_str(r42424, "11.9400905721", 10, MPFR_RNDN);
        mpfr_init(r42425);
        mpfr_init(r42426);
        mpfr_init_set_str(r42427, "0.607771387771", 10, MPFR_RNDN);
        mpfr_init(r42428);
        mpfr_init(r42429);
        mpfr_init(r42430);
        mpfr_init(r42431);
        mpfr_init(r42432);
        mpfr_init(r42433);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r42388, z, MPFR_RNDN);
        ;
        mpfr_set_si(r42390, mpfr_cmp(r42388, r42389) <= 0, MPFR_RNDN);
        mpfr_set_d(r42391, y, MPFR_RNDN);
        mpfr_div(r42392, r42391, r42388, MPFR_RNDN);
        mpfr_set_d(r42393, t, MPFR_RNDN);
        mpfr_div(r42394, r42393, r42388, MPFR_RNDN);
        ;
        mpfr_sub(r42396, r42394, r42395, MPFR_RNDN);
        mpfr_mul(r42397, r42392, r42396, MPFR_RNDN);
        mpfr_set_d(r42398, x, MPFR_RNDN);
        ;
        mpfr_mul(r42400, r42391, r42399, MPFR_RNDN);
        mpfr_add(r42401, r42398, r42400, MPFR_RNDN);
        mpfr_add(r42402, r42397, r42401, MPFR_RNDN);
        ;
        mpfr_set_si(r42404, mpfr_cmp(r42388, r42403) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r42406, r42391, r42405, MPFR_RNDN);
        mpfr_mul(r42407, r42388, r42399, MPFR_RNDN);
        ;
        mpfr_add(r42409, r42407, r42408, MPFR_RNDN);
        mpfr_mul(r42410, r42409, r42388, MPFR_RNDN);
        mpfr_add(r42411, r42410, r42393, MPFR_RNDN);
        mpfr_mul(r42412, r42411, r42388, MPFR_RNDN);
        mpfr_set_d(r42413, a, MPFR_RNDN);
        mpfr_add(r42414, r42412, r42413, MPFR_RNDN);
        mpfr_mul(r42415, r42414, r42388, MPFR_RNDN);
        mpfr_set_d(r42416, b, MPFR_RNDN);
        mpfr_add(r42417, r42415, r42416, MPFR_RNDN);
        ;
        mpfr_add(r42419, r42388, r42418, MPFR_RNDN);
        mpfr_mul(r42420, r42419, r42388, MPFR_RNDN);
        ;
        mpfr_add(r42422, r42420, r42421, MPFR_RNDN);
        mpfr_mul(r42423, r42422, r42388, MPFR_RNDN);
        ;
        mpfr_add(r42425, r42423, r42424, MPFR_RNDN);
        mpfr_mul(r42426, r42425, r42388, MPFR_RNDN);
        ;
        mpfr_add(r42428, r42426, r42427, MPFR_RNDN);
        mpfr_div(r42429, r42417, r42428, MPFR_RNDN);
        mpfr_mul(r42430, r42406, r42429, MPFR_RNDN);
        mpfr_add(r42431, r42398, r42430, MPFR_RNDN);
        if (mpfr_get_si(r42404, MPFR_RNDN)) { mpfr_set(r42432, r42431, MPFR_RNDN); } else { mpfr_set(r42432, r42402, MPFR_RNDN); };
        if (mpfr_get_si(r42390, MPFR_RNDN)) { mpfr_set(r42433, r42402, MPFR_RNDN); } else { mpfr_set(r42433, r42432, MPFR_RNDN); };
        return mpfr_get_d(r42433, MPFR_RNDN);
}

static mpfr_t r42434, r42435, r42436, r42437, r42438, r42439, r42440, r42441, r42442, r42443, r42444, r42445, r42446, r42447, r42448, r42449, r42450, r42451, r42452, r42453, r42454, r42455, r42456, r42457, r42458, r42459, r42460, r42461, r42462, r42463, r42464, r42465, r42466, r42467, r42468, r42469, r42470, r42471, r42472, r42473, r42474, r42475, r42476, r42477, r42478, r42479;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42434);
        mpfr_init_set_str(r42435, "-1.718170947433354e+69", 10, MPFR_RNDN);
        mpfr_init(r42436);
        mpfr_init(r42437);
        mpfr_init(r42438);
        mpfr_init(r42439);
        mpfr_init(r42440);
        mpfr_init_set_str(r42441, "36.527041698806414", 10, MPFR_RNDN);
        mpfr_init(r42442);
        mpfr_init(r42443);
        mpfr_init(r42444);
        mpfr_init_set_str(r42445, "3.13060547623", 10, MPFR_RNDN);
        mpfr_init(r42446);
        mpfr_init(r42447);
        mpfr_init(r42448);
        mpfr_init_set_str(r42449, "1.8451957059749226e+26", 10, MPFR_RNDN);
        mpfr_init(r42450);
        mpfr_init_set_str(r42451, "1", 10, MPFR_RNDN);
        mpfr_init(r42452);
        mpfr_init(r42453);
        mpfr_init_set_str(r42454, "11.1667541262", 10, MPFR_RNDN);
        mpfr_init(r42455);
        mpfr_init(r42456);
        mpfr_init(r42457);
        mpfr_init(r42458);
        mpfr_init(r42459);
        mpfr_init(r42460);
        mpfr_init(r42461);
        mpfr_init(r42462);
        mpfr_init(r42463);
        mpfr_init_set_str(r42464, "15.234687407", 10, MPFR_RNDN);
        mpfr_init(r42465);
        mpfr_init(r42466);
        mpfr_init_set_str(r42467, "31.4690115749", 10, MPFR_RNDN);
        mpfr_init(r42468);
        mpfr_init(r42469);
        mpfr_init_set_str(r42470, "11.9400905721", 10, MPFR_RNDN);
        mpfr_init(r42471);
        mpfr_init(r42472);
        mpfr_init_set_str(r42473, "0.607771387771", 10, MPFR_RNDN);
        mpfr_init(r42474);
        mpfr_init(r42475);
        mpfr_init(r42476);
        mpfr_init(r42477);
        mpfr_init(r42478);
        mpfr_init(r42479);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r42434, z, MPFR_RNDN);
        ;
        mpfr_set_si(r42436, mpfr_cmp(r42434, r42435) <= 0, MPFR_RNDN);
        mpfr_set_d(r42437, y, MPFR_RNDN);
        mpfr_div(r42438, r42437, r42434, MPFR_RNDN);
        mpfr_set_d(r42439, t, MPFR_RNDN);
        mpfr_div(r42440, r42439, r42434, MPFR_RNDN);
        ;
        mpfr_sub(r42442, r42440, r42441, MPFR_RNDN);
        mpfr_mul(r42443, r42438, r42442, MPFR_RNDN);
        mpfr_set_d(r42444, x, MPFR_RNDN);
        ;
        mpfr_mul(r42446, r42437, r42445, MPFR_RNDN);
        mpfr_add(r42447, r42444, r42446, MPFR_RNDN);
        mpfr_add(r42448, r42443, r42447, MPFR_RNDN);
        ;
        mpfr_set_si(r42450, mpfr_cmp(r42434, r42449) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r42452, r42437, r42451, MPFR_RNDN);
        mpfr_mul(r42453, r42434, r42445, MPFR_RNDN);
        ;
        mpfr_add(r42455, r42453, r42454, MPFR_RNDN);
        mpfr_mul(r42456, r42455, r42434, MPFR_RNDN);
        mpfr_add(r42457, r42456, r42439, MPFR_RNDN);
        mpfr_mul(r42458, r42457, r42434, MPFR_RNDN);
        mpfr_set_d(r42459, a, MPFR_RNDN);
        mpfr_add(r42460, r42458, r42459, MPFR_RNDN);
        mpfr_mul(r42461, r42460, r42434, MPFR_RNDN);
        mpfr_set_d(r42462, b, MPFR_RNDN);
        mpfr_add(r42463, r42461, r42462, MPFR_RNDN);
        ;
        mpfr_add(r42465, r42434, r42464, MPFR_RNDN);
        mpfr_mul(r42466, r42465, r42434, MPFR_RNDN);
        ;
        mpfr_add(r42468, r42466, r42467, MPFR_RNDN);
        mpfr_mul(r42469, r42468, r42434, MPFR_RNDN);
        ;
        mpfr_add(r42471, r42469, r42470, MPFR_RNDN);
        mpfr_mul(r42472, r42471, r42434, MPFR_RNDN);
        ;
        mpfr_add(r42474, r42472, r42473, MPFR_RNDN);
        mpfr_div(r42475, r42463, r42474, MPFR_RNDN);
        mpfr_mul(r42476, r42452, r42475, MPFR_RNDN);
        mpfr_add(r42477, r42444, r42476, MPFR_RNDN);
        if (mpfr_get_si(r42450, MPFR_RNDN)) { mpfr_set(r42478, r42477, MPFR_RNDN); } else { mpfr_set(r42478, r42448, MPFR_RNDN); };
        if (mpfr_get_si(r42436, MPFR_RNDN)) { mpfr_set(r42479, r42448, MPFR_RNDN); } else { mpfr_set(r42479, r42478, MPFR_RNDN); };
        return mpfr_get_d(r42479, MPFR_RNDN);
}

