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

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

double f_if(float x, float y, float z) {
        float r43633 = x;
        float r43634 = y;
        float r43635 = z;
        float r43636 = r43635 + r43634;
        float r43637 = r43634 / r43636;
        float r43638 = log(r43637);
        float r43639 = r43634 * r43638;
        float r43640 = exp(r43639);
        float r43641 = r43640 / r43634;
        float r43642 = r43633 + r43641;
        return r43642;
}

double f_id(double x, double y, double z) {
        double r43643 = x;
        double r43644 = y;
        double r43645 = z;
        double r43646 = r43645 + r43644;
        double r43647 = r43644 / r43646;
        double r43648 = log(r43647);
        double r43649 = r43644 * r43648;
        double r43650 = exp(r43649);
        double r43651 = r43650 / r43644;
        double r43652 = r43643 + r43651;
        return r43652;
}


double f_of(float x, float y, float z) {
        float r43653 = y;
        float r43654 = z;
        float r43655 = r43654 + r43653;
        float r43656 = r43653 / r43655;
        float r43657 = 1.8088301588428e-317;
        bool r43658 = r43656 <= r43657;
        float r43659 = 1;
        float r43660 = r43659 / r43654;
        float r43661 = -r43660;
        float r43662 = exp(r43661);
        float r43663 = r43662 / r43653;
        float r43664 = x;
        float r43665 = r43663 + r43664;
        float r43666 = pow(r43656, r43653);
        float r43667 = 3;
        float r43668 = pow(r43666, r43667);
        float r43669 = cbrt(r43668);
        float r43670 = r43669 / r43653;
        float r43671 = r43670 + r43664;
        float r43672 = r43658 ? r43665 : r43671;
        return r43672;
}

double f_od(double x, double y, double z) {
        double r43673 = y;
        double r43674 = z;
        double r43675 = r43674 + r43673;
        double r43676 = r43673 / r43675;
        double r43677 = 1.8088301588428e-317;
        bool r43678 = r43676 <= r43677;
        double r43679 = 1;
        double r43680 = r43679 / r43674;
        double r43681 = -r43680;
        double r43682 = exp(r43681);
        double r43683 = r43682 / r43673;
        double r43684 = x;
        double r43685 = r43683 + r43684;
        double r43686 = pow(r43676, r43673);
        double r43687 = 3;
        double r43688 = pow(r43686, r43687);
        double r43689 = cbrt(r43688);
        double r43690 = r43689 / r43673;
        double r43691 = r43690 + r43684;
        double r43692 = r43678 ? r43685 : r43691;
        return r43692;
}

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 r43693, r43694, r43695, r43696, r43697, r43698, r43699, r43700, r43701, r43702;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r43693);
        mpfr_init(r43694);
        mpfr_init(r43695);
        mpfr_init(r43696);
        mpfr_init(r43697);
        mpfr_init(r43698);
        mpfr_init(r43699);
        mpfr_init(r43700);
        mpfr_init(r43701);
        mpfr_init(r43702);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r43693, x, MPFR_RNDN);
        mpfr_set_d(r43694, y, MPFR_RNDN);
        mpfr_set_d(r43695, z, MPFR_RNDN);
        mpfr_add(r43696, r43695, r43694, MPFR_RNDN);
        mpfr_div(r43697, r43694, r43696, MPFR_RNDN);
        mpfr_log(r43698, r43697, MPFR_RNDN);
        mpfr_mul(r43699, r43694, r43698, MPFR_RNDN);
        mpfr_exp(r43700, r43699, MPFR_RNDN);
        mpfr_div(r43701, r43700, r43694, MPFR_RNDN);
        mpfr_add(r43702, r43693, r43701, MPFR_RNDN);
        return mpfr_get_d(r43702, MPFR_RNDN);
}

static mpfr_t r43703, r43704, r43705, r43706, r43707, r43708, r43709, r43710, r43711, r43712, r43713, r43714, r43715, r43716, r43717, r43718, r43719, r43720, r43721, r43722;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r43703);
        mpfr_init(r43704);
        mpfr_init(r43705);
        mpfr_init(r43706);
        mpfr_init_set_str(r43707, "1.8088301588428e-317", 10, MPFR_RNDN);
        mpfr_init(r43708);
        mpfr_init_set_str(r43709, "1", 10, MPFR_RNDN);
        mpfr_init(r43710);
        mpfr_init(r43711);
        mpfr_init(r43712);
        mpfr_init(r43713);
        mpfr_init(r43714);
        mpfr_init(r43715);
        mpfr_init(r43716);
        mpfr_init_set_str(r43717, "3", 10, MPFR_RNDN);
        mpfr_init(r43718);
        mpfr_init(r43719);
        mpfr_init(r43720);
        mpfr_init(r43721);
        mpfr_init(r43722);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r43703, y, MPFR_RNDN);
        mpfr_set_d(r43704, z, MPFR_RNDN);
        mpfr_add(r43705, r43704, r43703, MPFR_RNDN);
        mpfr_div(r43706, r43703, r43705, MPFR_RNDN);
        ;
        mpfr_set_si(r43708, mpfr_cmp(r43706, r43707) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r43710, r43709, r43704, MPFR_RNDN);
        mpfr_neg(r43711, r43710, MPFR_RNDN);
        mpfr_exp(r43712, r43711, MPFR_RNDN);
        mpfr_div(r43713, r43712, r43703, MPFR_RNDN);
        mpfr_set_d(r43714, x, MPFR_RNDN);
        mpfr_add(r43715, r43713, r43714, MPFR_RNDN);
        mpfr_pow(r43716, r43706, r43703, MPFR_RNDN);
        ;
        mpfr_pow(r43718, r43716, r43717, MPFR_RNDN);
        mpfr_cbrt(r43719, r43718, MPFR_RNDN);
        mpfr_div(r43720, r43719, r43703, MPFR_RNDN);
        mpfr_add(r43721, r43720, r43714, MPFR_RNDN);
        if (mpfr_get_si(r43708, MPFR_RNDN)) { mpfr_set(r43722, r43715, MPFR_RNDN); } else { mpfr_set(r43722, r43721, MPFR_RNDN); };
        return mpfr_get_d(r43722, MPFR_RNDN);
}

static mpfr_t r43723, r43724, r43725, r43726, r43727, r43728, r43729, r43730, r43731, r43732, r43733, r43734, r43735, r43736, r43737, r43738, r43739, r43740, r43741, r43742;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r43723);
        mpfr_init(r43724);
        mpfr_init(r43725);
        mpfr_init(r43726);
        mpfr_init_set_str(r43727, "1.8088301588428e-317", 10, MPFR_RNDN);
        mpfr_init(r43728);
        mpfr_init_set_str(r43729, "1", 10, MPFR_RNDN);
        mpfr_init(r43730);
        mpfr_init(r43731);
        mpfr_init(r43732);
        mpfr_init(r43733);
        mpfr_init(r43734);
        mpfr_init(r43735);
        mpfr_init(r43736);
        mpfr_init_set_str(r43737, "3", 10, MPFR_RNDN);
        mpfr_init(r43738);
        mpfr_init(r43739);
        mpfr_init(r43740);
        mpfr_init(r43741);
        mpfr_init(r43742);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r43723, y, MPFR_RNDN);
        mpfr_set_d(r43724, z, MPFR_RNDN);
        mpfr_add(r43725, r43724, r43723, MPFR_RNDN);
        mpfr_div(r43726, r43723, r43725, MPFR_RNDN);
        ;
        mpfr_set_si(r43728, mpfr_cmp(r43726, r43727) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r43730, r43729, r43724, MPFR_RNDN);
        mpfr_neg(r43731, r43730, MPFR_RNDN);
        mpfr_exp(r43732, r43731, MPFR_RNDN);
        mpfr_div(r43733, r43732, r43723, MPFR_RNDN);
        mpfr_set_d(r43734, x, MPFR_RNDN);
        mpfr_add(r43735, r43733, r43734, MPFR_RNDN);
        mpfr_pow(r43736, r43726, r43723, MPFR_RNDN);
        ;
        mpfr_pow(r43738, r43736, r43737, MPFR_RNDN);
        mpfr_cbrt(r43739, r43738, MPFR_RNDN);
        mpfr_div(r43740, r43739, r43723, MPFR_RNDN);
        mpfr_add(r43741, r43740, r43734, MPFR_RNDN);
        if (mpfr_get_si(r43728, MPFR_RNDN)) { mpfr_set(r43742, r43735, MPFR_RNDN); } else { mpfr_set(r43742, r43741, MPFR_RNDN); };
        return mpfr_get_d(r43742, MPFR_RNDN);
}

