#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 r25630 = x;
        float r25631 = y;
        float r25632 = z;
        float r25633 = log(r25632);
        float r25634 = r25631 * r25633;
        float r25635 = t;
        float r25636 = 1.0;
        float r25637 = r25635 - r25636;
        float r25638 = a;
        float r25639 = log(r25638);
        float r25640 = r25637 * r25639;
        float r25641 = r25634 + r25640;
        float r25642 = b;
        float r25643 = r25641 - r25642;
        float r25644 = exp(r25643);
        float r25645 = r25630 * r25644;
        float r25646 = r25645 / r25631;
        return r25646;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r25647 = x;
        double r25648 = y;
        double r25649 = z;
        double r25650 = log(r25649);
        double r25651 = r25648 * r25650;
        double r25652 = t;
        double r25653 = 1.0;
        double r25654 = r25652 - r25653;
        double r25655 = a;
        double r25656 = log(r25655);
        double r25657 = r25654 * r25656;
        double r25658 = r25651 + r25657;
        double r25659 = b;
        double r25660 = r25658 - r25659;
        double r25661 = exp(r25660);
        double r25662 = r25647 * r25661;
        double r25663 = r25662 / r25648;
        return r25663;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r25664 = z;
        float r25665 = y;
        float r25666 = pow(r25664, r25665);
        float r25667 = a;
        float r25668 = t;
        float r25669 = pow(r25667, r25668);
        float r25670 = r25666 * r25669;
        float r25671 = x;
        float r25672 = r25670 * r25671;
        float r25673 = 1.0;
        float r25674 = pow(r25667, r25673);
        float r25675 = b;
        float r25676 = exp(r25675);
        float r25677 = r25674 * r25676;
        float r25678 = r25677 * r25665;
        float r25679 = r25672 / r25678;
        float r25680 = 2.079865453438447e+280;
        bool r25681 = r25679 <= r25680;
        float r25682 = exp(1.0);
        float r25683 = r25668 - r25673;
        float r25684 = log(r25667);
        float r25685 = r25683 * r25684;
        float r25686 = log(r25664);
        float r25687 = r25665 * r25686;
        float r25688 = r25685 + r25687;
        float r25689 = r25688 - r25675;
        float r25690 = pow(r25682, r25689);
        float r25691 = r25690 * r25671;
        float r25692 = r25691 / r25665;
        float r25693 = r25681 ? r25679 : r25692;
        return r25693;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r25694 = z;
        double r25695 = y;
        double r25696 = pow(r25694, r25695);
        double r25697 = a;
        double r25698 = t;
        double r25699 = pow(r25697, r25698);
        double r25700 = r25696 * r25699;
        double r25701 = x;
        double r25702 = r25700 * r25701;
        double r25703 = 1.0;
        double r25704 = pow(r25697, r25703);
        double r25705 = b;
        double r25706 = exp(r25705);
        double r25707 = r25704 * r25706;
        double r25708 = r25707 * r25695;
        double r25709 = r25702 / r25708;
        double r25710 = 2.079865453438447e+280;
        bool r25711 = r25709 <= r25710;
        double r25712 = exp(1.0);
        double r25713 = r25698 - r25703;
        double r25714 = log(r25697);
        double r25715 = r25713 * r25714;
        double r25716 = log(r25694);
        double r25717 = r25695 * r25716;
        double r25718 = r25715 + r25717;
        double r25719 = r25718 - r25705;
        double r25720 = pow(r25712, r25719);
        double r25721 = r25720 * r25701;
        double r25722 = r25721 / r25695;
        double r25723 = r25711 ? r25709 : r25722;
        return r25723;
}

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 r25724, r25725, r25726, r25727, r25728, r25729, r25730, r25731, r25732, r25733, r25734, r25735, r25736, r25737, r25738, r25739, r25740;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r25724);
        mpfr_init(r25725);
        mpfr_init(r25726);
        mpfr_init(r25727);
        mpfr_init(r25728);
        mpfr_init(r25729);
        mpfr_init_set_str(r25730, "1.0", 10, MPFR_RNDN);
        mpfr_init(r25731);
        mpfr_init(r25732);
        mpfr_init(r25733);
        mpfr_init(r25734);
        mpfr_init(r25735);
        mpfr_init(r25736);
        mpfr_init(r25737);
        mpfr_init(r25738);
        mpfr_init(r25739);
        mpfr_init(r25740);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r25724, x, MPFR_RNDN);
        mpfr_set_d(r25725, y, MPFR_RNDN);
        mpfr_set_d(r25726, z, MPFR_RNDN);
        mpfr_log(r25727, r25726, MPFR_RNDN);
        mpfr_mul(r25728, r25725, r25727, MPFR_RNDN);
        mpfr_set_d(r25729, t, MPFR_RNDN);
        ;
        mpfr_sub(r25731, r25729, r25730, MPFR_RNDN);
        mpfr_set_d(r25732, a, MPFR_RNDN);
        mpfr_log(r25733, r25732, MPFR_RNDN);
        mpfr_mul(r25734, r25731, r25733, MPFR_RNDN);
        mpfr_add(r25735, r25728, r25734, MPFR_RNDN);
        mpfr_set_d(r25736, b, MPFR_RNDN);
        mpfr_sub(r25737, r25735, r25736, MPFR_RNDN);
        mpfr_exp(r25738, r25737, MPFR_RNDN);
        mpfr_mul(r25739, r25724, r25738, MPFR_RNDN);
        mpfr_div(r25740, r25739, r25725, MPFR_RNDN);
        return mpfr_get_d(r25740, MPFR_RNDN);
}

static mpfr_t r25741, r25742, r25743, r25744, r25745, r25746, r25747, r25748, r25749, r25750, r25751, r25752, r25753, r25754, r25755, r25756, r25757, r25758, r25759, r25760, r25761, r25762, r25763, r25764, r25765, r25766, r25767, r25768, r25769, r25770;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r25741);
        mpfr_init(r25742);
        mpfr_init(r25743);
        mpfr_init(r25744);
        mpfr_init(r25745);
        mpfr_init(r25746);
        mpfr_init(r25747);
        mpfr_init(r25748);
        mpfr_init(r25749);
        mpfr_init_set_str(r25750, "1.0", 10, MPFR_RNDN);
        mpfr_init(r25751);
        mpfr_init(r25752);
        mpfr_init(r25753);
        mpfr_init(r25754);
        mpfr_init(r25755);
        mpfr_init(r25756);
        mpfr_init_set_str(r25757, "2.079865453438447e+280", 10, MPFR_RNDN);
        mpfr_init(r25758);
        mpfr_init(r25759);
        mpfr_init(r25760);
        mpfr_init(r25761);
        mpfr_init(r25762);
        mpfr_init(r25763);
        mpfr_init(r25764);
        mpfr_init(r25765);
        mpfr_init(r25766);
        mpfr_init(r25767);
        mpfr_init(r25768);
        mpfr_init(r25769);
        mpfr_init(r25770);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r25741, z, MPFR_RNDN);
        mpfr_set_d(r25742, y, MPFR_RNDN);
        mpfr_pow(r25743, r25741, r25742, MPFR_RNDN);
        mpfr_set_d(r25744, a, MPFR_RNDN);
        mpfr_set_d(r25745, t, MPFR_RNDN);
        mpfr_pow(r25746, r25744, r25745, MPFR_RNDN);
        mpfr_mul(r25747, r25743, r25746, MPFR_RNDN);
        mpfr_set_d(r25748, x, MPFR_RNDN);
        mpfr_mul(r25749, r25747, r25748, MPFR_RNDN);
        ;
        mpfr_pow(r25751, r25744, r25750, MPFR_RNDN);
        mpfr_set_d(r25752, b, MPFR_RNDN);
        mpfr_exp(r25753, r25752, MPFR_RNDN);
        mpfr_mul(r25754, r25751, r25753, MPFR_RNDN);
        mpfr_mul(r25755, r25754, r25742, MPFR_RNDN);
        mpfr_div(r25756, r25749, r25755, MPFR_RNDN);
        ;
        mpfr_set_si(r25758, mpfr_cmp(r25756, r25757) <= 0, MPFR_RNDN);
        mpfr_set_si(r25759, 1, MPFR_RNDN), mpfr_const_exp(r25759, r25759, MPFR_RNDN);
        mpfr_sub(r25760, r25745, r25750, MPFR_RNDN);
        mpfr_log(r25761, r25744, MPFR_RNDN);
        mpfr_mul(r25762, r25760, r25761, MPFR_RNDN);
        mpfr_log(r25763, r25741, MPFR_RNDN);
        mpfr_mul(r25764, r25742, r25763, MPFR_RNDN);
        mpfr_add(r25765, r25762, r25764, MPFR_RNDN);
        mpfr_sub(r25766, r25765, r25752, MPFR_RNDN);
        mpfr_pow(r25767, r25759, r25766, MPFR_RNDN);
        mpfr_mul(r25768, r25767, r25748, MPFR_RNDN);
        mpfr_div(r25769, r25768, r25742, MPFR_RNDN);
        if (mpfr_get_si(r25758, MPFR_RNDN)) { mpfr_set(r25770, r25756, MPFR_RNDN); } else { mpfr_set(r25770, r25769, MPFR_RNDN); };
        return mpfr_get_d(r25770, MPFR_RNDN);
}

static mpfr_t r25771, r25772, r25773, r25774, r25775, r25776, r25777, r25778, r25779, r25780, r25781, r25782, r25783, r25784, r25785, r25786, r25787, r25788, r25789, r25790, r25791, r25792, r25793, r25794, r25795, r25796, r25797, r25798, r25799, r25800;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r25771);
        mpfr_init(r25772);
        mpfr_init(r25773);
        mpfr_init(r25774);
        mpfr_init(r25775);
        mpfr_init(r25776);
        mpfr_init(r25777);
        mpfr_init(r25778);
        mpfr_init(r25779);
        mpfr_init_set_str(r25780, "1.0", 10, MPFR_RNDN);
        mpfr_init(r25781);
        mpfr_init(r25782);
        mpfr_init(r25783);
        mpfr_init(r25784);
        mpfr_init(r25785);
        mpfr_init(r25786);
        mpfr_init_set_str(r25787, "2.079865453438447e+280", 10, MPFR_RNDN);
        mpfr_init(r25788);
        mpfr_init(r25789);
        mpfr_init(r25790);
        mpfr_init(r25791);
        mpfr_init(r25792);
        mpfr_init(r25793);
        mpfr_init(r25794);
        mpfr_init(r25795);
        mpfr_init(r25796);
        mpfr_init(r25797);
        mpfr_init(r25798);
        mpfr_init(r25799);
        mpfr_init(r25800);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r25771, z, MPFR_RNDN);
        mpfr_set_d(r25772, y, MPFR_RNDN);
        mpfr_pow(r25773, r25771, r25772, MPFR_RNDN);
        mpfr_set_d(r25774, a, MPFR_RNDN);
        mpfr_set_d(r25775, t, MPFR_RNDN);
        mpfr_pow(r25776, r25774, r25775, MPFR_RNDN);
        mpfr_mul(r25777, r25773, r25776, MPFR_RNDN);
        mpfr_set_d(r25778, x, MPFR_RNDN);
        mpfr_mul(r25779, r25777, r25778, MPFR_RNDN);
        ;
        mpfr_pow(r25781, r25774, r25780, MPFR_RNDN);
        mpfr_set_d(r25782, b, MPFR_RNDN);
        mpfr_exp(r25783, r25782, MPFR_RNDN);
        mpfr_mul(r25784, r25781, r25783, MPFR_RNDN);
        mpfr_mul(r25785, r25784, r25772, MPFR_RNDN);
        mpfr_div(r25786, r25779, r25785, MPFR_RNDN);
        ;
        mpfr_set_si(r25788, mpfr_cmp(r25786, r25787) <= 0, MPFR_RNDN);
        mpfr_set_si(r25789, 1, MPFR_RNDN), mpfr_const_exp(r25789, r25789, MPFR_RNDN);
        mpfr_sub(r25790, r25775, r25780, MPFR_RNDN);
        mpfr_log(r25791, r25774, MPFR_RNDN);
        mpfr_mul(r25792, r25790, r25791, MPFR_RNDN);
        mpfr_log(r25793, r25771, MPFR_RNDN);
        mpfr_mul(r25794, r25772, r25793, MPFR_RNDN);
        mpfr_add(r25795, r25792, r25794, MPFR_RNDN);
        mpfr_sub(r25796, r25795, r25782, MPFR_RNDN);
        mpfr_pow(r25797, r25789, r25796, MPFR_RNDN);
        mpfr_mul(r25798, r25797, r25778, MPFR_RNDN);
        mpfr_div(r25799, r25798, r25772, MPFR_RNDN);
        if (mpfr_get_si(r25788, MPFR_RNDN)) { mpfr_set(r25800, r25786, MPFR_RNDN); } else { mpfr_set(r25800, r25799, MPFR_RNDN); };
        return mpfr_get_d(r25800, MPFR_RNDN);
}

