#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 r25574 = x;
        float r25575 = y;
        float r25576 = z;
        float r25577 = log(r25576);
        float r25578 = r25575 * r25577;
        float r25579 = t;
        float r25580 = 1.0;
        float r25581 = r25579 - r25580;
        float r25582 = a;
        float r25583 = log(r25582);
        float r25584 = r25581 * r25583;
        float r25585 = r25578 + r25584;
        float r25586 = b;
        float r25587 = r25585 - r25586;
        float r25588 = exp(r25587);
        float r25589 = r25574 * r25588;
        float r25590 = r25589 / r25575;
        return r25590;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r25591 = x;
        double r25592 = y;
        double r25593 = z;
        double r25594 = log(r25593);
        double r25595 = r25592 * r25594;
        double r25596 = t;
        double r25597 = 1.0;
        double r25598 = r25596 - r25597;
        double r25599 = a;
        double r25600 = log(r25599);
        double r25601 = r25598 * r25600;
        double r25602 = r25595 + r25601;
        double r25603 = b;
        double r25604 = r25602 - r25603;
        double r25605 = exp(r25604);
        double r25606 = r25591 * r25605;
        double r25607 = r25606 / r25592;
        return r25607;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r25608 = a;
        float r25609 = t;
        float r25610 = 1.0;
        float r25611 = r25609 - r25610;
        float r25612 = pow(r25608, r25611);
        float r25613 = b;
        float r25614 = exp(r25613);
        float r25615 = r25612 / r25614;
        float r25616 = 1.8137471594957846e-278;
        bool r25617 = r25615 <= r25616;
        float r25618 = 1.0459909917573926e+295;
        bool r25619 = r25615 <= r25618;
        float r25620 = !r25619;
        bool r25621 = r25617 || r25620;
        float r25622 = y;
        float r25623 = z;
        float r25624 = log(r25623);
        float r25625 = r25622 * r25624;
        float r25626 = log(r25608);
        float r25627 = r25626 * r25611;
        float r25628 = r25625 + r25627;
        float r25629 = r25628 - r25613;
        float r25630 = cbrt(r25629);
        float r25631 = r25630 * r25630;
        float r25632 = exp(r25631);
        float r25633 = pow(r25632, r25630);
        float r25634 = x;
        float r25635 = r25633 * r25634;
        float r25636 = r25635 / r25622;
        float r25637 = pow(r25623, r25622);
        float r25638 = r25622 / r25634;
        float r25639 = r25637 / r25638;
        float r25640 = r25615 * r25639;
        float r25641 = r25621 ? r25636 : r25640;
        return r25641;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r25642 = a;
        double r25643 = t;
        double r25644 = 1.0;
        double r25645 = r25643 - r25644;
        double r25646 = pow(r25642, r25645);
        double r25647 = b;
        double r25648 = exp(r25647);
        double r25649 = r25646 / r25648;
        double r25650 = 1.8137471594957846e-278;
        bool r25651 = r25649 <= r25650;
        double r25652 = 1.0459909917573926e+295;
        bool r25653 = r25649 <= r25652;
        double r25654 = !r25653;
        bool r25655 = r25651 || r25654;
        double r25656 = y;
        double r25657 = z;
        double r25658 = log(r25657);
        double r25659 = r25656 * r25658;
        double r25660 = log(r25642);
        double r25661 = r25660 * r25645;
        double r25662 = r25659 + r25661;
        double r25663 = r25662 - r25647;
        double r25664 = cbrt(r25663);
        double r25665 = r25664 * r25664;
        double r25666 = exp(r25665);
        double r25667 = pow(r25666, r25664);
        double r25668 = x;
        double r25669 = r25667 * r25668;
        double r25670 = r25669 / r25656;
        double r25671 = pow(r25657, r25656);
        double r25672 = r25656 / r25668;
        double r25673 = r25671 / r25672;
        double r25674 = r25649 * r25673;
        double r25675 = r25655 ? r25670 : r25674;
        return r25675;
}

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 r25676, r25677, r25678, r25679, r25680, r25681, r25682, r25683, r25684, r25685, r25686, r25687, r25688, r25689, r25690, r25691, r25692;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r25676);
        mpfr_init(r25677);
        mpfr_init(r25678);
        mpfr_init(r25679);
        mpfr_init(r25680);
        mpfr_init(r25681);
        mpfr_init_set_str(r25682, "1.0", 10, MPFR_RNDN);
        mpfr_init(r25683);
        mpfr_init(r25684);
        mpfr_init(r25685);
        mpfr_init(r25686);
        mpfr_init(r25687);
        mpfr_init(r25688);
        mpfr_init(r25689);
        mpfr_init(r25690);
        mpfr_init(r25691);
        mpfr_init(r25692);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r25676, x, MPFR_RNDN);
        mpfr_set_d(r25677, y, MPFR_RNDN);
        mpfr_set_d(r25678, z, MPFR_RNDN);
        mpfr_log(r25679, r25678, MPFR_RNDN);
        mpfr_mul(r25680, r25677, r25679, MPFR_RNDN);
        mpfr_set_d(r25681, t, MPFR_RNDN);
        ;
        mpfr_sub(r25683, r25681, r25682, MPFR_RNDN);
        mpfr_set_d(r25684, a, MPFR_RNDN);
        mpfr_log(r25685, r25684, MPFR_RNDN);
        mpfr_mul(r25686, r25683, r25685, MPFR_RNDN);
        mpfr_add(r25687, r25680, r25686, MPFR_RNDN);
        mpfr_set_d(r25688, b, MPFR_RNDN);
        mpfr_sub(r25689, r25687, r25688, MPFR_RNDN);
        mpfr_exp(r25690, r25689, MPFR_RNDN);
        mpfr_mul(r25691, r25676, r25690, MPFR_RNDN);
        mpfr_div(r25692, r25691, r25677, MPFR_RNDN);
        return mpfr_get_d(r25692, MPFR_RNDN);
}

static mpfr_t r25693, r25694, r25695, r25696, r25697, r25698, r25699, r25700, r25701, r25702, r25703, r25704, r25705, r25706, r25707, r25708, r25709, r25710, r25711, r25712, r25713, r25714, r25715, r25716, r25717, r25718, r25719, r25720, r25721, r25722, r25723, r25724, r25725, r25726;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r25693);
        mpfr_init(r25694);
        mpfr_init_set_str(r25695, "1.0", 10, MPFR_RNDN);
        mpfr_init(r25696);
        mpfr_init(r25697);
        mpfr_init(r25698);
        mpfr_init(r25699);
        mpfr_init(r25700);
        mpfr_init_set_str(r25701, "1.8137471594957846e-278", 10, MPFR_RNDN);
        mpfr_init(r25702);
        mpfr_init_set_str(r25703, "1.0459909917573926e+295", 10, MPFR_RNDN);
        mpfr_init(r25704);
        mpfr_init(r25705);
        mpfr_init(r25706);
        mpfr_init(r25707);
        mpfr_init(r25708);
        mpfr_init(r25709);
        mpfr_init(r25710);
        mpfr_init(r25711);
        mpfr_init(r25712);
        mpfr_init(r25713);
        mpfr_init(r25714);
        mpfr_init(r25715);
        mpfr_init(r25716);
        mpfr_init(r25717);
        mpfr_init(r25718);
        mpfr_init(r25719);
        mpfr_init(r25720);
        mpfr_init(r25721);
        mpfr_init(r25722);
        mpfr_init(r25723);
        mpfr_init(r25724);
        mpfr_init(r25725);
        mpfr_init(r25726);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r25693, a, MPFR_RNDN);
        mpfr_set_d(r25694, t, MPFR_RNDN);
        ;
        mpfr_sub(r25696, r25694, r25695, MPFR_RNDN);
        mpfr_pow(r25697, r25693, r25696, MPFR_RNDN);
        mpfr_set_d(r25698, b, MPFR_RNDN);
        mpfr_exp(r25699, r25698, MPFR_RNDN);
        mpfr_div(r25700, r25697, r25699, MPFR_RNDN);
        ;
        mpfr_set_si(r25702, mpfr_cmp(r25700, r25701) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r25704, mpfr_cmp(r25700, r25703) <= 0, MPFR_RNDN);
        mpfr_set_si(r25705, !mpfr_get_si(r25704, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r25706, mpfr_get_si(r25702, MPFR_RNDN) || mpfr_get_si(r25705, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_d(r25707, y, MPFR_RNDN);
        mpfr_set_d(r25708, z, MPFR_RNDN);
        mpfr_log(r25709, r25708, MPFR_RNDN);
        mpfr_mul(r25710, r25707, r25709, MPFR_RNDN);
        mpfr_log(r25711, r25693, MPFR_RNDN);
        mpfr_mul(r25712, r25711, r25696, MPFR_RNDN);
        mpfr_add(r25713, r25710, r25712, MPFR_RNDN);
        mpfr_sub(r25714, r25713, r25698, MPFR_RNDN);
        mpfr_cbrt(r25715, r25714, MPFR_RNDN);
        mpfr_mul(r25716, r25715, r25715, MPFR_RNDN);
        mpfr_exp(r25717, r25716, MPFR_RNDN);
        mpfr_pow(r25718, r25717, r25715, MPFR_RNDN);
        mpfr_set_d(r25719, x, MPFR_RNDN);
        mpfr_mul(r25720, r25718, r25719, MPFR_RNDN);
        mpfr_div(r25721, r25720, r25707, MPFR_RNDN);
        mpfr_pow(r25722, r25708, r25707, MPFR_RNDN);
        mpfr_div(r25723, r25707, r25719, MPFR_RNDN);
        mpfr_div(r25724, r25722, r25723, MPFR_RNDN);
        mpfr_mul(r25725, r25700, r25724, MPFR_RNDN);
        if (mpfr_get_si(r25706, MPFR_RNDN)) { mpfr_set(r25726, r25721, MPFR_RNDN); } else { mpfr_set(r25726, r25725, MPFR_RNDN); };
        return mpfr_get_d(r25726, MPFR_RNDN);
}

static mpfr_t r25727, r25728, r25729, r25730, r25731, r25732, r25733, r25734, r25735, r25736, r25737, r25738, r25739, r25740, r25741, r25742, r25743, r25744, r25745, r25746, r25747, r25748, r25749, r25750, r25751, r25752, r25753, r25754, r25755, r25756, r25757, r25758, r25759, r25760;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r25727);
        mpfr_init(r25728);
        mpfr_init_set_str(r25729, "1.0", 10, MPFR_RNDN);
        mpfr_init(r25730);
        mpfr_init(r25731);
        mpfr_init(r25732);
        mpfr_init(r25733);
        mpfr_init(r25734);
        mpfr_init_set_str(r25735, "1.8137471594957846e-278", 10, MPFR_RNDN);
        mpfr_init(r25736);
        mpfr_init_set_str(r25737, "1.0459909917573926e+295", 10, MPFR_RNDN);
        mpfr_init(r25738);
        mpfr_init(r25739);
        mpfr_init(r25740);
        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(r25750);
        mpfr_init(r25751);
        mpfr_init(r25752);
        mpfr_init(r25753);
        mpfr_init(r25754);
        mpfr_init(r25755);
        mpfr_init(r25756);
        mpfr_init(r25757);
        mpfr_init(r25758);
        mpfr_init(r25759);
        mpfr_init(r25760);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r25727, a, MPFR_RNDN);
        mpfr_set_d(r25728, t, MPFR_RNDN);
        ;
        mpfr_sub(r25730, r25728, r25729, MPFR_RNDN);
        mpfr_pow(r25731, r25727, r25730, MPFR_RNDN);
        mpfr_set_d(r25732, b, MPFR_RNDN);
        mpfr_exp(r25733, r25732, MPFR_RNDN);
        mpfr_div(r25734, r25731, r25733, MPFR_RNDN);
        ;
        mpfr_set_si(r25736, mpfr_cmp(r25734, r25735) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r25738, mpfr_cmp(r25734, r25737) <= 0, MPFR_RNDN);
        mpfr_set_si(r25739, !mpfr_get_si(r25738, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r25740, mpfr_get_si(r25736, MPFR_RNDN) || mpfr_get_si(r25739, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_d(r25741, y, MPFR_RNDN);
        mpfr_set_d(r25742, z, MPFR_RNDN);
        mpfr_log(r25743, r25742, MPFR_RNDN);
        mpfr_mul(r25744, r25741, r25743, MPFR_RNDN);
        mpfr_log(r25745, r25727, MPFR_RNDN);
        mpfr_mul(r25746, r25745, r25730, MPFR_RNDN);
        mpfr_add(r25747, r25744, r25746, MPFR_RNDN);
        mpfr_sub(r25748, r25747, r25732, MPFR_RNDN);
        mpfr_cbrt(r25749, r25748, MPFR_RNDN);
        mpfr_mul(r25750, r25749, r25749, MPFR_RNDN);
        mpfr_exp(r25751, r25750, MPFR_RNDN);
        mpfr_pow(r25752, r25751, r25749, MPFR_RNDN);
        mpfr_set_d(r25753, x, MPFR_RNDN);
        mpfr_mul(r25754, r25752, r25753, MPFR_RNDN);
        mpfr_div(r25755, r25754, r25741, MPFR_RNDN);
        mpfr_pow(r25756, r25742, r25741, MPFR_RNDN);
        mpfr_div(r25757, r25741, r25753, MPFR_RNDN);
        mpfr_div(r25758, r25756, r25757, MPFR_RNDN);
        mpfr_mul(r25759, r25734, r25758, MPFR_RNDN);
        if (mpfr_get_si(r25740, MPFR_RNDN)) { mpfr_set(r25760, r25755, MPFR_RNDN); } else { mpfr_set(r25760, r25759, MPFR_RNDN); };
        return mpfr_get_d(r25760, MPFR_RNDN);
}

