#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2, A";

double f_if(float x, float y, float z, float t, float a, float b) {
        float r44588 = x;
        float r44589 = y;
        float r44590 = z;
        float r44591 = log(r44590);
        float r44592 = r44589 * r44591;
        float r44593 = t;
        float r44594 = 1.0;
        float r44595 = r44593 - r44594;
        float r44596 = a;
        float r44597 = log(r44596);
        float r44598 = r44595 * r44597;
        float r44599 = r44592 + r44598;
        float r44600 = b;
        float r44601 = r44599 - r44600;
        float r44602 = exp(r44601);
        float r44603 = r44588 * r44602;
        float r44604 = r44603 / r44589;
        return r44604;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r44605 = x;
        double r44606 = y;
        double r44607 = z;
        double r44608 = log(r44607);
        double r44609 = r44606 * r44608;
        double r44610 = t;
        double r44611 = 1.0;
        double r44612 = r44610 - r44611;
        double r44613 = a;
        double r44614 = log(r44613);
        double r44615 = r44612 * r44614;
        double r44616 = r44609 + r44615;
        double r44617 = b;
        double r44618 = r44616 - r44617;
        double r44619 = exp(r44618);
        double r44620 = r44605 * r44619;
        double r44621 = r44620 / r44606;
        return r44621;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r44622 = y;
        float r44623 = -5.393370897596531e-142;
        bool r44624 = r44622 <= r44623;
        float r44625 = x;
        float r44626 = r44625 / r44622;
        float r44627 = a;
        float r44628 = log(r44627);
        float r44629 = t;
        float r44630 = 1.0;
        float r44631 = r44629 - r44630;
        float r44632 = r44628 * r44631;
        float r44633 = b;
        float r44634 = z;
        float r44635 = log(r44634);
        float r44636 = r44635 * r44622;
        float r44637 = r44633 - r44636;
        float r44638 = r44632 - r44637;
        float r44639 = exp(r44638);
        float r44640 = r44626 * r44639;
        float r44641 = 1788235847.527372;
        bool r44642 = r44622 <= r44641;
        float r44643 = pow(r44627, r44631);
        float r44644 = exp(r44633);
        float r44645 = pow(r44634, r44622);
        float r44646 = r44644 / r44645;
        float r44647 = r44643 / r44646;
        float r44648 = r44625 * r44647;
        float r44649 = r44648 / r44622;
        float r44650 = r44642 ? r44649 : r44640;
        float r44651 = r44624 ? r44640 : r44650;
        return r44651;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r44652 = y;
        double r44653 = -5.393370897596531e-142;
        bool r44654 = r44652 <= r44653;
        double r44655 = x;
        double r44656 = r44655 / r44652;
        double r44657 = a;
        double r44658 = log(r44657);
        double r44659 = t;
        double r44660 = 1.0;
        double r44661 = r44659 - r44660;
        double r44662 = r44658 * r44661;
        double r44663 = b;
        double r44664 = z;
        double r44665 = log(r44664);
        double r44666 = r44665 * r44652;
        double r44667 = r44663 - r44666;
        double r44668 = r44662 - r44667;
        double r44669 = exp(r44668);
        double r44670 = r44656 * r44669;
        double r44671 = 1788235847.527372;
        bool r44672 = r44652 <= r44671;
        double r44673 = pow(r44657, r44661);
        double r44674 = exp(r44663);
        double r44675 = pow(r44664, r44652);
        double r44676 = r44674 / r44675;
        double r44677 = r44673 / r44676;
        double r44678 = r44655 * r44677;
        double r44679 = r44678 / r44652;
        double r44680 = r44672 ? r44679 : r44670;
        double r44681 = r44654 ? r44670 : r44680;
        return r44681;
}

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 r44682, r44683, r44684, r44685, r44686, r44687, r44688, r44689, r44690, r44691, r44692, r44693, r44694, r44695, r44696, r44697, r44698;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44682);
        mpfr_init(r44683);
        mpfr_init(r44684);
        mpfr_init(r44685);
        mpfr_init(r44686);
        mpfr_init(r44687);
        mpfr_init_set_str(r44688, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44689);
        mpfr_init(r44690);
        mpfr_init(r44691);
        mpfr_init(r44692);
        mpfr_init(r44693);
        mpfr_init(r44694);
        mpfr_init(r44695);
        mpfr_init(r44696);
        mpfr_init(r44697);
        mpfr_init(r44698);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r44682, x, MPFR_RNDN);
        mpfr_set_d(r44683, y, MPFR_RNDN);
        mpfr_set_d(r44684, z, MPFR_RNDN);
        mpfr_log(r44685, r44684, MPFR_RNDN);
        mpfr_mul(r44686, r44683, r44685, MPFR_RNDN);
        mpfr_set_d(r44687, t, MPFR_RNDN);
        ;
        mpfr_sub(r44689, r44687, r44688, MPFR_RNDN);
        mpfr_set_d(r44690, a, MPFR_RNDN);
        mpfr_log(r44691, r44690, MPFR_RNDN);
        mpfr_mul(r44692, r44689, r44691, MPFR_RNDN);
        mpfr_add(r44693, r44686, r44692, MPFR_RNDN);
        mpfr_set_d(r44694, b, MPFR_RNDN);
        mpfr_sub(r44695, r44693, r44694, MPFR_RNDN);
        mpfr_exp(r44696, r44695, MPFR_RNDN);
        mpfr_mul(r44697, r44682, r44696, MPFR_RNDN);
        mpfr_div(r44698, r44697, r44683, MPFR_RNDN);
        return mpfr_get_d(r44698, MPFR_RNDN);
}

static mpfr_t r44699, r44700, r44701, r44702, r44703, r44704, r44705, r44706, r44707, r44708, r44709, r44710, r44711, r44712, r44713, r44714, r44715, r44716, r44717, r44718, r44719, r44720, r44721, r44722, r44723, r44724, r44725, r44726, r44727, r44728;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44699);
        mpfr_init_set_str(r44700, "-5.393370897596531e-142", 10, MPFR_RNDN);
        mpfr_init(r44701);
        mpfr_init(r44702);
        mpfr_init(r44703);
        mpfr_init(r44704);
        mpfr_init(r44705);
        mpfr_init(r44706);
        mpfr_init_set_str(r44707, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44708);
        mpfr_init(r44709);
        mpfr_init(r44710);
        mpfr_init(r44711);
        mpfr_init(r44712);
        mpfr_init(r44713);
        mpfr_init(r44714);
        mpfr_init(r44715);
        mpfr_init(r44716);
        mpfr_init(r44717);
        mpfr_init_set_str(r44718, "1788235847.527372", 10, MPFR_RNDN);
        mpfr_init(r44719);
        mpfr_init(r44720);
        mpfr_init(r44721);
        mpfr_init(r44722);
        mpfr_init(r44723);
        mpfr_init(r44724);
        mpfr_init(r44725);
        mpfr_init(r44726);
        mpfr_init(r44727);
        mpfr_init(r44728);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r44699, y, MPFR_RNDN);
        ;
        mpfr_set_si(r44701, mpfr_cmp(r44699, r44700) <= 0, MPFR_RNDN);
        mpfr_set_d(r44702, x, MPFR_RNDN);
        mpfr_div(r44703, r44702, r44699, MPFR_RNDN);
        mpfr_set_d(r44704, a, MPFR_RNDN);
        mpfr_log(r44705, r44704, MPFR_RNDN);
        mpfr_set_d(r44706, t, MPFR_RNDN);
        ;
        mpfr_sub(r44708, r44706, r44707, MPFR_RNDN);
        mpfr_mul(r44709, r44705, r44708, MPFR_RNDN);
        mpfr_set_d(r44710, b, MPFR_RNDN);
        mpfr_set_d(r44711, z, MPFR_RNDN);
        mpfr_log(r44712, r44711, MPFR_RNDN);
        mpfr_mul(r44713, r44712, r44699, MPFR_RNDN);
        mpfr_sub(r44714, r44710, r44713, MPFR_RNDN);
        mpfr_sub(r44715, r44709, r44714, MPFR_RNDN);
        mpfr_exp(r44716, r44715, MPFR_RNDN);
        mpfr_mul(r44717, r44703, r44716, MPFR_RNDN);
        ;
        mpfr_set_si(r44719, mpfr_cmp(r44699, r44718) <= 0, MPFR_RNDN);
        mpfr_pow(r44720, r44704, r44708, MPFR_RNDN);
        mpfr_exp(r44721, r44710, MPFR_RNDN);
        mpfr_pow(r44722, r44711, r44699, MPFR_RNDN);
        mpfr_div(r44723, r44721, r44722, MPFR_RNDN);
        mpfr_div(r44724, r44720, r44723, MPFR_RNDN);
        mpfr_mul(r44725, r44702, r44724, MPFR_RNDN);
        mpfr_div(r44726, r44725, r44699, MPFR_RNDN);
        if (mpfr_get_si(r44719, MPFR_RNDN)) { mpfr_set(r44727, r44726, MPFR_RNDN); } else { mpfr_set(r44727, r44717, MPFR_RNDN); };
        if (mpfr_get_si(r44701, MPFR_RNDN)) { mpfr_set(r44728, r44717, MPFR_RNDN); } else { mpfr_set(r44728, r44727, MPFR_RNDN); };
        return mpfr_get_d(r44728, MPFR_RNDN);
}

static mpfr_t r44729, r44730, r44731, r44732, r44733, r44734, r44735, r44736, r44737, r44738, r44739, r44740, r44741, r44742, r44743, r44744, r44745, r44746, r44747, r44748, r44749, r44750, r44751, r44752, r44753, r44754, r44755, r44756, r44757, r44758;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44729);
        mpfr_init_set_str(r44730, "-5.393370897596531e-142", 10, MPFR_RNDN);
        mpfr_init(r44731);
        mpfr_init(r44732);
        mpfr_init(r44733);
        mpfr_init(r44734);
        mpfr_init(r44735);
        mpfr_init(r44736);
        mpfr_init_set_str(r44737, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44738);
        mpfr_init(r44739);
        mpfr_init(r44740);
        mpfr_init(r44741);
        mpfr_init(r44742);
        mpfr_init(r44743);
        mpfr_init(r44744);
        mpfr_init(r44745);
        mpfr_init(r44746);
        mpfr_init(r44747);
        mpfr_init_set_str(r44748, "1788235847.527372", 10, MPFR_RNDN);
        mpfr_init(r44749);
        mpfr_init(r44750);
        mpfr_init(r44751);
        mpfr_init(r44752);
        mpfr_init(r44753);
        mpfr_init(r44754);
        mpfr_init(r44755);
        mpfr_init(r44756);
        mpfr_init(r44757);
        mpfr_init(r44758);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r44729, y, MPFR_RNDN);
        ;
        mpfr_set_si(r44731, mpfr_cmp(r44729, r44730) <= 0, MPFR_RNDN);
        mpfr_set_d(r44732, x, MPFR_RNDN);
        mpfr_div(r44733, r44732, r44729, MPFR_RNDN);
        mpfr_set_d(r44734, a, MPFR_RNDN);
        mpfr_log(r44735, r44734, MPFR_RNDN);
        mpfr_set_d(r44736, t, MPFR_RNDN);
        ;
        mpfr_sub(r44738, r44736, r44737, MPFR_RNDN);
        mpfr_mul(r44739, r44735, r44738, MPFR_RNDN);
        mpfr_set_d(r44740, b, MPFR_RNDN);
        mpfr_set_d(r44741, z, MPFR_RNDN);
        mpfr_log(r44742, r44741, MPFR_RNDN);
        mpfr_mul(r44743, r44742, r44729, MPFR_RNDN);
        mpfr_sub(r44744, r44740, r44743, MPFR_RNDN);
        mpfr_sub(r44745, r44739, r44744, MPFR_RNDN);
        mpfr_exp(r44746, r44745, MPFR_RNDN);
        mpfr_mul(r44747, r44733, r44746, MPFR_RNDN);
        ;
        mpfr_set_si(r44749, mpfr_cmp(r44729, r44748) <= 0, MPFR_RNDN);
        mpfr_pow(r44750, r44734, r44738, MPFR_RNDN);
        mpfr_exp(r44751, r44740, MPFR_RNDN);
        mpfr_pow(r44752, r44741, r44729, MPFR_RNDN);
        mpfr_div(r44753, r44751, r44752, MPFR_RNDN);
        mpfr_div(r44754, r44750, r44753, MPFR_RNDN);
        mpfr_mul(r44755, r44732, r44754, MPFR_RNDN);
        mpfr_div(r44756, r44755, r44729, MPFR_RNDN);
        if (mpfr_get_si(r44749, MPFR_RNDN)) { mpfr_set(r44757, r44756, MPFR_RNDN); } else { mpfr_set(r44757, r44747, MPFR_RNDN); };
        if (mpfr_get_si(r44731, MPFR_RNDN)) { mpfr_set(r44758, r44747, MPFR_RNDN); } else { mpfr_set(r44758, r44757, MPFR_RNDN); };
        return mpfr_get_d(r44758, MPFR_RNDN);
}

