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

double f_if(float x, float y) {
        float r43581 = x;
        float r43582 = y;
        float r43583 = r43581 + r43582;
        float r43584 = r43581 / r43583;
        float r43585 = log(r43584);
        float r43586 = r43581 * r43585;
        float r43587 = exp(r43586);
        float r43588 = r43587 / r43581;
        return r43588;
}

double f_id(double x, double y) {
        double r43589 = x;
        double r43590 = y;
        double r43591 = r43589 + r43590;
        double r43592 = r43589 / r43591;
        double r43593 = log(r43592);
        double r43594 = r43589 * r43593;
        double r43595 = exp(r43594);
        double r43596 = r43595 / r43589;
        return r43596;
}


double f_of(float x, float y) {
        float r43597 = y;
        float r43598 = -1.236076699891847e+90;
        bool r43599 = r43597 <= r43598;
        float r43600 = 1;
        float r43601 = r43600 / r43597;
        float r43602 = -r43601;
        float r43603 = exp(r43602);
        float r43604 = x;
        float r43605 = r43603 / r43604;
        float r43606 = 1056507017731.9486;
        bool r43607 = r43597 <= r43606;
        float r43608 = r43597 + r43604;
        float r43609 = r43604 / r43608;
        float r43610 = pow(r43609, r43604);
        float r43611 = r43610 / r43604;
        float r43612 = exp(r43611);
        float r43613 = log(r43612);
        float r43614 = r43607 ? r43611 : r43613;
        float r43615 = r43599 ? r43605 : r43614;
        return r43615;
}

double f_od(double x, double y) {
        double r43616 = y;
        double r43617 = -1.236076699891847e+90;
        bool r43618 = r43616 <= r43617;
        double r43619 = 1;
        double r43620 = r43619 / r43616;
        double r43621 = -r43620;
        double r43622 = exp(r43621);
        double r43623 = x;
        double r43624 = r43622 / r43623;
        double r43625 = 1056507017731.9486;
        bool r43626 = r43616 <= r43625;
        double r43627 = r43616 + r43623;
        double r43628 = r43623 / r43627;
        double r43629 = pow(r43628, r43623);
        double r43630 = r43629 / r43623;
        double r43631 = exp(r43630);
        double r43632 = log(r43631);
        double r43633 = r43626 ? r43630 : r43632;
        double r43634 = r43618 ? r43624 : r43633;
        return r43634;
}

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 r43635, r43636, r43637, r43638, r43639, r43640, r43641, r43642;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r43635);
        mpfr_init(r43636);
        mpfr_init(r43637);
        mpfr_init(r43638);
        mpfr_init(r43639);
        mpfr_init(r43640);
        mpfr_init(r43641);
        mpfr_init(r43642);
}

double f_im(double x, double y) {
        mpfr_set_d(r43635, x, MPFR_RNDN);
        mpfr_set_d(r43636, y, MPFR_RNDN);
        mpfr_add(r43637, r43635, r43636, MPFR_RNDN);
        mpfr_div(r43638, r43635, r43637, MPFR_RNDN);
        mpfr_log(r43639, r43638, MPFR_RNDN);
        mpfr_mul(r43640, r43635, r43639, MPFR_RNDN);
        mpfr_exp(r43641, r43640, MPFR_RNDN);
        mpfr_div(r43642, r43641, r43635, MPFR_RNDN);
        return mpfr_get_d(r43642, MPFR_RNDN);
}

static mpfr_t r43643, r43644, r43645, r43646, r43647, r43648, r43649, r43650, r43651, r43652, r43653, r43654, r43655, r43656, r43657, r43658, r43659, r43660, r43661;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r43643);
        mpfr_init_set_str(r43644, "-1.236076699891847e+90", 10, MPFR_RNDN);
        mpfr_init(r43645);
        mpfr_init_set_str(r43646, "1", 10, MPFR_RNDN);
        mpfr_init(r43647);
        mpfr_init(r43648);
        mpfr_init(r43649);
        mpfr_init(r43650);
        mpfr_init(r43651);
        mpfr_init_set_str(r43652, "1056507017731.9486", 10, MPFR_RNDN);
        mpfr_init(r43653);
        mpfr_init(r43654);
        mpfr_init(r43655);
        mpfr_init(r43656);
        mpfr_init(r43657);
        mpfr_init(r43658);
        mpfr_init(r43659);
        mpfr_init(r43660);
        mpfr_init(r43661);
}

double f_fm(double x, double y) {
        mpfr_set_d(r43643, y, MPFR_RNDN);
        ;
        mpfr_set_si(r43645, mpfr_cmp(r43643, r43644) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r43647, r43646, r43643, MPFR_RNDN);
        mpfr_neg(r43648, r43647, MPFR_RNDN);
        mpfr_exp(r43649, r43648, MPFR_RNDN);
        mpfr_set_d(r43650, x, MPFR_RNDN);
        mpfr_div(r43651, r43649, r43650, MPFR_RNDN);
        ;
        mpfr_set_si(r43653, mpfr_cmp(r43643, r43652) <= 0, MPFR_RNDN);
        mpfr_add(r43654, r43643, r43650, MPFR_RNDN);
        mpfr_div(r43655, r43650, r43654, MPFR_RNDN);
        mpfr_pow(r43656, r43655, r43650, MPFR_RNDN);
        mpfr_div(r43657, r43656, r43650, MPFR_RNDN);
        mpfr_exp(r43658, r43657, MPFR_RNDN);
        mpfr_log(r43659, r43658, MPFR_RNDN);
        if (mpfr_get_si(r43653, MPFR_RNDN)) { mpfr_set(r43660, r43657, MPFR_RNDN); } else { mpfr_set(r43660, r43659, MPFR_RNDN); };
        if (mpfr_get_si(r43645, MPFR_RNDN)) { mpfr_set(r43661, r43651, MPFR_RNDN); } else { mpfr_set(r43661, r43660, MPFR_RNDN); };
        return mpfr_get_d(r43661, MPFR_RNDN);
}

static mpfr_t r43662, r43663, r43664, r43665, r43666, r43667, r43668, r43669, r43670, r43671, r43672, r43673, r43674, r43675, r43676, r43677, r43678, r43679, r43680;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r43662);
        mpfr_init_set_str(r43663, "-1.236076699891847e+90", 10, MPFR_RNDN);
        mpfr_init(r43664);
        mpfr_init_set_str(r43665, "1", 10, MPFR_RNDN);
        mpfr_init(r43666);
        mpfr_init(r43667);
        mpfr_init(r43668);
        mpfr_init(r43669);
        mpfr_init(r43670);
        mpfr_init_set_str(r43671, "1056507017731.9486", 10, MPFR_RNDN);
        mpfr_init(r43672);
        mpfr_init(r43673);
        mpfr_init(r43674);
        mpfr_init(r43675);
        mpfr_init(r43676);
        mpfr_init(r43677);
        mpfr_init(r43678);
        mpfr_init(r43679);
        mpfr_init(r43680);
}

double f_dm(double x, double y) {
        mpfr_set_d(r43662, y, MPFR_RNDN);
        ;
        mpfr_set_si(r43664, mpfr_cmp(r43662, r43663) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r43666, r43665, r43662, MPFR_RNDN);
        mpfr_neg(r43667, r43666, MPFR_RNDN);
        mpfr_exp(r43668, r43667, MPFR_RNDN);
        mpfr_set_d(r43669, x, MPFR_RNDN);
        mpfr_div(r43670, r43668, r43669, MPFR_RNDN);
        ;
        mpfr_set_si(r43672, mpfr_cmp(r43662, r43671) <= 0, MPFR_RNDN);
        mpfr_add(r43673, r43662, r43669, MPFR_RNDN);
        mpfr_div(r43674, r43669, r43673, MPFR_RNDN);
        mpfr_pow(r43675, r43674, r43669, MPFR_RNDN);
        mpfr_div(r43676, r43675, r43669, MPFR_RNDN);
        mpfr_exp(r43677, r43676, MPFR_RNDN);
        mpfr_log(r43678, r43677, MPFR_RNDN);
        if (mpfr_get_si(r43672, MPFR_RNDN)) { mpfr_set(r43679, r43676, MPFR_RNDN); } else { mpfr_set(r43679, r43678, MPFR_RNDN); };
        if (mpfr_get_si(r43664, MPFR_RNDN)) { mpfr_set(r43680, r43670, MPFR_RNDN); } else { mpfr_set(r43680, r43679, MPFR_RNDN); };
        return mpfr_get_d(r43680, MPFR_RNDN);
}

