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

double f_if(float x, float y, float z, float t) {
        float r44205 = x;
        float r44206 = y;
        float r44207 = z;
        float r44208 = r44206 / r44207;
        float r44209 = t;
        float r44210 = 1.0;
        float r44211 = r44210 - r44207;
        float r44212 = r44209 / r44211;
        float r44213 = r44208 - r44212;
        float r44214 = r44205 * r44213;
        return r44214;
}

double f_id(double x, double y, double z, double t) {
        double r44215 = x;
        double r44216 = y;
        double r44217 = z;
        double r44218 = r44216 / r44217;
        double r44219 = t;
        double r44220 = 1.0;
        double r44221 = r44220 - r44217;
        double r44222 = r44219 / r44221;
        double r44223 = r44218 - r44222;
        double r44224 = r44215 * r44223;
        return r44224;
}


double f_of(float x, float y, float z, float t) {
        float r44225 = x;
        float r44226 = y;
        float r44227 = z;
        float r44228 = r44226 / r44227;
        float r44229 = t;
        float r44230 = 1.0;
        float r44231 = r44230 - r44227;
        float r44232 = r44229 / r44231;
        float r44233 = r44228 - r44232;
        float r44234 = r44225 * r44233;
        float r44235 = -2.4891856596234005e+122;
        bool r44236 = r44234 <= r44235;
        float r44237 = r44225 * r44226;
        float r44238 = 1;
        float r44239 = r44238 / r44227;
        float r44240 = r44237 * r44239;
        float r44241 = -r44232;
        float r44242 = r44225 * r44241;
        float r44243 = r44240 + r44242;
        float r44244 = 2.5997250574874896e+153;
        bool r44245 = r44234 <= r44244;
        float r44246 = r44225 * r44228;
        float r44247 = -r44229;
        float r44248 = r44225 * r44247;
        float r44249 = r44238 / r44231;
        float r44250 = r44248 * r44249;
        float r44251 = r44246 + r44250;
        float r44252 = r44245 ? r44251 : r44243;
        float r44253 = r44236 ? r44243 : r44252;
        return r44253;
}

double f_od(double x, double y, double z, double t) {
        double r44254 = x;
        double r44255 = y;
        double r44256 = z;
        double r44257 = r44255 / r44256;
        double r44258 = t;
        double r44259 = 1.0;
        double r44260 = r44259 - r44256;
        double r44261 = r44258 / r44260;
        double r44262 = r44257 - r44261;
        double r44263 = r44254 * r44262;
        double r44264 = -2.4891856596234005e+122;
        bool r44265 = r44263 <= r44264;
        double r44266 = r44254 * r44255;
        double r44267 = 1;
        double r44268 = r44267 / r44256;
        double r44269 = r44266 * r44268;
        double r44270 = -r44261;
        double r44271 = r44254 * r44270;
        double r44272 = r44269 + r44271;
        double r44273 = 2.5997250574874896e+153;
        bool r44274 = r44263 <= r44273;
        double r44275 = r44254 * r44257;
        double r44276 = -r44258;
        double r44277 = r44254 * r44276;
        double r44278 = r44267 / r44260;
        double r44279 = r44277 * r44278;
        double r44280 = r44275 + r44279;
        double r44281 = r44274 ? r44280 : r44272;
        double r44282 = r44265 ? r44272 : r44281;
        return r44282;
}

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 r44283, r44284, r44285, r44286, r44287, r44288, r44289, r44290, r44291, r44292;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r44283);
        mpfr_init(r44284);
        mpfr_init(r44285);
        mpfr_init(r44286);
        mpfr_init(r44287);
        mpfr_init_set_str(r44288, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44289);
        mpfr_init(r44290);
        mpfr_init(r44291);
        mpfr_init(r44292);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r44283, x, MPFR_RNDN);
        mpfr_set_d(r44284, y, MPFR_RNDN);
        mpfr_set_d(r44285, z, MPFR_RNDN);
        mpfr_div(r44286, r44284, r44285, MPFR_RNDN);
        mpfr_set_d(r44287, t, MPFR_RNDN);
        ;
        mpfr_sub(r44289, r44288, r44285, MPFR_RNDN);
        mpfr_div(r44290, r44287, r44289, MPFR_RNDN);
        mpfr_sub(r44291, r44286, r44290, MPFR_RNDN);
        mpfr_mul(r44292, r44283, r44291, MPFR_RNDN);
        return mpfr_get_d(r44292, MPFR_RNDN);
}

static mpfr_t r44293, r44294, r44295, r44296, r44297, r44298, r44299, r44300, r44301, r44302, r44303, r44304, r44305, r44306, r44307, r44308, r44309, r44310, r44311, r44312, r44313, r44314, r44315, r44316, r44317, r44318, r44319, r44320, r44321;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r44293);
        mpfr_init(r44294);
        mpfr_init(r44295);
        mpfr_init(r44296);
        mpfr_init(r44297);
        mpfr_init_set_str(r44298, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44299);
        mpfr_init(r44300);
        mpfr_init(r44301);
        mpfr_init(r44302);
        mpfr_init_set_str(r44303, "-2.4891856596234005e+122", 10, MPFR_RNDN);
        mpfr_init(r44304);
        mpfr_init(r44305);
        mpfr_init_set_str(r44306, "1", 10, MPFR_RNDN);
        mpfr_init(r44307);
        mpfr_init(r44308);
        mpfr_init(r44309);
        mpfr_init(r44310);
        mpfr_init(r44311);
        mpfr_init_set_str(r44312, "2.5997250574874896e+153", 10, MPFR_RNDN);
        mpfr_init(r44313);
        mpfr_init(r44314);
        mpfr_init(r44315);
        mpfr_init(r44316);
        mpfr_init(r44317);
        mpfr_init(r44318);
        mpfr_init(r44319);
        mpfr_init(r44320);
        mpfr_init(r44321);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r44293, x, MPFR_RNDN);
        mpfr_set_d(r44294, y, MPFR_RNDN);
        mpfr_set_d(r44295, z, MPFR_RNDN);
        mpfr_div(r44296, r44294, r44295, MPFR_RNDN);
        mpfr_set_d(r44297, t, MPFR_RNDN);
        ;
        mpfr_sub(r44299, r44298, r44295, MPFR_RNDN);
        mpfr_div(r44300, r44297, r44299, MPFR_RNDN);
        mpfr_sub(r44301, r44296, r44300, MPFR_RNDN);
        mpfr_mul(r44302, r44293, r44301, MPFR_RNDN);
        ;
        mpfr_set_si(r44304, mpfr_cmp(r44302, r44303) <= 0, MPFR_RNDN);
        mpfr_mul(r44305, r44293, r44294, MPFR_RNDN);
        ;
        mpfr_div(r44307, r44306, r44295, MPFR_RNDN);
        mpfr_mul(r44308, r44305, r44307, MPFR_RNDN);
        mpfr_neg(r44309, r44300, MPFR_RNDN);
        mpfr_mul(r44310, r44293, r44309, MPFR_RNDN);
        mpfr_add(r44311, r44308, r44310, MPFR_RNDN);
        ;
        mpfr_set_si(r44313, mpfr_cmp(r44302, r44312) <= 0, MPFR_RNDN);
        mpfr_mul(r44314, r44293, r44296, MPFR_RNDN);
        mpfr_neg(r44315, r44297, MPFR_RNDN);
        mpfr_mul(r44316, r44293, r44315, MPFR_RNDN);
        mpfr_div(r44317, r44306, r44299, MPFR_RNDN);
        mpfr_mul(r44318, r44316, r44317, MPFR_RNDN);
        mpfr_add(r44319, r44314, r44318, MPFR_RNDN);
        if (mpfr_get_si(r44313, MPFR_RNDN)) { mpfr_set(r44320, r44319, MPFR_RNDN); } else { mpfr_set(r44320, r44311, MPFR_RNDN); };
        if (mpfr_get_si(r44304, MPFR_RNDN)) { mpfr_set(r44321, r44311, MPFR_RNDN); } else { mpfr_set(r44321, r44320, MPFR_RNDN); };
        return mpfr_get_d(r44321, MPFR_RNDN);
}

static mpfr_t r44322, r44323, r44324, r44325, r44326, r44327, r44328, r44329, r44330, r44331, r44332, r44333, r44334, r44335, r44336, r44337, r44338, r44339, r44340, r44341, r44342, r44343, r44344, r44345, r44346, r44347, r44348, r44349, r44350;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r44322);
        mpfr_init(r44323);
        mpfr_init(r44324);
        mpfr_init(r44325);
        mpfr_init(r44326);
        mpfr_init_set_str(r44327, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44328);
        mpfr_init(r44329);
        mpfr_init(r44330);
        mpfr_init(r44331);
        mpfr_init_set_str(r44332, "-2.4891856596234005e+122", 10, MPFR_RNDN);
        mpfr_init(r44333);
        mpfr_init(r44334);
        mpfr_init_set_str(r44335, "1", 10, MPFR_RNDN);
        mpfr_init(r44336);
        mpfr_init(r44337);
        mpfr_init(r44338);
        mpfr_init(r44339);
        mpfr_init(r44340);
        mpfr_init_set_str(r44341, "2.5997250574874896e+153", 10, MPFR_RNDN);
        mpfr_init(r44342);
        mpfr_init(r44343);
        mpfr_init(r44344);
        mpfr_init(r44345);
        mpfr_init(r44346);
        mpfr_init(r44347);
        mpfr_init(r44348);
        mpfr_init(r44349);
        mpfr_init(r44350);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r44322, x, MPFR_RNDN);
        mpfr_set_d(r44323, y, MPFR_RNDN);
        mpfr_set_d(r44324, z, MPFR_RNDN);
        mpfr_div(r44325, r44323, r44324, MPFR_RNDN);
        mpfr_set_d(r44326, t, MPFR_RNDN);
        ;
        mpfr_sub(r44328, r44327, r44324, MPFR_RNDN);
        mpfr_div(r44329, r44326, r44328, MPFR_RNDN);
        mpfr_sub(r44330, r44325, r44329, MPFR_RNDN);
        mpfr_mul(r44331, r44322, r44330, MPFR_RNDN);
        ;
        mpfr_set_si(r44333, mpfr_cmp(r44331, r44332) <= 0, MPFR_RNDN);
        mpfr_mul(r44334, r44322, r44323, MPFR_RNDN);
        ;
        mpfr_div(r44336, r44335, r44324, MPFR_RNDN);
        mpfr_mul(r44337, r44334, r44336, MPFR_RNDN);
        mpfr_neg(r44338, r44329, MPFR_RNDN);
        mpfr_mul(r44339, r44322, r44338, MPFR_RNDN);
        mpfr_add(r44340, r44337, r44339, MPFR_RNDN);
        ;
        mpfr_set_si(r44342, mpfr_cmp(r44331, r44341) <= 0, MPFR_RNDN);
        mpfr_mul(r44343, r44322, r44325, MPFR_RNDN);
        mpfr_neg(r44344, r44326, MPFR_RNDN);
        mpfr_mul(r44345, r44322, r44344, MPFR_RNDN);
        mpfr_div(r44346, r44335, r44328, MPFR_RNDN);
        mpfr_mul(r44347, r44345, r44346, MPFR_RNDN);
        mpfr_add(r44348, r44343, r44347, MPFR_RNDN);
        if (mpfr_get_si(r44342, MPFR_RNDN)) { mpfr_set(r44349, r44348, MPFR_RNDN); } else { mpfr_set(r44349, r44340, MPFR_RNDN); };
        if (mpfr_get_si(r44333, MPFR_RNDN)) { mpfr_set(r44350, r44340, MPFR_RNDN); } else { mpfr_set(r44350, r44349, MPFR_RNDN); };
        return mpfr_get_d(r44350, MPFR_RNDN);
}

