#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";

double f_if(float x, float y, float z, float t, float a, float b) {
        float r27598 = x;
        float r27599 = y;
        float r27600 = z;
        float r27601 = log(r27600);
        float r27602 = r27599 * r27601;
        float r27603 = t;
        float r27604 = 1.0;
        float r27605 = r27603 - r27604;
        float r27606 = a;
        float r27607 = log(r27606);
        float r27608 = r27605 * r27607;
        float r27609 = r27602 + r27608;
        float r27610 = b;
        float r27611 = r27609 - r27610;
        float r27612 = exp(r27611);
        float r27613 = r27598 * r27612;
        float r27614 = r27613 / r27599;
        return r27614;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r27615 = x;
        double r27616 = y;
        double r27617 = z;
        double r27618 = log(r27617);
        double r27619 = r27616 * r27618;
        double r27620 = t;
        double r27621 = 1.0;
        double r27622 = r27620 - r27621;
        double r27623 = a;
        double r27624 = log(r27623);
        double r27625 = r27622 * r27624;
        double r27626 = r27619 + r27625;
        double r27627 = b;
        double r27628 = r27626 - r27627;
        double r27629 = exp(r27628);
        double r27630 = r27615 * r27629;
        double r27631 = r27630 / r27616;
        return r27631;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r27632 = t;
        float r27633 = -1506913298432.609;
        bool r27634 = r27632 <= r27633;
        float r27635 = x;
        float r27636 = a;
        float r27637 = 1.0;
        float r27638 = r27632 - r27637;
        float r27639 = pow(r27636, r27638);
        float r27640 = b;
        float r27641 = 1;
        float r27642 = r27640 + r27641;
        float r27643 = y;
        float r27644 = z;
        float r27645 = log(r27644);
        float r27646 = r27643 * r27645;
        float r27647 = r27642 - r27646;
        float r27648 = r27639 / r27647;
        float r27649 = r27635 * r27648;
        float r27650 = r27649 / r27643;
        float r27651 = 1.2421398212208342e-102;
        bool r27652 = r27632 <= r27651;
        float r27653 = r27635 / r27643;
        float r27654 = r27645 * r27643;
        float r27655 = r27640 - r27654;
        float r27656 = exp(r27655);
        float r27657 = r27639 / r27656;
        float r27658 = r27653 * r27657;
        float r27659 = r27652 ? r27658 : r27650;
        float r27660 = r27634 ? r27650 : r27659;
        return r27660;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r27661 = t;
        double r27662 = -1506913298432.609;
        bool r27663 = r27661 <= r27662;
        double r27664 = x;
        double r27665 = a;
        double r27666 = 1.0;
        double r27667 = r27661 - r27666;
        double r27668 = pow(r27665, r27667);
        double r27669 = b;
        double r27670 = 1;
        double r27671 = r27669 + r27670;
        double r27672 = y;
        double r27673 = z;
        double r27674 = log(r27673);
        double r27675 = r27672 * r27674;
        double r27676 = r27671 - r27675;
        double r27677 = r27668 / r27676;
        double r27678 = r27664 * r27677;
        double r27679 = r27678 / r27672;
        double r27680 = 1.2421398212208342e-102;
        bool r27681 = r27661 <= r27680;
        double r27682 = r27664 / r27672;
        double r27683 = r27674 * r27672;
        double r27684 = r27669 - r27683;
        double r27685 = exp(r27684);
        double r27686 = r27668 / r27685;
        double r27687 = r27682 * r27686;
        double r27688 = r27681 ? r27687 : r27679;
        double r27689 = r27663 ? r27679 : r27688;
        return r27689;
}

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 r27690, r27691, r27692, r27693, r27694, r27695, r27696, r27697, r27698, r27699, r27700, r27701, r27702, r27703, r27704, r27705, r27706;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r27690);
        mpfr_init(r27691);
        mpfr_init(r27692);
        mpfr_init(r27693);
        mpfr_init(r27694);
        mpfr_init(r27695);
        mpfr_init_set_str(r27696, "1.0", 10, MPFR_RNDN);
        mpfr_init(r27697);
        mpfr_init(r27698);
        mpfr_init(r27699);
        mpfr_init(r27700);
        mpfr_init(r27701);
        mpfr_init(r27702);
        mpfr_init(r27703);
        mpfr_init(r27704);
        mpfr_init(r27705);
        mpfr_init(r27706);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r27690, x, MPFR_RNDN);
        mpfr_set_d(r27691, y, MPFR_RNDN);
        mpfr_set_d(r27692, z, MPFR_RNDN);
        mpfr_log(r27693, r27692, MPFR_RNDN);
        mpfr_mul(r27694, r27691, r27693, MPFR_RNDN);
        mpfr_set_d(r27695, t, MPFR_RNDN);
        ;
        mpfr_sub(r27697, r27695, r27696, MPFR_RNDN);
        mpfr_set_d(r27698, a, MPFR_RNDN);
        mpfr_log(r27699, r27698, MPFR_RNDN);
        mpfr_mul(r27700, r27697, r27699, MPFR_RNDN);
        mpfr_add(r27701, r27694, r27700, MPFR_RNDN);
        mpfr_set_d(r27702, b, MPFR_RNDN);
        mpfr_sub(r27703, r27701, r27702, MPFR_RNDN);
        mpfr_exp(r27704, r27703, MPFR_RNDN);
        mpfr_mul(r27705, r27690, r27704, MPFR_RNDN);
        mpfr_div(r27706, r27705, r27691, MPFR_RNDN);
        return mpfr_get_d(r27706, MPFR_RNDN);
}

static mpfr_t r27707, r27708, r27709, r27710, r27711, r27712, r27713, r27714, r27715, r27716, r27717, r27718, r27719, r27720, r27721, r27722, r27723, r27724, r27725, r27726, r27727, r27728, r27729, r27730, r27731, r27732, r27733, r27734, r27735;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r27707);
        mpfr_init_set_str(r27708, "-1506913298432.609", 10, MPFR_RNDN);
        mpfr_init(r27709);
        mpfr_init(r27710);
        mpfr_init(r27711);
        mpfr_init_set_str(r27712, "1.0", 10, MPFR_RNDN);
        mpfr_init(r27713);
        mpfr_init(r27714);
        mpfr_init(r27715);
        mpfr_init_set_str(r27716, "1", 10, MPFR_RNDN);
        mpfr_init(r27717);
        mpfr_init(r27718);
        mpfr_init(r27719);
        mpfr_init(r27720);
        mpfr_init(r27721);
        mpfr_init(r27722);
        mpfr_init(r27723);
        mpfr_init(r27724);
        mpfr_init(r27725);
        mpfr_init_set_str(r27726, "1.2421398212208342e-102", 10, MPFR_RNDN);
        mpfr_init(r27727);
        mpfr_init(r27728);
        mpfr_init(r27729);
        mpfr_init(r27730);
        mpfr_init(r27731);
        mpfr_init(r27732);
        mpfr_init(r27733);
        mpfr_init(r27734);
        mpfr_init(r27735);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r27707, t, MPFR_RNDN);
        ;
        mpfr_set_si(r27709, mpfr_cmp(r27707, r27708) <= 0, MPFR_RNDN);
        mpfr_set_d(r27710, x, MPFR_RNDN);
        mpfr_set_d(r27711, a, MPFR_RNDN);
        ;
        mpfr_sub(r27713, r27707, r27712, MPFR_RNDN);
        mpfr_pow(r27714, r27711, r27713, MPFR_RNDN);
        mpfr_set_d(r27715, b, MPFR_RNDN);
        ;
        mpfr_add(r27717, r27715, r27716, MPFR_RNDN);
        mpfr_set_d(r27718, y, MPFR_RNDN);
        mpfr_set_d(r27719, z, MPFR_RNDN);
        mpfr_log(r27720, r27719, MPFR_RNDN);
        mpfr_mul(r27721, r27718, r27720, MPFR_RNDN);
        mpfr_sub(r27722, r27717, r27721, MPFR_RNDN);
        mpfr_div(r27723, r27714, r27722, MPFR_RNDN);
        mpfr_mul(r27724, r27710, r27723, MPFR_RNDN);
        mpfr_div(r27725, r27724, r27718, MPFR_RNDN);
        ;
        mpfr_set_si(r27727, mpfr_cmp(r27707, r27726) <= 0, MPFR_RNDN);
        mpfr_div(r27728, r27710, r27718, MPFR_RNDN);
        mpfr_mul(r27729, r27720, r27718, MPFR_RNDN);
        mpfr_sub(r27730, r27715, r27729, MPFR_RNDN);
        mpfr_exp(r27731, r27730, MPFR_RNDN);
        mpfr_div(r27732, r27714, r27731, MPFR_RNDN);
        mpfr_mul(r27733, r27728, r27732, MPFR_RNDN);
        if (mpfr_get_si(r27727, MPFR_RNDN)) { mpfr_set(r27734, r27733, MPFR_RNDN); } else { mpfr_set(r27734, r27725, MPFR_RNDN); };
        if (mpfr_get_si(r27709, MPFR_RNDN)) { mpfr_set(r27735, r27725, MPFR_RNDN); } else { mpfr_set(r27735, r27734, MPFR_RNDN); };
        return mpfr_get_d(r27735, MPFR_RNDN);
}

static mpfr_t r27736, r27737, r27738, r27739, r27740, r27741, r27742, r27743, r27744, r27745, r27746, r27747, r27748, r27749, r27750, r27751, r27752, r27753, r27754, r27755, r27756, r27757, r27758, r27759, r27760, r27761, r27762, r27763, r27764;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r27736);
        mpfr_init_set_str(r27737, "-1506913298432.609", 10, MPFR_RNDN);
        mpfr_init(r27738);
        mpfr_init(r27739);
        mpfr_init(r27740);
        mpfr_init_set_str(r27741, "1.0", 10, MPFR_RNDN);
        mpfr_init(r27742);
        mpfr_init(r27743);
        mpfr_init(r27744);
        mpfr_init_set_str(r27745, "1", 10, MPFR_RNDN);
        mpfr_init(r27746);
        mpfr_init(r27747);
        mpfr_init(r27748);
        mpfr_init(r27749);
        mpfr_init(r27750);
        mpfr_init(r27751);
        mpfr_init(r27752);
        mpfr_init(r27753);
        mpfr_init(r27754);
        mpfr_init_set_str(r27755, "1.2421398212208342e-102", 10, MPFR_RNDN);
        mpfr_init(r27756);
        mpfr_init(r27757);
        mpfr_init(r27758);
        mpfr_init(r27759);
        mpfr_init(r27760);
        mpfr_init(r27761);
        mpfr_init(r27762);
        mpfr_init(r27763);
        mpfr_init(r27764);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r27736, t, MPFR_RNDN);
        ;
        mpfr_set_si(r27738, mpfr_cmp(r27736, r27737) <= 0, MPFR_RNDN);
        mpfr_set_d(r27739, x, MPFR_RNDN);
        mpfr_set_d(r27740, a, MPFR_RNDN);
        ;
        mpfr_sub(r27742, r27736, r27741, MPFR_RNDN);
        mpfr_pow(r27743, r27740, r27742, MPFR_RNDN);
        mpfr_set_d(r27744, b, MPFR_RNDN);
        ;
        mpfr_add(r27746, r27744, r27745, MPFR_RNDN);
        mpfr_set_d(r27747, y, MPFR_RNDN);
        mpfr_set_d(r27748, z, MPFR_RNDN);
        mpfr_log(r27749, r27748, MPFR_RNDN);
        mpfr_mul(r27750, r27747, r27749, MPFR_RNDN);
        mpfr_sub(r27751, r27746, r27750, MPFR_RNDN);
        mpfr_div(r27752, r27743, r27751, MPFR_RNDN);
        mpfr_mul(r27753, r27739, r27752, MPFR_RNDN);
        mpfr_div(r27754, r27753, r27747, MPFR_RNDN);
        ;
        mpfr_set_si(r27756, mpfr_cmp(r27736, r27755) <= 0, MPFR_RNDN);
        mpfr_div(r27757, r27739, r27747, MPFR_RNDN);
        mpfr_mul(r27758, r27749, r27747, MPFR_RNDN);
        mpfr_sub(r27759, r27744, r27758, MPFR_RNDN);
        mpfr_exp(r27760, r27759, MPFR_RNDN);
        mpfr_div(r27761, r27743, r27760, MPFR_RNDN);
        mpfr_mul(r27762, r27757, r27761, MPFR_RNDN);
        if (mpfr_get_si(r27756, MPFR_RNDN)) { mpfr_set(r27763, r27762, MPFR_RNDN); } else { mpfr_set(r27763, r27754, MPFR_RNDN); };
        if (mpfr_get_si(r27738, MPFR_RNDN)) { mpfr_set(r27764, r27754, MPFR_RNDN); } else { mpfr_set(r27764, r27763, MPFR_RNDN); };
        return mpfr_get_d(r27764, MPFR_RNDN);
}

