#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 r44051 = x;
        float r44052 = y;
        float r44053 = r44051 + r44052;
        float r44054 = r44051 / r44053;
        float r44055 = log(r44054);
        float r44056 = r44051 * r44055;
        float r44057 = exp(r44056);
        float r44058 = r44057 / r44051;
        return r44058;
}

double f_id(double x, double y) {
        double r44059 = x;
        double r44060 = y;
        double r44061 = r44059 + r44060;
        double r44062 = r44059 / r44061;
        double r44063 = log(r44062);
        double r44064 = r44059 * r44063;
        double r44065 = exp(r44064);
        double r44066 = r44065 / r44059;
        return r44066;
}


double f_of(float x, float y) {
        float r44067 = y;
        float r44068 = -1.236076699891847e+90;
        bool r44069 = r44067 <= r44068;
        float r44070 = 1;
        float r44071 = r44070 / r44067;
        float r44072 = -r44071;
        float r44073 = exp(r44072);
        float r44074 = x;
        float r44075 = r44073 / r44074;
        float r44076 = 1.6167012447435848e+27;
        bool r44077 = r44067 <= r44076;
        float r44078 = r44067 + r44074;
        float r44079 = r44074 / r44078;
        float r44080 = pow(r44079, r44074);
        float r44081 = r44080 / r44074;
        float r44082 = 8.639532840636843e+182;
        bool r44083 = r44067 <= r44082;
        float r44084 = cbrt(r44078);
        float r44085 = r44084 * r44084;
        float r44086 = r44074 / r44085;
        float r44087 = -1/3;
        float r44088 = pow(r44067, r44087);
        float r44089 = r44086 / r44088;
        float r44090 = pow(r44089, r44074);
        float r44091 = r44090 / r44074;
        float r44092 = r44083 ? r44091 : r44081;
        float r44093 = r44077 ? r44081 : r44092;
        float r44094 = r44069 ? r44075 : r44093;
        return r44094;
}

double f_od(double x, double y) {
        double r44095 = y;
        double r44096 = -1.236076699891847e+90;
        bool r44097 = r44095 <= r44096;
        double r44098 = 1;
        double r44099 = r44098 / r44095;
        double r44100 = -r44099;
        double r44101 = exp(r44100);
        double r44102 = x;
        double r44103 = r44101 / r44102;
        double r44104 = 1.6167012447435848e+27;
        bool r44105 = r44095 <= r44104;
        double r44106 = r44095 + r44102;
        double r44107 = r44102 / r44106;
        double r44108 = pow(r44107, r44102);
        double r44109 = r44108 / r44102;
        double r44110 = 8.639532840636843e+182;
        bool r44111 = r44095 <= r44110;
        double r44112 = cbrt(r44106);
        double r44113 = r44112 * r44112;
        double r44114 = r44102 / r44113;
        double r44115 = -1/3;
        double r44116 = pow(r44095, r44115);
        double r44117 = r44114 / r44116;
        double r44118 = pow(r44117, r44102);
        double r44119 = r44118 / r44102;
        double r44120 = r44111 ? r44119 : r44109;
        double r44121 = r44105 ? r44109 : r44120;
        double r44122 = r44097 ? r44103 : r44121;
        return r44122;
}

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 r44123, r44124, r44125, r44126, r44127, r44128, r44129, r44130;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44123);
        mpfr_init(r44124);
        mpfr_init(r44125);
        mpfr_init(r44126);
        mpfr_init(r44127);
        mpfr_init(r44128);
        mpfr_init(r44129);
        mpfr_init(r44130);
}

double f_im(double x, double y) {
        mpfr_set_d(r44123, x, MPFR_RNDN);
        mpfr_set_d(r44124, y, MPFR_RNDN);
        mpfr_add(r44125, r44123, r44124, MPFR_RNDN);
        mpfr_div(r44126, r44123, r44125, MPFR_RNDN);
        mpfr_log(r44127, r44126, MPFR_RNDN);
        mpfr_mul(r44128, r44123, r44127, MPFR_RNDN);
        mpfr_exp(r44129, r44128, MPFR_RNDN);
        mpfr_div(r44130, r44129, r44123, MPFR_RNDN);
        return mpfr_get_d(r44130, MPFR_RNDN);
}

static mpfr_t r44131, r44132, r44133, r44134, r44135, r44136, r44137, r44138, r44139, r44140, r44141, r44142, r44143, r44144, r44145, r44146, r44147, r44148, r44149, r44150, r44151, r44152, r44153, r44154, r44155, r44156, r44157, r44158;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44131);
        mpfr_init_set_str(r44132, "-1.236076699891847e+90", 10, MPFR_RNDN);
        mpfr_init(r44133);
        mpfr_init_set_str(r44134, "1", 10, MPFR_RNDN);
        mpfr_init(r44135);
        mpfr_init(r44136);
        mpfr_init(r44137);
        mpfr_init(r44138);
        mpfr_init(r44139);
        mpfr_init_set_str(r44140, "1.6167012447435848e+27", 10, MPFR_RNDN);
        mpfr_init(r44141);
        mpfr_init(r44142);
        mpfr_init(r44143);
        mpfr_init(r44144);
        mpfr_init(r44145);
        mpfr_init_set_str(r44146, "8.639532840636843e+182", 10, MPFR_RNDN);
        mpfr_init(r44147);
        mpfr_init(r44148);
        mpfr_init(r44149);
        mpfr_init(r44150);
        mpfr_init_set_str(r44151, "-1/3", 10, MPFR_RNDN);
        mpfr_init(r44152);
        mpfr_init(r44153);
        mpfr_init(r44154);
        mpfr_init(r44155);
        mpfr_init(r44156);
        mpfr_init(r44157);
        mpfr_init(r44158);
}

double f_fm(double x, double y) {
        mpfr_set_d(r44131, y, MPFR_RNDN);
        ;
        mpfr_set_si(r44133, mpfr_cmp(r44131, r44132) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r44135, r44134, r44131, MPFR_RNDN);
        mpfr_neg(r44136, r44135, MPFR_RNDN);
        mpfr_exp(r44137, r44136, MPFR_RNDN);
        mpfr_set_d(r44138, x, MPFR_RNDN);
        mpfr_div(r44139, r44137, r44138, MPFR_RNDN);
        ;
        mpfr_set_si(r44141, mpfr_cmp(r44131, r44140) <= 0, MPFR_RNDN);
        mpfr_add(r44142, r44131, r44138, MPFR_RNDN);
        mpfr_div(r44143, r44138, r44142, MPFR_RNDN);
        mpfr_pow(r44144, r44143, r44138, MPFR_RNDN);
        mpfr_div(r44145, r44144, r44138, MPFR_RNDN);
        ;
        mpfr_set_si(r44147, mpfr_cmp(r44131, r44146) <= 0, MPFR_RNDN);
        mpfr_cbrt(r44148, r44142, MPFR_RNDN);
        mpfr_mul(r44149, r44148, r44148, MPFR_RNDN);
        mpfr_div(r44150, r44138, r44149, MPFR_RNDN);
        ;
        mpfr_pow(r44152, r44131, r44151, MPFR_RNDN);
        mpfr_div(r44153, r44150, r44152, MPFR_RNDN);
        mpfr_pow(r44154, r44153, r44138, MPFR_RNDN);
        mpfr_div(r44155, r44154, r44138, MPFR_RNDN);
        if (mpfr_get_si(r44147, MPFR_RNDN)) { mpfr_set(r44156, r44155, MPFR_RNDN); } else { mpfr_set(r44156, r44145, MPFR_RNDN); };
        if (mpfr_get_si(r44141, MPFR_RNDN)) { mpfr_set(r44157, r44145, MPFR_RNDN); } else { mpfr_set(r44157, r44156, MPFR_RNDN); };
        if (mpfr_get_si(r44133, MPFR_RNDN)) { mpfr_set(r44158, r44139, MPFR_RNDN); } else { mpfr_set(r44158, r44157, MPFR_RNDN); };
        return mpfr_get_d(r44158, MPFR_RNDN);
}

static mpfr_t r44159, r44160, r44161, r44162, r44163, r44164, r44165, r44166, r44167, r44168, r44169, r44170, r44171, r44172, r44173, r44174, r44175, r44176, r44177, r44178, r44179, r44180, r44181, r44182, r44183, r44184, r44185, r44186;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44159);
        mpfr_init_set_str(r44160, "-1.236076699891847e+90", 10, MPFR_RNDN);
        mpfr_init(r44161);
        mpfr_init_set_str(r44162, "1", 10, MPFR_RNDN);
        mpfr_init(r44163);
        mpfr_init(r44164);
        mpfr_init(r44165);
        mpfr_init(r44166);
        mpfr_init(r44167);
        mpfr_init_set_str(r44168, "1.6167012447435848e+27", 10, MPFR_RNDN);
        mpfr_init(r44169);
        mpfr_init(r44170);
        mpfr_init(r44171);
        mpfr_init(r44172);
        mpfr_init(r44173);
        mpfr_init_set_str(r44174, "8.639532840636843e+182", 10, MPFR_RNDN);
        mpfr_init(r44175);
        mpfr_init(r44176);
        mpfr_init(r44177);
        mpfr_init(r44178);
        mpfr_init_set_str(r44179, "-1/3", 10, MPFR_RNDN);
        mpfr_init(r44180);
        mpfr_init(r44181);
        mpfr_init(r44182);
        mpfr_init(r44183);
        mpfr_init(r44184);
        mpfr_init(r44185);
        mpfr_init(r44186);
}

double f_dm(double x, double y) {
        mpfr_set_d(r44159, y, MPFR_RNDN);
        ;
        mpfr_set_si(r44161, mpfr_cmp(r44159, r44160) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r44163, r44162, r44159, MPFR_RNDN);
        mpfr_neg(r44164, r44163, MPFR_RNDN);
        mpfr_exp(r44165, r44164, MPFR_RNDN);
        mpfr_set_d(r44166, x, MPFR_RNDN);
        mpfr_div(r44167, r44165, r44166, MPFR_RNDN);
        ;
        mpfr_set_si(r44169, mpfr_cmp(r44159, r44168) <= 0, MPFR_RNDN);
        mpfr_add(r44170, r44159, r44166, MPFR_RNDN);
        mpfr_div(r44171, r44166, r44170, MPFR_RNDN);
        mpfr_pow(r44172, r44171, r44166, MPFR_RNDN);
        mpfr_div(r44173, r44172, r44166, MPFR_RNDN);
        ;
        mpfr_set_si(r44175, mpfr_cmp(r44159, r44174) <= 0, MPFR_RNDN);
        mpfr_cbrt(r44176, r44170, MPFR_RNDN);
        mpfr_mul(r44177, r44176, r44176, MPFR_RNDN);
        mpfr_div(r44178, r44166, r44177, MPFR_RNDN);
        ;
        mpfr_pow(r44180, r44159, r44179, MPFR_RNDN);
        mpfr_div(r44181, r44178, r44180, MPFR_RNDN);
        mpfr_pow(r44182, r44181, r44166, MPFR_RNDN);
        mpfr_div(r44183, r44182, r44166, MPFR_RNDN);
        if (mpfr_get_si(r44175, MPFR_RNDN)) { mpfr_set(r44184, r44183, MPFR_RNDN); } else { mpfr_set(r44184, r44173, MPFR_RNDN); };
        if (mpfr_get_si(r44169, MPFR_RNDN)) { mpfr_set(r44185, r44173, MPFR_RNDN); } else { mpfr_set(r44185, r44184, MPFR_RNDN); };
        if (mpfr_get_si(r44161, MPFR_RNDN)) { mpfr_set(r44186, r44167, MPFR_RNDN); } else { mpfr_set(r44186, r44185, MPFR_RNDN); };
        return mpfr_get_d(r44186, MPFR_RNDN);
}

