#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 r40622 = x;
        float r40623 = y;
        float r40624 = z;
        float r40625 = r40624 + r40623;
        float r40626 = r40623 / r40625;
        float r40627 = log(r40626);
        float r40628 = r40623 * r40627;
        float r40629 = exp(r40628);
        float r40630 = r40629 / r40623;
        float r40631 = r40622 + r40630;
        return r40631;
}

double f_id(double x, double y, double z) {
        double r40632 = x;
        double r40633 = y;
        double r40634 = z;
        double r40635 = r40634 + r40633;
        double r40636 = r40633 / r40635;
        double r40637 = log(r40636);
        double r40638 = r40633 * r40637;
        double r40639 = exp(r40638);
        double r40640 = r40639 / r40633;
        double r40641 = r40632 + r40640;
        return r40641;
}


double f_of(float x, float y, float z) {
        float r40642 = y;
        float r40643 = z;
        float r40644 = r40643 + r40642;
        float r40645 = r40642 / r40644;
        float r40646 = 5.3881129393563e-317f;
        bool r40647 = r40645 <= r40646;
        float r40648 = 1.0f;
        float r40649 = r40648 / r40642;
        float r40650 = x;
        float r40651 = r40649 + r40650;
        float r40652 = r40643 * r40642;
        float r40653 = r40648 / r40652;
        float r40654 = r40651 - r40653;
        float r40655 = pow(r40645, r40642);
        float r40656 = r40655 / r40642;
        float r40657 = r40656 + r40650;
        float r40658 = r40647 ? r40654 : r40657;
        return r40658;
}

double f_od(double x, double y, double z) {
        double r40659 = y;
        double r40660 = z;
        double r40661 = r40660 + r40659;
        double r40662 = r40659 / r40661;
        double r40663 = 5.3881129393563e-317;
        bool r40664 = r40662 <= r40663;
        double r40665 = 1.0;
        double r40666 = r40665 / r40659;
        double r40667 = x;
        double r40668 = r40666 + r40667;
        double r40669 = r40660 * r40659;
        double r40670 = r40665 / r40669;
        double r40671 = r40668 - r40670;
        double r40672 = pow(r40662, r40659);
        double r40673 = r40672 / r40659;
        double r40674 = r40673 + r40667;
        double r40675 = r40664 ? r40671 : r40674;
        return r40675;
}

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 r40676, r40677, r40678, r40679, r40680, r40681, r40682, r40683, r40684, r40685;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r40676);
        mpfr_init(r40677);
        mpfr_init(r40678);
        mpfr_init(r40679);
        mpfr_init(r40680);
        mpfr_init(r40681);
        mpfr_init(r40682);
        mpfr_init(r40683);
        mpfr_init(r40684);
        mpfr_init(r40685);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r40676, x, MPFR_RNDN);
        mpfr_set_d(r40677, y, MPFR_RNDN);
        mpfr_set_d(r40678, z, MPFR_RNDN);
        mpfr_add(r40679, r40678, r40677, MPFR_RNDN);
        mpfr_div(r40680, r40677, r40679, MPFR_RNDN);
        mpfr_log(r40681, r40680, MPFR_RNDN);
        mpfr_mul(r40682, r40677, r40681, MPFR_RNDN);
        mpfr_exp(r40683, r40682, MPFR_RNDN);
        mpfr_div(r40684, r40683, r40677, MPFR_RNDN);
        mpfr_add(r40685, r40676, r40684, MPFR_RNDN);
        return mpfr_get_d(r40685, MPFR_RNDN);
}

static mpfr_t r40686, r40687, r40688, r40689, r40690, r40691, r40692, r40693, r40694, r40695, r40696, r40697, r40698, r40699, r40700, r40701, r40702;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r40686);
        mpfr_init(r40687);
        mpfr_init(r40688);
        mpfr_init(r40689);
        mpfr_init_set_str(r40690, "5.3881129393563e-317", 10, MPFR_RNDN);
        mpfr_init(r40691);
        mpfr_init_set_str(r40692, "1", 10, MPFR_RNDN);
        mpfr_init(r40693);
        mpfr_init(r40694);
        mpfr_init(r40695);
        mpfr_init(r40696);
        mpfr_init(r40697);
        mpfr_init(r40698);
        mpfr_init(r40699);
        mpfr_init(r40700);
        mpfr_init(r40701);
        mpfr_init(r40702);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r40686, y, MPFR_RNDN);
        mpfr_set_d(r40687, z, MPFR_RNDN);
        mpfr_add(r40688, r40687, r40686, MPFR_RNDN);
        mpfr_div(r40689, r40686, r40688, MPFR_RNDN);
        ;
        mpfr_set_si(r40691, mpfr_cmp(r40689, r40690) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r40693, r40692, r40686, MPFR_RNDN);
        mpfr_set_d(r40694, x, MPFR_RNDN);
        mpfr_add(r40695, r40693, r40694, MPFR_RNDN);
        mpfr_mul(r40696, r40687, r40686, MPFR_RNDN);
        mpfr_div(r40697, r40692, r40696, MPFR_RNDN);
        mpfr_sub(r40698, r40695, r40697, MPFR_RNDN);
        mpfr_pow(r40699, r40689, r40686, MPFR_RNDN);
        mpfr_div(r40700, r40699, r40686, MPFR_RNDN);
        mpfr_add(r40701, r40700, r40694, MPFR_RNDN);
        if (mpfr_get_si(r40691, MPFR_RNDN)) { mpfr_set(r40702, r40698, MPFR_RNDN); } else { mpfr_set(r40702, r40701, MPFR_RNDN); };
        return mpfr_get_d(r40702, MPFR_RNDN);
}

static mpfr_t r40703, r40704, r40705, r40706, r40707, r40708, r40709, r40710, r40711, r40712, r40713, r40714, r40715, r40716, r40717, r40718, r40719;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r40703);
        mpfr_init(r40704);
        mpfr_init(r40705);
        mpfr_init(r40706);
        mpfr_init_set_str(r40707, "5.3881129393563e-317", 10, MPFR_RNDN);
        mpfr_init(r40708);
        mpfr_init_set_str(r40709, "1", 10, MPFR_RNDN);
        mpfr_init(r40710);
        mpfr_init(r40711);
        mpfr_init(r40712);
        mpfr_init(r40713);
        mpfr_init(r40714);
        mpfr_init(r40715);
        mpfr_init(r40716);
        mpfr_init(r40717);
        mpfr_init(r40718);
        mpfr_init(r40719);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r40703, y, MPFR_RNDN);
        mpfr_set_d(r40704, z, MPFR_RNDN);
        mpfr_add(r40705, r40704, r40703, MPFR_RNDN);
        mpfr_div(r40706, r40703, r40705, MPFR_RNDN);
        ;
        mpfr_set_si(r40708, mpfr_cmp(r40706, r40707) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r40710, r40709, r40703, MPFR_RNDN);
        mpfr_set_d(r40711, x, MPFR_RNDN);
        mpfr_add(r40712, r40710, r40711, MPFR_RNDN);
        mpfr_mul(r40713, r40704, r40703, MPFR_RNDN);
        mpfr_div(r40714, r40709, r40713, MPFR_RNDN);
        mpfr_sub(r40715, r40712, r40714, MPFR_RNDN);
        mpfr_pow(r40716, r40706, r40703, MPFR_RNDN);
        mpfr_div(r40717, r40716, r40703, MPFR_RNDN);
        mpfr_add(r40718, r40717, r40711, MPFR_RNDN);
        if (mpfr_get_si(r40708, MPFR_RNDN)) { mpfr_set(r40719, r40715, MPFR_RNDN); } else { mpfr_set(r40719, r40718, MPFR_RNDN); };
        return mpfr_get_d(r40719, MPFR_RNDN);
}

