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

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

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

double f_id(double x, double y, double z, double t, double a, double b) {
        double r44622 = x;
        double r44623 = y;
        double r44624 = z;
        double r44625 = log(r44624);
        double r44626 = t;
        double r44627 = r44625 - r44626;
        double r44628 = r44623 * r44627;
        double r44629 = a;
        double r44630 = 1.0;
        double r44631 = r44630 - r44624;
        double r44632 = log(r44631);
        double r44633 = b;
        double r44634 = r44632 - r44633;
        double r44635 = r44629 * r44634;
        double r44636 = r44628 + r44635;
        double r44637 = exp(r44636);
        double r44638 = r44622 * r44637;
        return r44638;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r44639 = x;
        float r44640 = 6.162182387522347e-283;
        bool r44641 = r44639 <= r44640;
        float r44642 = 1.0;
        float r44643 = z;
        float r44644 = r44642 - r44643;
        float r44645 = log(r44644);
        float r44646 = b;
        float r44647 = r44645 - r44646;
        float r44648 = a;
        float r44649 = r44647 * r44648;
        float r44650 = exp(r44649);
        float r44651 = r44639 * r44650;
        float r44652 = y;
        float r44653 = log(r44643);
        float r44654 = t;
        float r44655 = r44653 - r44654;
        float r44656 = r44652 * r44655;
        float r44657 = exp(r44656);
        float r44658 = r44651 * r44657;
        float r44659 = log(r44639);
        float r44660 = r44655 * r44652;
        float r44661 = r44659 + r44660;
        float r44662 = r44648 * r44647;
        float r44663 = r44661 + r44662;
        float r44664 = exp(r44663);
        float r44665 = r44641 ? r44658 : r44664;
        return r44665;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r44666 = x;
        double r44667 = 6.162182387522347e-283;
        bool r44668 = r44666 <= r44667;
        double r44669 = 1.0;
        double r44670 = z;
        double r44671 = r44669 - r44670;
        double r44672 = log(r44671);
        double r44673 = b;
        double r44674 = r44672 - r44673;
        double r44675 = a;
        double r44676 = r44674 * r44675;
        double r44677 = exp(r44676);
        double r44678 = r44666 * r44677;
        double r44679 = y;
        double r44680 = log(r44670);
        double r44681 = t;
        double r44682 = r44680 - r44681;
        double r44683 = r44679 * r44682;
        double r44684 = exp(r44683);
        double r44685 = r44678 * r44684;
        double r44686 = log(r44666);
        double r44687 = r44682 * r44679;
        double r44688 = r44686 + r44687;
        double r44689 = r44675 * r44674;
        double r44690 = r44688 + r44689;
        double r44691 = exp(r44690);
        double r44692 = r44668 ? r44685 : r44691;
        return r44692;
}

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 r44693, r44694, r44695, r44696, r44697, r44698, r44699, r44700, r44701, r44702, r44703, r44704, r44705, r44706, r44707, r44708, r44709;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init(r44693);
        mpfr_init(r44694);
        mpfr_init(r44695);
        mpfr_init(r44696);
        mpfr_init(r44697);
        mpfr_init(r44698);
        mpfr_init(r44699);
        mpfr_init(r44700);
        mpfr_init_set_str(r44701, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44702);
        mpfr_init(r44703);
        mpfr_init(r44704);
        mpfr_init(r44705);
        mpfr_init(r44706);
        mpfr_init(r44707);
        mpfr_init(r44708);
        mpfr_init(r44709);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r44693, x, MPFR_RNDN);
        mpfr_set_d(r44694, y, MPFR_RNDN);
        mpfr_set_d(r44695, z, MPFR_RNDN);
        mpfr_log(r44696, r44695, MPFR_RNDN);
        mpfr_set_d(r44697, t, MPFR_RNDN);
        mpfr_sub(r44698, r44696, r44697, MPFR_RNDN);
        mpfr_mul(r44699, r44694, r44698, MPFR_RNDN);
        mpfr_set_d(r44700, a, MPFR_RNDN);
        ;
        mpfr_sub(r44702, r44701, r44695, MPFR_RNDN);
        mpfr_log(r44703, r44702, MPFR_RNDN);
        mpfr_set_d(r44704, b, MPFR_RNDN);
        mpfr_sub(r44705, r44703, r44704, MPFR_RNDN);
        mpfr_mul(r44706, r44700, r44705, MPFR_RNDN);
        mpfr_add(r44707, r44699, r44706, MPFR_RNDN);
        mpfr_exp(r44708, r44707, MPFR_RNDN);
        mpfr_mul(r44709, r44693, r44708, MPFR_RNDN);
        return mpfr_get_d(r44709, MPFR_RNDN);
}

static mpfr_t r44710, r44711, r44712, r44713, r44714, r44715, r44716, r44717, r44718, r44719, r44720, r44721, r44722, r44723, r44724, r44725, r44726, r44727, r44728, r44729, r44730, r44731, r44732, r44733, r44734, r44735, r44736;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r44710);
        mpfr_init_set_str(r44711, "6.162182387522347e-283", 10, MPFR_RNDN);
        mpfr_init(r44712);
        mpfr_init_set_str(r44713, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44714);
        mpfr_init(r44715);
        mpfr_init(r44716);
        mpfr_init(r44717);
        mpfr_init(r44718);
        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);
        mpfr_init(r44729);
        mpfr_init(r44730);
        mpfr_init(r44731);
        mpfr_init(r44732);
        mpfr_init(r44733);
        mpfr_init(r44734);
        mpfr_init(r44735);
        mpfr_init(r44736);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r44710, x, MPFR_RNDN);
        ;
        mpfr_set_si(r44712, mpfr_cmp(r44710, r44711) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r44714, z, MPFR_RNDN);
        mpfr_sub(r44715, r44713, r44714, MPFR_RNDN);
        mpfr_log(r44716, r44715, MPFR_RNDN);
        mpfr_set_d(r44717, b, MPFR_RNDN);
        mpfr_sub(r44718, r44716, r44717, MPFR_RNDN);
        mpfr_set_d(r44719, a, MPFR_RNDN);
        mpfr_mul(r44720, r44718, r44719, MPFR_RNDN);
        mpfr_exp(r44721, r44720, MPFR_RNDN);
        mpfr_mul(r44722, r44710, r44721, MPFR_RNDN);
        mpfr_set_d(r44723, y, MPFR_RNDN);
        mpfr_log(r44724, r44714, MPFR_RNDN);
        mpfr_set_d(r44725, t, MPFR_RNDN);
        mpfr_sub(r44726, r44724, r44725, MPFR_RNDN);
        mpfr_mul(r44727, r44723, r44726, MPFR_RNDN);
        mpfr_exp(r44728, r44727, MPFR_RNDN);
        mpfr_mul(r44729, r44722, r44728, MPFR_RNDN);
        mpfr_log(r44730, r44710, MPFR_RNDN);
        mpfr_mul(r44731, r44726, r44723, MPFR_RNDN);
        mpfr_add(r44732, r44730, r44731, MPFR_RNDN);
        mpfr_mul(r44733, r44719, r44718, MPFR_RNDN);
        mpfr_add(r44734, r44732, r44733, MPFR_RNDN);
        mpfr_exp(r44735, r44734, MPFR_RNDN);
        if (mpfr_get_si(r44712, MPFR_RNDN)) { mpfr_set(r44736, r44729, MPFR_RNDN); } else { mpfr_set(r44736, r44735, MPFR_RNDN); };
        return mpfr_get_d(r44736, MPFR_RNDN);
}

static mpfr_t r44737, r44738, r44739, r44740, r44741, r44742, r44743, r44744, r44745, r44746, r44747, r44748, r44749, r44750, r44751, r44752, r44753, r44754, r44755, r44756, r44757, r44758, r44759, r44760, r44761, r44762, r44763;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r44737);
        mpfr_init_set_str(r44738, "6.162182387522347e-283", 10, MPFR_RNDN);
        mpfr_init(r44739);
        mpfr_init_set_str(r44740, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44741);
        mpfr_init(r44742);
        mpfr_init(r44743);
        mpfr_init(r44744);
        mpfr_init(r44745);
        mpfr_init(r44746);
        mpfr_init(r44747);
        mpfr_init(r44748);
        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);
        mpfr_init(r44759);
        mpfr_init(r44760);
        mpfr_init(r44761);
        mpfr_init(r44762);
        mpfr_init(r44763);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r44737, x, MPFR_RNDN);
        ;
        mpfr_set_si(r44739, mpfr_cmp(r44737, r44738) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r44741, z, MPFR_RNDN);
        mpfr_sub(r44742, r44740, r44741, MPFR_RNDN);
        mpfr_log(r44743, r44742, MPFR_RNDN);
        mpfr_set_d(r44744, b, MPFR_RNDN);
        mpfr_sub(r44745, r44743, r44744, MPFR_RNDN);
        mpfr_set_d(r44746, a, MPFR_RNDN);
        mpfr_mul(r44747, r44745, r44746, MPFR_RNDN);
        mpfr_exp(r44748, r44747, MPFR_RNDN);
        mpfr_mul(r44749, r44737, r44748, MPFR_RNDN);
        mpfr_set_d(r44750, y, MPFR_RNDN);
        mpfr_log(r44751, r44741, MPFR_RNDN);
        mpfr_set_d(r44752, t, MPFR_RNDN);
        mpfr_sub(r44753, r44751, r44752, MPFR_RNDN);
        mpfr_mul(r44754, r44750, r44753, MPFR_RNDN);
        mpfr_exp(r44755, r44754, MPFR_RNDN);
        mpfr_mul(r44756, r44749, r44755, MPFR_RNDN);
        mpfr_log(r44757, r44737, MPFR_RNDN);
        mpfr_mul(r44758, r44753, r44750, MPFR_RNDN);
        mpfr_add(r44759, r44757, r44758, MPFR_RNDN);
        mpfr_mul(r44760, r44746, r44745, MPFR_RNDN);
        mpfr_add(r44761, r44759, r44760, MPFR_RNDN);
        mpfr_exp(r44762, r44761, MPFR_RNDN);
        if (mpfr_get_si(r44739, MPFR_RNDN)) { mpfr_set(r44763, r44756, MPFR_RNDN); } else { mpfr_set(r44763, r44762, MPFR_RNDN); };
        return mpfr_get_d(r44763, MPFR_RNDN);
}

