#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 r42418 = x;
        float r42419 = y;
        float r42420 = z;
        float r42421 = 3.13060547623;
        float r42422 = r42420 * r42421;
        float r42423 = 11.1667541262;
        float r42424 = r42422 + r42423;
        float r42425 = r42424 * r42420;
        float r42426 = t;
        float r42427 = r42425 + r42426;
        float r42428 = r42427 * r42420;
        float r42429 = a;
        float r42430 = r42428 + r42429;
        float r42431 = r42430 * r42420;
        float r42432 = b;
        float r42433 = r42431 + r42432;
        float r42434 = r42419 * r42433;
        float r42435 = 15.234687407;
        float r42436 = r42420 + r42435;
        float r42437 = r42436 * r42420;
        float r42438 = 31.4690115749;
        float r42439 = r42437 + r42438;
        float r42440 = r42439 * r42420;
        float r42441 = 11.9400905721;
        float r42442 = r42440 + r42441;
        float r42443 = r42442 * r42420;
        float r42444 = 0.607771387771;
        float r42445 = r42443 + r42444;
        float r42446 = r42434 / r42445;
        float r42447 = r42418 + r42446;
        return r42447;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r42448 = x;
        double r42449 = y;
        double r42450 = z;
        double r42451 = 3.13060547623;
        double r42452 = r42450 * r42451;
        double r42453 = 11.1667541262;
        double r42454 = r42452 + r42453;
        double r42455 = r42454 * r42450;
        double r42456 = t;
        double r42457 = r42455 + r42456;
        double r42458 = r42457 * r42450;
        double r42459 = a;
        double r42460 = r42458 + r42459;
        double r42461 = r42460 * r42450;
        double r42462 = b;
        double r42463 = r42461 + r42462;
        double r42464 = r42449 * r42463;
        double r42465 = 15.234687407;
        double r42466 = r42450 + r42465;
        double r42467 = r42466 * r42450;
        double r42468 = 31.4690115749;
        double r42469 = r42467 + r42468;
        double r42470 = r42469 * r42450;
        double r42471 = 11.9400905721;
        double r42472 = r42470 + r42471;
        double r42473 = r42472 * r42450;
        double r42474 = 0.607771387771;
        double r42475 = r42473 + r42474;
        double r42476 = r42464 / r42475;
        double r42477 = r42448 + r42476;
        return r42477;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r42478 = z;
        float r42479 = -1.6365020135425002e+69;
        bool r42480 = r42478 <= r42479;
        float r42481 = y;
        float r42482 = r42481 / r42478;
        float r42483 = t;
        float r42484 = r42483 / r42478;
        float r42485 = 36.527041698806414;
        float r42486 = r42484 - r42485;
        float r42487 = r42482 * r42486;
        float r42488 = x;
        float r42489 = 3.13060547623;
        float r42490 = r42481 * r42489;
        float r42491 = r42488 + r42490;
        float r42492 = r42487 + r42491;
        float r42493 = 1.9046950652676932e+26;
        bool r42494 = r42478 <= r42493;
        float r42495 = 1;
        float r42496 = r42481 / r42495;
        float r42497 = r42478 * r42489;
        float r42498 = 11.1667541262;
        float r42499 = r42497 + r42498;
        float r42500 = r42499 * r42478;
        float r42501 = r42500 + r42483;
        float r42502 = r42501 * r42478;
        float r42503 = a;
        float r42504 = r42502 + r42503;
        float r42505 = r42504 * r42478;
        float r42506 = b;
        float r42507 = r42505 + r42506;
        float r42508 = 15.234687407;
        float r42509 = r42478 + r42508;
        float r42510 = r42509 * r42478;
        float r42511 = 31.4690115749;
        float r42512 = r42510 + r42511;
        float r42513 = r42512 * r42478;
        float r42514 = 11.9400905721;
        float r42515 = r42513 + r42514;
        float r42516 = r42515 * r42478;
        float r42517 = 0.607771387771;
        float r42518 = r42516 + r42517;
        float r42519 = r42507 / r42518;
        float r42520 = r42496 * r42519;
        float r42521 = r42488 + r42520;
        float r42522 = r42494 ? r42521 : r42492;
        float r42523 = r42480 ? r42492 : r42522;
        return r42523;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r42524 = z;
        double r42525 = -1.6365020135425002e+69;
        bool r42526 = r42524 <= r42525;
        double r42527 = y;
        double r42528 = r42527 / r42524;
        double r42529 = t;
        double r42530 = r42529 / r42524;
        double r42531 = 36.527041698806414;
        double r42532 = r42530 - r42531;
        double r42533 = r42528 * r42532;
        double r42534 = x;
        double r42535 = 3.13060547623;
        double r42536 = r42527 * r42535;
        double r42537 = r42534 + r42536;
        double r42538 = r42533 + r42537;
        double r42539 = 1.9046950652676932e+26;
        bool r42540 = r42524 <= r42539;
        double r42541 = 1;
        double r42542 = r42527 / r42541;
        double r42543 = r42524 * r42535;
        double r42544 = 11.1667541262;
        double r42545 = r42543 + r42544;
        double r42546 = r42545 * r42524;
        double r42547 = r42546 + r42529;
        double r42548 = r42547 * r42524;
        double r42549 = a;
        double r42550 = r42548 + r42549;
        double r42551 = r42550 * r42524;
        double r42552 = b;
        double r42553 = r42551 + r42552;
        double r42554 = 15.234687407;
        double r42555 = r42524 + r42554;
        double r42556 = r42555 * r42524;
        double r42557 = 31.4690115749;
        double r42558 = r42556 + r42557;
        double r42559 = r42558 * r42524;
        double r42560 = 11.9400905721;
        double r42561 = r42559 + r42560;
        double r42562 = r42561 * r42524;
        double r42563 = 0.607771387771;
        double r42564 = r42562 + r42563;
        double r42565 = r42553 / r42564;
        double r42566 = r42542 * r42565;
        double r42567 = r42534 + r42566;
        double r42568 = r42540 ? r42567 : r42538;
        double r42569 = r42526 ? r42538 : r42568;
        return r42569;
}

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 r42570, r42571, r42572, r42573, r42574, r42575, r42576, r42577, r42578, r42579, r42580, r42581, r42582, r42583, r42584, r42585, r42586, r42587, r42588, r42589, r42590, r42591, r42592, r42593, r42594, r42595, r42596, r42597, r42598, r42599;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r42570);
        mpfr_init(r42571);
        mpfr_init(r42572);
        mpfr_init_set_str(r42573, "3.13060547623", 10, MPFR_RNDN);
        mpfr_init(r42574);
        mpfr_init_set_str(r42575, "11.1667541262", 10, MPFR_RNDN);
        mpfr_init(r42576);
        mpfr_init(r42577);
        mpfr_init(r42578);
        mpfr_init(r42579);
        mpfr_init(r42580);
        mpfr_init(r42581);
        mpfr_init(r42582);
        mpfr_init(r42583);
        mpfr_init(r42584);
        mpfr_init(r42585);
        mpfr_init(r42586);
        mpfr_init_set_str(r42587, "15.234687407", 10, MPFR_RNDN);
        mpfr_init(r42588);
        mpfr_init(r42589);
        mpfr_init_set_str(r42590, "31.4690115749", 10, MPFR_RNDN);
        mpfr_init(r42591);
        mpfr_init(r42592);
        mpfr_init_set_str(r42593, "11.9400905721", 10, MPFR_RNDN);
        mpfr_init(r42594);
        mpfr_init(r42595);
        mpfr_init_set_str(r42596, "0.607771387771", 10, MPFR_RNDN);
        mpfr_init(r42597);
        mpfr_init(r42598);
        mpfr_init(r42599);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r42570, x, MPFR_RNDN);
        mpfr_set_d(r42571, y, MPFR_RNDN);
        mpfr_set_d(r42572, z, MPFR_RNDN);
        ;
        mpfr_mul(r42574, r42572, r42573, MPFR_RNDN);
        ;
        mpfr_add(r42576, r42574, r42575, MPFR_RNDN);
        mpfr_mul(r42577, r42576, r42572, MPFR_RNDN);
        mpfr_set_d(r42578, t, MPFR_RNDN);
        mpfr_add(r42579, r42577, r42578, MPFR_RNDN);
        mpfr_mul(r42580, r42579, r42572, MPFR_RNDN);
        mpfr_set_d(r42581, a, MPFR_RNDN);
        mpfr_add(r42582, r42580, r42581, MPFR_RNDN);
        mpfr_mul(r42583, r42582, r42572, MPFR_RNDN);
        mpfr_set_d(r42584, b, MPFR_RNDN);
        mpfr_add(r42585, r42583, r42584, MPFR_RNDN);
        mpfr_mul(r42586, r42571, r42585, MPFR_RNDN);
        ;
        mpfr_add(r42588, r42572, r42587, MPFR_RNDN);
        mpfr_mul(r42589, r42588, r42572, MPFR_RNDN);
        ;
        mpfr_add(r42591, r42589, r42590, MPFR_RNDN);
        mpfr_mul(r42592, r42591, r42572, MPFR_RNDN);
        ;
        mpfr_add(r42594, r42592, r42593, MPFR_RNDN);
        mpfr_mul(r42595, r42594, r42572, MPFR_RNDN);
        ;
        mpfr_add(r42597, r42595, r42596, MPFR_RNDN);
        mpfr_div(r42598, r42586, r42597, MPFR_RNDN);
        mpfr_add(r42599, r42570, r42598, MPFR_RNDN);
        return mpfr_get_d(r42599, MPFR_RNDN);
}

static mpfr_t r42600, r42601, r42602, r42603, r42604, r42605, r42606, r42607, r42608, r42609, r42610, r42611, r42612, r42613, r42614, r42615, r42616, r42617, r42618, r42619, r42620, r42621, r42622, r42623, r42624, r42625, r42626, r42627, r42628, r42629, r42630, r42631, r42632, r42633, r42634, r42635, r42636, r42637, r42638, r42639, r42640, r42641, r42642, r42643, r42644, r42645;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42600);
        mpfr_init_set_str(r42601, "-1.6365020135425002e+69", 10, MPFR_RNDN);
        mpfr_init(r42602);
        mpfr_init(r42603);
        mpfr_init(r42604);
        mpfr_init(r42605);
        mpfr_init(r42606);
        mpfr_init_set_str(r42607, "36.527041698806414", 10, MPFR_RNDN);
        mpfr_init(r42608);
        mpfr_init(r42609);
        mpfr_init(r42610);
        mpfr_init_set_str(r42611, "3.13060547623", 10, MPFR_RNDN);
        mpfr_init(r42612);
        mpfr_init(r42613);
        mpfr_init(r42614);
        mpfr_init_set_str(r42615, "1.9046950652676932e+26", 10, MPFR_RNDN);
        mpfr_init(r42616);
        mpfr_init_set_str(r42617, "1", 10, MPFR_RNDN);
        mpfr_init(r42618);
        mpfr_init(r42619);
        mpfr_init_set_str(r42620, "11.1667541262", 10, MPFR_RNDN);
        mpfr_init(r42621);
        mpfr_init(r42622);
        mpfr_init(r42623);
        mpfr_init(r42624);
        mpfr_init(r42625);
        mpfr_init(r42626);
        mpfr_init(r42627);
        mpfr_init(r42628);
        mpfr_init(r42629);
        mpfr_init_set_str(r42630, "15.234687407", 10, MPFR_RNDN);
        mpfr_init(r42631);
        mpfr_init(r42632);
        mpfr_init_set_str(r42633, "31.4690115749", 10, MPFR_RNDN);
        mpfr_init(r42634);
        mpfr_init(r42635);
        mpfr_init_set_str(r42636, "11.9400905721", 10, MPFR_RNDN);
        mpfr_init(r42637);
        mpfr_init(r42638);
        mpfr_init_set_str(r42639, "0.607771387771", 10, MPFR_RNDN);
        mpfr_init(r42640);
        mpfr_init(r42641);
        mpfr_init(r42642);
        mpfr_init(r42643);
        mpfr_init(r42644);
        mpfr_init(r42645);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r42600, z, MPFR_RNDN);
        ;
        mpfr_set_si(r42602, mpfr_cmp(r42600, r42601) <= 0, MPFR_RNDN);
        mpfr_set_d(r42603, y, MPFR_RNDN);
        mpfr_div(r42604, r42603, r42600, MPFR_RNDN);
        mpfr_set_d(r42605, t, MPFR_RNDN);
        mpfr_div(r42606, r42605, r42600, MPFR_RNDN);
        ;
        mpfr_sub(r42608, r42606, r42607, MPFR_RNDN);
        mpfr_mul(r42609, r42604, r42608, MPFR_RNDN);
        mpfr_set_d(r42610, x, MPFR_RNDN);
        ;
        mpfr_mul(r42612, r42603, r42611, MPFR_RNDN);
        mpfr_add(r42613, r42610, r42612, MPFR_RNDN);
        mpfr_add(r42614, r42609, r42613, MPFR_RNDN);
        ;
        mpfr_set_si(r42616, mpfr_cmp(r42600, r42615) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r42618, r42603, r42617, MPFR_RNDN);
        mpfr_mul(r42619, r42600, r42611, MPFR_RNDN);
        ;
        mpfr_add(r42621, r42619, r42620, MPFR_RNDN);
        mpfr_mul(r42622, r42621, r42600, MPFR_RNDN);
        mpfr_add(r42623, r42622, r42605, MPFR_RNDN);
        mpfr_mul(r42624, r42623, r42600, MPFR_RNDN);
        mpfr_set_d(r42625, a, MPFR_RNDN);
        mpfr_add(r42626, r42624, r42625, MPFR_RNDN);
        mpfr_mul(r42627, r42626, r42600, MPFR_RNDN);
        mpfr_set_d(r42628, b, MPFR_RNDN);
        mpfr_add(r42629, r42627, r42628, MPFR_RNDN);
        ;
        mpfr_add(r42631, r42600, r42630, MPFR_RNDN);
        mpfr_mul(r42632, r42631, r42600, MPFR_RNDN);
        ;
        mpfr_add(r42634, r42632, r42633, MPFR_RNDN);
        mpfr_mul(r42635, r42634, r42600, MPFR_RNDN);
        ;
        mpfr_add(r42637, r42635, r42636, MPFR_RNDN);
        mpfr_mul(r42638, r42637, r42600, MPFR_RNDN);
        ;
        mpfr_add(r42640, r42638, r42639, MPFR_RNDN);
        mpfr_div(r42641, r42629, r42640, MPFR_RNDN);
        mpfr_mul(r42642, r42618, r42641, MPFR_RNDN);
        mpfr_add(r42643, r42610, r42642, MPFR_RNDN);
        if (mpfr_get_si(r42616, MPFR_RNDN)) { mpfr_set(r42644, r42643, MPFR_RNDN); } else { mpfr_set(r42644, r42614, MPFR_RNDN); };
        if (mpfr_get_si(r42602, MPFR_RNDN)) { mpfr_set(r42645, r42614, MPFR_RNDN); } else { mpfr_set(r42645, r42644, MPFR_RNDN); };
        return mpfr_get_d(r42645, MPFR_RNDN);
}

static mpfr_t r42646, r42647, r42648, r42649, r42650, r42651, r42652, r42653, r42654, r42655, r42656, r42657, r42658, r42659, r42660, r42661, r42662, r42663, r42664, r42665, r42666, r42667, r42668, r42669, r42670, r42671, r42672, r42673, r42674, r42675, r42676, r42677, r42678, r42679, r42680, r42681, r42682, r42683, r42684, r42685, r42686, r42687, r42688, r42689, r42690, r42691;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r42646);
        mpfr_init_set_str(r42647, "-1.6365020135425002e+69", 10, MPFR_RNDN);
        mpfr_init(r42648);
        mpfr_init(r42649);
        mpfr_init(r42650);
        mpfr_init(r42651);
        mpfr_init(r42652);
        mpfr_init_set_str(r42653, "36.527041698806414", 10, MPFR_RNDN);
        mpfr_init(r42654);
        mpfr_init(r42655);
        mpfr_init(r42656);
        mpfr_init_set_str(r42657, "3.13060547623", 10, MPFR_RNDN);
        mpfr_init(r42658);
        mpfr_init(r42659);
        mpfr_init(r42660);
        mpfr_init_set_str(r42661, "1.9046950652676932e+26", 10, MPFR_RNDN);
        mpfr_init(r42662);
        mpfr_init_set_str(r42663, "1", 10, MPFR_RNDN);
        mpfr_init(r42664);
        mpfr_init(r42665);
        mpfr_init_set_str(r42666, "11.1667541262", 10, MPFR_RNDN);
        mpfr_init(r42667);
        mpfr_init(r42668);
        mpfr_init(r42669);
        mpfr_init(r42670);
        mpfr_init(r42671);
        mpfr_init(r42672);
        mpfr_init(r42673);
        mpfr_init(r42674);
        mpfr_init(r42675);
        mpfr_init_set_str(r42676, "15.234687407", 10, MPFR_RNDN);
        mpfr_init(r42677);
        mpfr_init(r42678);
        mpfr_init_set_str(r42679, "31.4690115749", 10, MPFR_RNDN);
        mpfr_init(r42680);
        mpfr_init(r42681);
        mpfr_init_set_str(r42682, "11.9400905721", 10, MPFR_RNDN);
        mpfr_init(r42683);
        mpfr_init(r42684);
        mpfr_init_set_str(r42685, "0.607771387771", 10, MPFR_RNDN);
        mpfr_init(r42686);
        mpfr_init(r42687);
        mpfr_init(r42688);
        mpfr_init(r42689);
        mpfr_init(r42690);
        mpfr_init(r42691);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r42646, z, MPFR_RNDN);
        ;
        mpfr_set_si(r42648, mpfr_cmp(r42646, r42647) <= 0, MPFR_RNDN);
        mpfr_set_d(r42649, y, MPFR_RNDN);
        mpfr_div(r42650, r42649, r42646, MPFR_RNDN);
        mpfr_set_d(r42651, t, MPFR_RNDN);
        mpfr_div(r42652, r42651, r42646, MPFR_RNDN);
        ;
        mpfr_sub(r42654, r42652, r42653, MPFR_RNDN);
        mpfr_mul(r42655, r42650, r42654, MPFR_RNDN);
        mpfr_set_d(r42656, x, MPFR_RNDN);
        ;
        mpfr_mul(r42658, r42649, r42657, MPFR_RNDN);
        mpfr_add(r42659, r42656, r42658, MPFR_RNDN);
        mpfr_add(r42660, r42655, r42659, MPFR_RNDN);
        ;
        mpfr_set_si(r42662, mpfr_cmp(r42646, r42661) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r42664, r42649, r42663, MPFR_RNDN);
        mpfr_mul(r42665, r42646, r42657, MPFR_RNDN);
        ;
        mpfr_add(r42667, r42665, r42666, MPFR_RNDN);
        mpfr_mul(r42668, r42667, r42646, MPFR_RNDN);
        mpfr_add(r42669, r42668, r42651, MPFR_RNDN);
        mpfr_mul(r42670, r42669, r42646, MPFR_RNDN);
        mpfr_set_d(r42671, a, MPFR_RNDN);
        mpfr_add(r42672, r42670, r42671, MPFR_RNDN);
        mpfr_mul(r42673, r42672, r42646, MPFR_RNDN);
        mpfr_set_d(r42674, b, MPFR_RNDN);
        mpfr_add(r42675, r42673, r42674, MPFR_RNDN);
        ;
        mpfr_add(r42677, r42646, r42676, MPFR_RNDN);
        mpfr_mul(r42678, r42677, r42646, MPFR_RNDN);
        ;
        mpfr_add(r42680, r42678, r42679, MPFR_RNDN);
        mpfr_mul(r42681, r42680, r42646, MPFR_RNDN);
        ;
        mpfr_add(r42683, r42681, r42682, MPFR_RNDN);
        mpfr_mul(r42684, r42683, r42646, MPFR_RNDN);
        ;
        mpfr_add(r42686, r42684, r42685, MPFR_RNDN);
        mpfr_div(r42687, r42675, r42686, MPFR_RNDN);
        mpfr_mul(r42688, r42664, r42687, MPFR_RNDN);
        mpfr_add(r42689, r42656, r42688, MPFR_RNDN);
        if (mpfr_get_si(r42662, MPFR_RNDN)) { mpfr_set(r42690, r42689, MPFR_RNDN); } else { mpfr_set(r42690, r42660, MPFR_RNDN); };
        if (mpfr_get_si(r42648, MPFR_RNDN)) { mpfr_set(r42691, r42660, MPFR_RNDN); } else { mpfr_set(r42691, r42690, MPFR_RNDN); };
        return mpfr_get_d(r42691, MPFR_RNDN);
}

