#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 r38551 = x;
        float r38552 = y;
        float r38553 = z;
        float r38554 = 3.13060547623f;
        float r38555 = r38553 * r38554;
        float r38556 = 11.1667541262f;
        float r38557 = r38555 + r38556;
        float r38558 = r38557 * r38553;
        float r38559 = t;
        float r38560 = r38558 + r38559;
        float r38561 = r38560 * r38553;
        float r38562 = a;
        float r38563 = r38561 + r38562;
        float r38564 = r38563 * r38553;
        float r38565 = b;
        float r38566 = r38564 + r38565;
        float r38567 = r38552 * r38566;
        float r38568 = 15.234687407f;
        float r38569 = r38553 + r38568;
        float r38570 = r38569 * r38553;
        float r38571 = 31.4690115749f;
        float r38572 = r38570 + r38571;
        float r38573 = r38572 * r38553;
        float r38574 = 11.9400905721f;
        float r38575 = r38573 + r38574;
        float r38576 = r38575 * r38553;
        float r38577 = 0.607771387771f;
        float r38578 = r38576 + r38577;
        float r38579 = r38567 / r38578;
        float r38580 = r38551 + r38579;
        return r38580;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r38581 = x;
        double r38582 = y;
        double r38583 = z;
        double r38584 = 3.13060547623;
        double r38585 = r38583 * r38584;
        double r38586 = 11.1667541262;
        double r38587 = r38585 + r38586;
        double r38588 = r38587 * r38583;
        double r38589 = t;
        double r38590 = r38588 + r38589;
        double r38591 = r38590 * r38583;
        double r38592 = a;
        double r38593 = r38591 + r38592;
        double r38594 = r38593 * r38583;
        double r38595 = b;
        double r38596 = r38594 + r38595;
        double r38597 = r38582 * r38596;
        double r38598 = 15.234687407;
        double r38599 = r38583 + r38598;
        double r38600 = r38599 * r38583;
        double r38601 = 31.4690115749;
        double r38602 = r38600 + r38601;
        double r38603 = r38602 * r38583;
        double r38604 = 11.9400905721;
        double r38605 = r38603 + r38604;
        double r38606 = r38605 * r38583;
        double r38607 = 0.607771387771;
        double r38608 = r38606 + r38607;
        double r38609 = r38597 / r38608;
        double r38610 = r38581 + r38609;
        return r38610;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r38611 = z;
        float r38612 = -741687408416398.6f;
        bool r38613 = r38611 <= r38612;
        float r38614 = t;
        float r38615 = r38614 / r38611;
        float r38616 = 36.527041698806414f;
        float r38617 = r38615 - r38616;
        float r38618 = y;
        float r38619 = r38618 / r38611;
        float r38620 = r38617 * r38619;
        float r38621 = 3.13060547623f;
        float r38622 = r38618 * r38621;
        float r38623 = x;
        float r38624 = r38622 + r38623;
        float r38625 = r38620 + r38624;
        float r38626 = 7.708214234365678e+48f;
        bool r38627 = r38611 <= r38626;
        float r38628 = 1.0f;
        float r38629 = r38618 / r38628;
        float r38630 = r38611 * r38621;
        float r38631 = 11.1667541262f;
        float r38632 = r38630 + r38631;
        float r38633 = r38632 * r38611;
        float r38634 = r38633 + r38614;
        float r38635 = r38634 * r38611;
        float r38636 = a;
        float r38637 = r38635 + r38636;
        float r38638 = r38637 * r38611;
        float r38639 = b;
        float r38640 = r38638 + r38639;
        float r38641 = 15.234687407f;
        float r38642 = r38611 + r38641;
        float r38643 = r38642 * r38611;
        float r38644 = 31.4690115749f;
        float r38645 = r38643 + r38644;
        float r38646 = r38645 * r38611;
        float r38647 = 11.9400905721f;
        float r38648 = r38646 + r38647;
        float r38649 = r38648 * r38611;
        float r38650 = 0.607771387771f;
        float r38651 = r38649 + r38650;
        float r38652 = r38640 / r38651;
        float r38653 = r38629 * r38652;
        float r38654 = r38623 + r38653;
        float r38655 = r38627 ? r38654 : r38625;
        float r38656 = r38613 ? r38625 : r38655;
        return r38656;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r38657 = z;
        double r38658 = -741687408416398.6;
        bool r38659 = r38657 <= r38658;
        double r38660 = t;
        double r38661 = r38660 / r38657;
        double r38662 = 36.527041698806414;
        double r38663 = r38661 - r38662;
        double r38664 = y;
        double r38665 = r38664 / r38657;
        double r38666 = r38663 * r38665;
        double r38667 = 3.13060547623;
        double r38668 = r38664 * r38667;
        double r38669 = x;
        double r38670 = r38668 + r38669;
        double r38671 = r38666 + r38670;
        double r38672 = 7.708214234365678e+48;
        bool r38673 = r38657 <= r38672;
        double r38674 = 1.0;
        double r38675 = r38664 / r38674;
        double r38676 = r38657 * r38667;
        double r38677 = 11.1667541262;
        double r38678 = r38676 + r38677;
        double r38679 = r38678 * r38657;
        double r38680 = r38679 + r38660;
        double r38681 = r38680 * r38657;
        double r38682 = a;
        double r38683 = r38681 + r38682;
        double r38684 = r38683 * r38657;
        double r38685 = b;
        double r38686 = r38684 + r38685;
        double r38687 = 15.234687407;
        double r38688 = r38657 + r38687;
        double r38689 = r38688 * r38657;
        double r38690 = 31.4690115749;
        double r38691 = r38689 + r38690;
        double r38692 = r38691 * r38657;
        double r38693 = 11.9400905721;
        double r38694 = r38692 + r38693;
        double r38695 = r38694 * r38657;
        double r38696 = 0.607771387771;
        double r38697 = r38695 + r38696;
        double r38698 = r38686 / r38697;
        double r38699 = r38675 * r38698;
        double r38700 = r38669 + r38699;
        double r38701 = r38673 ? r38700 : r38671;
        double r38702 = r38659 ? r38671 : r38701;
        return r38702;
}

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 r38703, r38704, r38705, r38706, r38707, r38708, r38709, r38710, r38711, r38712, r38713, r38714, r38715, r38716, r38717, r38718, r38719, r38720, r38721, r38722, r38723, r38724, r38725, r38726, r38727, r38728, r38729, r38730, r38731, r38732;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r38703);
        mpfr_init(r38704);
        mpfr_init(r38705);
        mpfr_init_set_str(r38706, "3.13060547623", 10, MPFR_RNDN);
        mpfr_init(r38707);
        mpfr_init_set_str(r38708, "11.1667541262", 10, MPFR_RNDN);
        mpfr_init(r38709);
        mpfr_init(r38710);
        mpfr_init(r38711);
        mpfr_init(r38712);
        mpfr_init(r38713);
        mpfr_init(r38714);
        mpfr_init(r38715);
        mpfr_init(r38716);
        mpfr_init(r38717);
        mpfr_init(r38718);
        mpfr_init(r38719);
        mpfr_init_set_str(r38720, "15.234687407", 10, MPFR_RNDN);
        mpfr_init(r38721);
        mpfr_init(r38722);
        mpfr_init_set_str(r38723, "31.4690115749", 10, MPFR_RNDN);
        mpfr_init(r38724);
        mpfr_init(r38725);
        mpfr_init_set_str(r38726, "11.9400905721", 10, MPFR_RNDN);
        mpfr_init(r38727);
        mpfr_init(r38728);
        mpfr_init_set_str(r38729, "0.607771387771", 10, MPFR_RNDN);
        mpfr_init(r38730);
        mpfr_init(r38731);
        mpfr_init(r38732);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r38703, x, MPFR_RNDN);
        mpfr_set_d(r38704, y, MPFR_RNDN);
        mpfr_set_d(r38705, z, MPFR_RNDN);
        ;
        mpfr_mul(r38707, r38705, r38706, MPFR_RNDN);
        ;
        mpfr_add(r38709, r38707, r38708, MPFR_RNDN);
        mpfr_mul(r38710, r38709, r38705, MPFR_RNDN);
        mpfr_set_d(r38711, t, MPFR_RNDN);
        mpfr_add(r38712, r38710, r38711, MPFR_RNDN);
        mpfr_mul(r38713, r38712, r38705, MPFR_RNDN);
        mpfr_set_d(r38714, a, MPFR_RNDN);
        mpfr_add(r38715, r38713, r38714, MPFR_RNDN);
        mpfr_mul(r38716, r38715, r38705, MPFR_RNDN);
        mpfr_set_d(r38717, b, MPFR_RNDN);
        mpfr_add(r38718, r38716, r38717, MPFR_RNDN);
        mpfr_mul(r38719, r38704, r38718, MPFR_RNDN);
        ;
        mpfr_add(r38721, r38705, r38720, MPFR_RNDN);
        mpfr_mul(r38722, r38721, r38705, MPFR_RNDN);
        ;
        mpfr_add(r38724, r38722, r38723, MPFR_RNDN);
        mpfr_mul(r38725, r38724, r38705, MPFR_RNDN);
        ;
        mpfr_add(r38727, r38725, r38726, MPFR_RNDN);
        mpfr_mul(r38728, r38727, r38705, MPFR_RNDN);
        ;
        mpfr_add(r38730, r38728, r38729, MPFR_RNDN);
        mpfr_div(r38731, r38719, r38730, MPFR_RNDN);
        mpfr_add(r38732, r38703, r38731, MPFR_RNDN);
        return mpfr_get_d(r38732, MPFR_RNDN);
}

static mpfr_t r38733, r38734, r38735, r38736, r38737, r38738, r38739, r38740, r38741, r38742, r38743, r38744, r38745, r38746, r38747, r38748, r38749, r38750, r38751, r38752, r38753, r38754, r38755, r38756, r38757, r38758, r38759, r38760, r38761, r38762, r38763, r38764, r38765, r38766, r38767, r38768, r38769, r38770, r38771, r38772, r38773, r38774, r38775, r38776, r38777, r38778;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r38733);
        mpfr_init_set_str(r38734, "-741687408416398.6", 10, MPFR_RNDN);
        mpfr_init(r38735);
        mpfr_init(r38736);
        mpfr_init(r38737);
        mpfr_init_set_str(r38738, "36.527041698806414", 10, MPFR_RNDN);
        mpfr_init(r38739);
        mpfr_init(r38740);
        mpfr_init(r38741);
        mpfr_init(r38742);
        mpfr_init_set_str(r38743, "3.13060547623", 10, MPFR_RNDN);
        mpfr_init(r38744);
        mpfr_init(r38745);
        mpfr_init(r38746);
        mpfr_init(r38747);
        mpfr_init_set_str(r38748, "7.708214234365678e+48", 10, MPFR_RNDN);
        mpfr_init(r38749);
        mpfr_init_set_str(r38750, "1", 10, MPFR_RNDN);
        mpfr_init(r38751);
        mpfr_init(r38752);
        mpfr_init_set_str(r38753, "11.1667541262", 10, MPFR_RNDN);
        mpfr_init(r38754);
        mpfr_init(r38755);
        mpfr_init(r38756);
        mpfr_init(r38757);
        mpfr_init(r38758);
        mpfr_init(r38759);
        mpfr_init(r38760);
        mpfr_init(r38761);
        mpfr_init(r38762);
        mpfr_init_set_str(r38763, "15.234687407", 10, MPFR_RNDN);
        mpfr_init(r38764);
        mpfr_init(r38765);
        mpfr_init_set_str(r38766, "31.4690115749", 10, MPFR_RNDN);
        mpfr_init(r38767);
        mpfr_init(r38768);
        mpfr_init_set_str(r38769, "11.9400905721", 10, MPFR_RNDN);
        mpfr_init(r38770);
        mpfr_init(r38771);
        mpfr_init_set_str(r38772, "0.607771387771", 10, MPFR_RNDN);
        mpfr_init(r38773);
        mpfr_init(r38774);
        mpfr_init(r38775);
        mpfr_init(r38776);
        mpfr_init(r38777);
        mpfr_init(r38778);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r38733, z, MPFR_RNDN);
        ;
        mpfr_set_si(r38735, mpfr_cmp(r38733, r38734) <= 0, MPFR_RNDN);
        mpfr_set_d(r38736, t, MPFR_RNDN);
        mpfr_div(r38737, r38736, r38733, MPFR_RNDN);
        ;
        mpfr_sub(r38739, r38737, r38738, MPFR_RNDN);
        mpfr_set_d(r38740, y, MPFR_RNDN);
        mpfr_div(r38741, r38740, r38733, MPFR_RNDN);
        mpfr_mul(r38742, r38739, r38741, MPFR_RNDN);
        ;
        mpfr_mul(r38744, r38740, r38743, MPFR_RNDN);
        mpfr_set_d(r38745, x, MPFR_RNDN);
        mpfr_add(r38746, r38744, r38745, MPFR_RNDN);
        mpfr_add(r38747, r38742, r38746, MPFR_RNDN);
        ;
        mpfr_set_si(r38749, mpfr_cmp(r38733, r38748) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r38751, r38740, r38750, MPFR_RNDN);
        mpfr_mul(r38752, r38733, r38743, MPFR_RNDN);
        ;
        mpfr_add(r38754, r38752, r38753, MPFR_RNDN);
        mpfr_mul(r38755, r38754, r38733, MPFR_RNDN);
        mpfr_add(r38756, r38755, r38736, MPFR_RNDN);
        mpfr_mul(r38757, r38756, r38733, MPFR_RNDN);
        mpfr_set_d(r38758, a, MPFR_RNDN);
        mpfr_add(r38759, r38757, r38758, MPFR_RNDN);
        mpfr_mul(r38760, r38759, r38733, MPFR_RNDN);
        mpfr_set_d(r38761, b, MPFR_RNDN);
        mpfr_add(r38762, r38760, r38761, MPFR_RNDN);
        ;
        mpfr_add(r38764, r38733, r38763, MPFR_RNDN);
        mpfr_mul(r38765, r38764, r38733, MPFR_RNDN);
        ;
        mpfr_add(r38767, r38765, r38766, MPFR_RNDN);
        mpfr_mul(r38768, r38767, r38733, MPFR_RNDN);
        ;
        mpfr_add(r38770, r38768, r38769, MPFR_RNDN);
        mpfr_mul(r38771, r38770, r38733, MPFR_RNDN);
        ;
        mpfr_add(r38773, r38771, r38772, MPFR_RNDN);
        mpfr_div(r38774, r38762, r38773, MPFR_RNDN);
        mpfr_mul(r38775, r38751, r38774, MPFR_RNDN);
        mpfr_add(r38776, r38745, r38775, MPFR_RNDN);
        if (mpfr_get_si(r38749, MPFR_RNDN)) { mpfr_set(r38777, r38776, MPFR_RNDN); } else { mpfr_set(r38777, r38747, MPFR_RNDN); };
        if (mpfr_get_si(r38735, MPFR_RNDN)) { mpfr_set(r38778, r38747, MPFR_RNDN); } else { mpfr_set(r38778, r38777, MPFR_RNDN); };
        return mpfr_get_d(r38778, MPFR_RNDN);
}

static mpfr_t r38779, r38780, r38781, r38782, r38783, r38784, r38785, r38786, r38787, r38788, r38789, r38790, r38791, r38792, r38793, r38794, r38795, r38796, r38797, r38798, r38799, r38800, r38801, r38802, r38803, r38804, r38805, r38806, r38807, r38808, r38809, r38810, r38811, r38812, r38813, r38814, r38815, r38816, r38817, r38818, r38819, r38820, r38821, r38822, r38823, r38824;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r38779);
        mpfr_init_set_str(r38780, "-741687408416398.6", 10, MPFR_RNDN);
        mpfr_init(r38781);
        mpfr_init(r38782);
        mpfr_init(r38783);
        mpfr_init_set_str(r38784, "36.527041698806414", 10, MPFR_RNDN);
        mpfr_init(r38785);
        mpfr_init(r38786);
        mpfr_init(r38787);
        mpfr_init(r38788);
        mpfr_init_set_str(r38789, "3.13060547623", 10, MPFR_RNDN);
        mpfr_init(r38790);
        mpfr_init(r38791);
        mpfr_init(r38792);
        mpfr_init(r38793);
        mpfr_init_set_str(r38794, "7.708214234365678e+48", 10, MPFR_RNDN);
        mpfr_init(r38795);
        mpfr_init_set_str(r38796, "1", 10, MPFR_RNDN);
        mpfr_init(r38797);
        mpfr_init(r38798);
        mpfr_init_set_str(r38799, "11.1667541262", 10, MPFR_RNDN);
        mpfr_init(r38800);
        mpfr_init(r38801);
        mpfr_init(r38802);
        mpfr_init(r38803);
        mpfr_init(r38804);
        mpfr_init(r38805);
        mpfr_init(r38806);
        mpfr_init(r38807);
        mpfr_init(r38808);
        mpfr_init_set_str(r38809, "15.234687407", 10, MPFR_RNDN);
        mpfr_init(r38810);
        mpfr_init(r38811);
        mpfr_init_set_str(r38812, "31.4690115749", 10, MPFR_RNDN);
        mpfr_init(r38813);
        mpfr_init(r38814);
        mpfr_init_set_str(r38815, "11.9400905721", 10, MPFR_RNDN);
        mpfr_init(r38816);
        mpfr_init(r38817);
        mpfr_init_set_str(r38818, "0.607771387771", 10, MPFR_RNDN);
        mpfr_init(r38819);
        mpfr_init(r38820);
        mpfr_init(r38821);
        mpfr_init(r38822);
        mpfr_init(r38823);
        mpfr_init(r38824);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r38779, z, MPFR_RNDN);
        ;
        mpfr_set_si(r38781, mpfr_cmp(r38779, r38780) <= 0, MPFR_RNDN);
        mpfr_set_d(r38782, t, MPFR_RNDN);
        mpfr_div(r38783, r38782, r38779, MPFR_RNDN);
        ;
        mpfr_sub(r38785, r38783, r38784, MPFR_RNDN);
        mpfr_set_d(r38786, y, MPFR_RNDN);
        mpfr_div(r38787, r38786, r38779, MPFR_RNDN);
        mpfr_mul(r38788, r38785, r38787, MPFR_RNDN);
        ;
        mpfr_mul(r38790, r38786, r38789, MPFR_RNDN);
        mpfr_set_d(r38791, x, MPFR_RNDN);
        mpfr_add(r38792, r38790, r38791, MPFR_RNDN);
        mpfr_add(r38793, r38788, r38792, MPFR_RNDN);
        ;
        mpfr_set_si(r38795, mpfr_cmp(r38779, r38794) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r38797, r38786, r38796, MPFR_RNDN);
        mpfr_mul(r38798, r38779, r38789, MPFR_RNDN);
        ;
        mpfr_add(r38800, r38798, r38799, MPFR_RNDN);
        mpfr_mul(r38801, r38800, r38779, MPFR_RNDN);
        mpfr_add(r38802, r38801, r38782, MPFR_RNDN);
        mpfr_mul(r38803, r38802, r38779, MPFR_RNDN);
        mpfr_set_d(r38804, a, MPFR_RNDN);
        mpfr_add(r38805, r38803, r38804, MPFR_RNDN);
        mpfr_mul(r38806, r38805, r38779, MPFR_RNDN);
        mpfr_set_d(r38807, b, MPFR_RNDN);
        mpfr_add(r38808, r38806, r38807, MPFR_RNDN);
        ;
        mpfr_add(r38810, r38779, r38809, MPFR_RNDN);
        mpfr_mul(r38811, r38810, r38779, MPFR_RNDN);
        ;
        mpfr_add(r38813, r38811, r38812, MPFR_RNDN);
        mpfr_mul(r38814, r38813, r38779, MPFR_RNDN);
        ;
        mpfr_add(r38816, r38814, r38815, MPFR_RNDN);
        mpfr_mul(r38817, r38816, r38779, MPFR_RNDN);
        ;
        mpfr_add(r38819, r38817, r38818, MPFR_RNDN);
        mpfr_div(r38820, r38808, r38819, MPFR_RNDN);
        mpfr_mul(r38821, r38797, r38820, MPFR_RNDN);
        mpfr_add(r38822, r38791, r38821, MPFR_RNDN);
        if (mpfr_get_si(r38795, MPFR_RNDN)) { mpfr_set(r38823, r38822, MPFR_RNDN); } else { mpfr_set(r38823, r38793, MPFR_RNDN); };
        if (mpfr_get_si(r38781, MPFR_RNDN)) { mpfr_set(r38824, r38793, MPFR_RNDN); } else { mpfr_set(r38824, r38823, MPFR_RNDN); };
        return mpfr_get_d(r38824, MPFR_RNDN);
}

