#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 r43922 = x;
        float r43923 = y;
        float r43924 = r43922 + r43923;
        float r43925 = r43922 / r43924;
        float r43926 = log(r43925);
        float r43927 = r43922 * r43926;
        float r43928 = exp(r43927);
        float r43929 = r43928 / r43922;
        return r43929;
}

double f_id(double x, double y) {
        double r43930 = x;
        double r43931 = y;
        double r43932 = r43930 + r43931;
        double r43933 = r43930 / r43932;
        double r43934 = log(r43933);
        double r43935 = r43930 * r43934;
        double r43936 = exp(r43935);
        double r43937 = r43936 / r43930;
        return r43937;
}


double f_of(float x, float y) {
        float r43938 = y;
        float r43939 = -1.236076699891847e+90;
        bool r43940 = r43938 <= r43939;
        float r43941 = 1;
        float r43942 = r43941 / r43938;
        float r43943 = -r43942;
        float r43944 = exp(r43943);
        float r43945 = x;
        float r43946 = r43944 / r43945;
        float r43947 = 1.6167012447435848e+27;
        bool r43948 = r43938 <= r43947;
        float r43949 = r43938 + r43945;
        float r43950 = r43945 / r43949;
        float r43951 = pow(r43950, r43945);
        float r43952 = r43951 / r43945;
        float r43953 = 8.639532840636843e+182;
        bool r43954 = r43938 <= r43953;
        float r43955 = cbrt(r43949);
        float r43956 = r43955 * r43955;
        float r43957 = r43945 / r43956;
        float r43958 = -1/3;
        float r43959 = pow(r43938, r43958);
        float r43960 = r43957 / r43959;
        float r43961 = pow(r43960, r43945);
        float r43962 = r43961 / r43945;
        float r43963 = r43954 ? r43962 : r43952;
        float r43964 = r43948 ? r43952 : r43963;
        float r43965 = r43940 ? r43946 : r43964;
        return r43965;
}

double f_od(double x, double y) {
        double r43966 = y;
        double r43967 = -1.236076699891847e+90;
        bool r43968 = r43966 <= r43967;
        double r43969 = 1;
        double r43970 = r43969 / r43966;
        double r43971 = -r43970;
        double r43972 = exp(r43971);
        double r43973 = x;
        double r43974 = r43972 / r43973;
        double r43975 = 1.6167012447435848e+27;
        bool r43976 = r43966 <= r43975;
        double r43977 = r43966 + r43973;
        double r43978 = r43973 / r43977;
        double r43979 = pow(r43978, r43973);
        double r43980 = r43979 / r43973;
        double r43981 = 8.639532840636843e+182;
        bool r43982 = r43966 <= r43981;
        double r43983 = cbrt(r43977);
        double r43984 = r43983 * r43983;
        double r43985 = r43973 / r43984;
        double r43986 = -1/3;
        double r43987 = pow(r43966, r43986);
        double r43988 = r43985 / r43987;
        double r43989 = pow(r43988, r43973);
        double r43990 = r43989 / r43973;
        double r43991 = r43982 ? r43990 : r43980;
        double r43992 = r43976 ? r43980 : r43991;
        double r43993 = r43968 ? r43974 : r43992;
        return r43993;
}

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 r43994, r43995, r43996, r43997, r43998, r43999, r44000, r44001;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r43994);
        mpfr_init(r43995);
        mpfr_init(r43996);
        mpfr_init(r43997);
        mpfr_init(r43998);
        mpfr_init(r43999);
        mpfr_init(r44000);
        mpfr_init(r44001);
}

double f_im(double x, double y) {
        mpfr_set_d(r43994, x, MPFR_RNDN);
        mpfr_set_d(r43995, y, MPFR_RNDN);
        mpfr_add(r43996, r43994, r43995, MPFR_RNDN);
        mpfr_div(r43997, r43994, r43996, MPFR_RNDN);
        mpfr_log(r43998, r43997, MPFR_RNDN);
        mpfr_mul(r43999, r43994, r43998, MPFR_RNDN);
        mpfr_exp(r44000, r43999, MPFR_RNDN);
        mpfr_div(r44001, r44000, r43994, MPFR_RNDN);
        return mpfr_get_d(r44001, MPFR_RNDN);
}

static mpfr_t r44002, r44003, r44004, r44005, r44006, r44007, r44008, r44009, r44010, r44011, r44012, r44013, r44014, r44015, r44016, r44017, r44018, r44019, r44020, r44021, r44022, r44023, r44024, r44025, r44026, r44027, r44028, r44029;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44002);
        mpfr_init_set_str(r44003, "-1.236076699891847e+90", 10, MPFR_RNDN);
        mpfr_init(r44004);
        mpfr_init_set_str(r44005, "1", 10, MPFR_RNDN);
        mpfr_init(r44006);
        mpfr_init(r44007);
        mpfr_init(r44008);
        mpfr_init(r44009);
        mpfr_init(r44010);
        mpfr_init_set_str(r44011, "1.6167012447435848e+27", 10, MPFR_RNDN);
        mpfr_init(r44012);
        mpfr_init(r44013);
        mpfr_init(r44014);
        mpfr_init(r44015);
        mpfr_init(r44016);
        mpfr_init_set_str(r44017, "8.639532840636843e+182", 10, MPFR_RNDN);
        mpfr_init(r44018);
        mpfr_init(r44019);
        mpfr_init(r44020);
        mpfr_init(r44021);
        mpfr_init_set_str(r44022, "-1/3", 10, MPFR_RNDN);
        mpfr_init(r44023);
        mpfr_init(r44024);
        mpfr_init(r44025);
        mpfr_init(r44026);
        mpfr_init(r44027);
        mpfr_init(r44028);
        mpfr_init(r44029);
}

double f_fm(double x, double y) {
        mpfr_set_d(r44002, y, MPFR_RNDN);
        ;
        mpfr_set_si(r44004, mpfr_cmp(r44002, r44003) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r44006, r44005, r44002, MPFR_RNDN);
        mpfr_neg(r44007, r44006, MPFR_RNDN);
        mpfr_exp(r44008, r44007, MPFR_RNDN);
        mpfr_set_d(r44009, x, MPFR_RNDN);
        mpfr_div(r44010, r44008, r44009, MPFR_RNDN);
        ;
        mpfr_set_si(r44012, mpfr_cmp(r44002, r44011) <= 0, MPFR_RNDN);
        mpfr_add(r44013, r44002, r44009, MPFR_RNDN);
        mpfr_div(r44014, r44009, r44013, MPFR_RNDN);
        mpfr_pow(r44015, r44014, r44009, MPFR_RNDN);
        mpfr_div(r44016, r44015, r44009, MPFR_RNDN);
        ;
        mpfr_set_si(r44018, mpfr_cmp(r44002, r44017) <= 0, MPFR_RNDN);
        mpfr_cbrt(r44019, r44013, MPFR_RNDN);
        mpfr_mul(r44020, r44019, r44019, MPFR_RNDN);
        mpfr_div(r44021, r44009, r44020, MPFR_RNDN);
        ;
        mpfr_pow(r44023, r44002, r44022, MPFR_RNDN);
        mpfr_div(r44024, r44021, r44023, MPFR_RNDN);
        mpfr_pow(r44025, r44024, r44009, MPFR_RNDN);
        mpfr_div(r44026, r44025, r44009, MPFR_RNDN);
        if (mpfr_get_si(r44018, MPFR_RNDN)) { mpfr_set(r44027, r44026, MPFR_RNDN); } else { mpfr_set(r44027, r44016, MPFR_RNDN); };
        if (mpfr_get_si(r44012, MPFR_RNDN)) { mpfr_set(r44028, r44016, MPFR_RNDN); } else { mpfr_set(r44028, r44027, MPFR_RNDN); };
        if (mpfr_get_si(r44004, MPFR_RNDN)) { mpfr_set(r44029, r44010, MPFR_RNDN); } else { mpfr_set(r44029, r44028, MPFR_RNDN); };
        return mpfr_get_d(r44029, MPFR_RNDN);
}

static mpfr_t r44030, r44031, r44032, r44033, r44034, r44035, r44036, r44037, r44038, r44039, r44040, r44041, r44042, r44043, r44044, r44045, r44046, r44047, r44048, r44049, r44050, r44051, r44052, r44053, r44054, r44055, r44056, r44057;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44030);
        mpfr_init_set_str(r44031, "-1.236076699891847e+90", 10, MPFR_RNDN);
        mpfr_init(r44032);
        mpfr_init_set_str(r44033, "1", 10, MPFR_RNDN);
        mpfr_init(r44034);
        mpfr_init(r44035);
        mpfr_init(r44036);
        mpfr_init(r44037);
        mpfr_init(r44038);
        mpfr_init_set_str(r44039, "1.6167012447435848e+27", 10, MPFR_RNDN);
        mpfr_init(r44040);
        mpfr_init(r44041);
        mpfr_init(r44042);
        mpfr_init(r44043);
        mpfr_init(r44044);
        mpfr_init_set_str(r44045, "8.639532840636843e+182", 10, MPFR_RNDN);
        mpfr_init(r44046);
        mpfr_init(r44047);
        mpfr_init(r44048);
        mpfr_init(r44049);
        mpfr_init_set_str(r44050, "-1/3", 10, MPFR_RNDN);
        mpfr_init(r44051);
        mpfr_init(r44052);
        mpfr_init(r44053);
        mpfr_init(r44054);
        mpfr_init(r44055);
        mpfr_init(r44056);
        mpfr_init(r44057);
}

double f_dm(double x, double y) {
        mpfr_set_d(r44030, y, MPFR_RNDN);
        ;
        mpfr_set_si(r44032, mpfr_cmp(r44030, r44031) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r44034, r44033, r44030, MPFR_RNDN);
        mpfr_neg(r44035, r44034, MPFR_RNDN);
        mpfr_exp(r44036, r44035, MPFR_RNDN);
        mpfr_set_d(r44037, x, MPFR_RNDN);
        mpfr_div(r44038, r44036, r44037, MPFR_RNDN);
        ;
        mpfr_set_si(r44040, mpfr_cmp(r44030, r44039) <= 0, MPFR_RNDN);
        mpfr_add(r44041, r44030, r44037, MPFR_RNDN);
        mpfr_div(r44042, r44037, r44041, MPFR_RNDN);
        mpfr_pow(r44043, r44042, r44037, MPFR_RNDN);
        mpfr_div(r44044, r44043, r44037, MPFR_RNDN);
        ;
        mpfr_set_si(r44046, mpfr_cmp(r44030, r44045) <= 0, MPFR_RNDN);
        mpfr_cbrt(r44047, r44041, MPFR_RNDN);
        mpfr_mul(r44048, r44047, r44047, MPFR_RNDN);
        mpfr_div(r44049, r44037, r44048, MPFR_RNDN);
        ;
        mpfr_pow(r44051, r44030, r44050, MPFR_RNDN);
        mpfr_div(r44052, r44049, r44051, MPFR_RNDN);
        mpfr_pow(r44053, r44052, r44037, MPFR_RNDN);
        mpfr_div(r44054, r44053, r44037, MPFR_RNDN);
        if (mpfr_get_si(r44046, MPFR_RNDN)) { mpfr_set(r44055, r44054, MPFR_RNDN); } else { mpfr_set(r44055, r44044, MPFR_RNDN); };
        if (mpfr_get_si(r44040, MPFR_RNDN)) { mpfr_set(r44056, r44044, MPFR_RNDN); } else { mpfr_set(r44056, r44055, MPFR_RNDN); };
        if (mpfr_get_si(r44032, MPFR_RNDN)) { mpfr_set(r44057, r44038, MPFR_RNDN); } else { mpfr_set(r44057, r44056, MPFR_RNDN); };
        return mpfr_get_d(r44057, MPFR_RNDN);
}

