#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2, A";

double f_if(float x, float y, float z, float t, float a, float b) {
        float r44438 = x;
        float r44439 = y;
        float r44440 = z;
        float r44441 = log(r44440);
        float r44442 = r44439 * r44441;
        float r44443 = t;
        float r44444 = 1.0;
        float r44445 = r44443 - r44444;
        float r44446 = a;
        float r44447 = log(r44446);
        float r44448 = r44445 * r44447;
        float r44449 = r44442 + r44448;
        float r44450 = b;
        float r44451 = r44449 - r44450;
        float r44452 = exp(r44451);
        float r44453 = r44438 * r44452;
        float r44454 = r44453 / r44439;
        return r44454;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r44455 = x;
        double r44456 = y;
        double r44457 = z;
        double r44458 = log(r44457);
        double r44459 = r44456 * r44458;
        double r44460 = t;
        double r44461 = 1.0;
        double r44462 = r44460 - r44461;
        double r44463 = a;
        double r44464 = log(r44463);
        double r44465 = r44462 * r44464;
        double r44466 = r44459 + r44465;
        double r44467 = b;
        double r44468 = r44466 - r44467;
        double r44469 = exp(r44468);
        double r44470 = r44455 * r44469;
        double r44471 = r44470 / r44456;
        return r44471;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r44472 = t;
        float r44473 = -1506913298432.609;
        bool r44474 = r44472 <= r44473;
        float r44475 = x;
        float r44476 = a;
        float r44477 = 1.0;
        float r44478 = r44472 - r44477;
        float r44479 = pow(r44476, r44478);
        float r44480 = b;
        float r44481 = 1;
        float r44482 = r44480 + r44481;
        float r44483 = y;
        float r44484 = z;
        float r44485 = log(r44484);
        float r44486 = r44483 * r44485;
        float r44487 = r44482 - r44486;
        float r44488 = r44479 / r44487;
        float r44489 = r44475 * r44488;
        float r44490 = r44489 / r44483;
        float r44491 = 1.2421398212208342e-102;
        bool r44492 = r44472 <= r44491;
        float r44493 = r44475 / r44483;
        float r44494 = r44485 * r44483;
        float r44495 = r44480 - r44494;
        float r44496 = exp(r44495);
        float r44497 = r44479 / r44496;
        float r44498 = r44493 * r44497;
        float r44499 = r44492 ? r44498 : r44490;
        float r44500 = r44474 ? r44490 : r44499;
        return r44500;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r44501 = t;
        double r44502 = -1506913298432.609;
        bool r44503 = r44501 <= r44502;
        double r44504 = x;
        double r44505 = a;
        double r44506 = 1.0;
        double r44507 = r44501 - r44506;
        double r44508 = pow(r44505, r44507);
        double r44509 = b;
        double r44510 = 1;
        double r44511 = r44509 + r44510;
        double r44512 = y;
        double r44513 = z;
        double r44514 = log(r44513);
        double r44515 = r44512 * r44514;
        double r44516 = r44511 - r44515;
        double r44517 = r44508 / r44516;
        double r44518 = r44504 * r44517;
        double r44519 = r44518 / r44512;
        double r44520 = 1.2421398212208342e-102;
        bool r44521 = r44501 <= r44520;
        double r44522 = r44504 / r44512;
        double r44523 = r44514 * r44512;
        double r44524 = r44509 - r44523;
        double r44525 = exp(r44524);
        double r44526 = r44508 / r44525;
        double r44527 = r44522 * r44526;
        double r44528 = r44521 ? r44527 : r44519;
        double r44529 = r44503 ? r44519 : r44528;
        return r44529;
}

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 r44530, r44531, r44532, r44533, r44534, r44535, r44536, r44537, r44538, r44539, r44540, r44541, r44542, r44543, r44544, r44545, r44546;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44530);
        mpfr_init(r44531);
        mpfr_init(r44532);
        mpfr_init(r44533);
        mpfr_init(r44534);
        mpfr_init(r44535);
        mpfr_init_set_str(r44536, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44537);
        mpfr_init(r44538);
        mpfr_init(r44539);
        mpfr_init(r44540);
        mpfr_init(r44541);
        mpfr_init(r44542);
        mpfr_init(r44543);
        mpfr_init(r44544);
        mpfr_init(r44545);
        mpfr_init(r44546);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r44530, x, MPFR_RNDN);
        mpfr_set_d(r44531, y, MPFR_RNDN);
        mpfr_set_d(r44532, z, MPFR_RNDN);
        mpfr_log(r44533, r44532, MPFR_RNDN);
        mpfr_mul(r44534, r44531, r44533, MPFR_RNDN);
        mpfr_set_d(r44535, t, MPFR_RNDN);
        ;
        mpfr_sub(r44537, r44535, r44536, MPFR_RNDN);
        mpfr_set_d(r44538, a, MPFR_RNDN);
        mpfr_log(r44539, r44538, MPFR_RNDN);
        mpfr_mul(r44540, r44537, r44539, MPFR_RNDN);
        mpfr_add(r44541, r44534, r44540, MPFR_RNDN);
        mpfr_set_d(r44542, b, MPFR_RNDN);
        mpfr_sub(r44543, r44541, r44542, MPFR_RNDN);
        mpfr_exp(r44544, r44543, MPFR_RNDN);
        mpfr_mul(r44545, r44530, r44544, MPFR_RNDN);
        mpfr_div(r44546, r44545, r44531, MPFR_RNDN);
        return mpfr_get_d(r44546, MPFR_RNDN);
}

static mpfr_t r44547, r44548, r44549, r44550, r44551, r44552, r44553, r44554, r44555, r44556, r44557, r44558, r44559, r44560, r44561, r44562, r44563, r44564, r44565, r44566, r44567, r44568, r44569, r44570, r44571, r44572, r44573, r44574, r44575;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44547);
        mpfr_init_set_str(r44548, "-1506913298432.609", 10, MPFR_RNDN);
        mpfr_init(r44549);
        mpfr_init(r44550);
        mpfr_init(r44551);
        mpfr_init_set_str(r44552, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44553);
        mpfr_init(r44554);
        mpfr_init(r44555);
        mpfr_init_set_str(r44556, "1", 10, MPFR_RNDN);
        mpfr_init(r44557);
        mpfr_init(r44558);
        mpfr_init(r44559);
        mpfr_init(r44560);
        mpfr_init(r44561);
        mpfr_init(r44562);
        mpfr_init(r44563);
        mpfr_init(r44564);
        mpfr_init(r44565);
        mpfr_init_set_str(r44566, "1.2421398212208342e-102", 10, MPFR_RNDN);
        mpfr_init(r44567);
        mpfr_init(r44568);
        mpfr_init(r44569);
        mpfr_init(r44570);
        mpfr_init(r44571);
        mpfr_init(r44572);
        mpfr_init(r44573);
        mpfr_init(r44574);
        mpfr_init(r44575);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r44547, t, MPFR_RNDN);
        ;
        mpfr_set_si(r44549, mpfr_cmp(r44547, r44548) <= 0, MPFR_RNDN);
        mpfr_set_d(r44550, x, MPFR_RNDN);
        mpfr_set_d(r44551, a, MPFR_RNDN);
        ;
        mpfr_sub(r44553, r44547, r44552, MPFR_RNDN);
        mpfr_pow(r44554, r44551, r44553, MPFR_RNDN);
        mpfr_set_d(r44555, b, MPFR_RNDN);
        ;
        mpfr_add(r44557, r44555, r44556, MPFR_RNDN);
        mpfr_set_d(r44558, y, MPFR_RNDN);
        mpfr_set_d(r44559, z, MPFR_RNDN);
        mpfr_log(r44560, r44559, MPFR_RNDN);
        mpfr_mul(r44561, r44558, r44560, MPFR_RNDN);
        mpfr_sub(r44562, r44557, r44561, MPFR_RNDN);
        mpfr_div(r44563, r44554, r44562, MPFR_RNDN);
        mpfr_mul(r44564, r44550, r44563, MPFR_RNDN);
        mpfr_div(r44565, r44564, r44558, MPFR_RNDN);
        ;
        mpfr_set_si(r44567, mpfr_cmp(r44547, r44566) <= 0, MPFR_RNDN);
        mpfr_div(r44568, r44550, r44558, MPFR_RNDN);
        mpfr_mul(r44569, r44560, r44558, MPFR_RNDN);
        mpfr_sub(r44570, r44555, r44569, MPFR_RNDN);
        mpfr_exp(r44571, r44570, MPFR_RNDN);
        mpfr_div(r44572, r44554, r44571, MPFR_RNDN);
        mpfr_mul(r44573, r44568, r44572, MPFR_RNDN);
        if (mpfr_get_si(r44567, MPFR_RNDN)) { mpfr_set(r44574, r44573, MPFR_RNDN); } else { mpfr_set(r44574, r44565, MPFR_RNDN); };
        if (mpfr_get_si(r44549, MPFR_RNDN)) { mpfr_set(r44575, r44565, MPFR_RNDN); } else { mpfr_set(r44575, r44574, MPFR_RNDN); };
        return mpfr_get_d(r44575, MPFR_RNDN);
}

static mpfr_t r44576, r44577, r44578, r44579, r44580, r44581, r44582, r44583, r44584, r44585, r44586, r44587, r44588, r44589, r44590, r44591, r44592, r44593, r44594, r44595, r44596, r44597, r44598, r44599, r44600, r44601, r44602, r44603, r44604;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44576);
        mpfr_init_set_str(r44577, "-1506913298432.609", 10, MPFR_RNDN);
        mpfr_init(r44578);
        mpfr_init(r44579);
        mpfr_init(r44580);
        mpfr_init_set_str(r44581, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44582);
        mpfr_init(r44583);
        mpfr_init(r44584);
        mpfr_init_set_str(r44585, "1", 10, MPFR_RNDN);
        mpfr_init(r44586);
        mpfr_init(r44587);
        mpfr_init(r44588);
        mpfr_init(r44589);
        mpfr_init(r44590);
        mpfr_init(r44591);
        mpfr_init(r44592);
        mpfr_init(r44593);
        mpfr_init(r44594);
        mpfr_init_set_str(r44595, "1.2421398212208342e-102", 10, MPFR_RNDN);
        mpfr_init(r44596);
        mpfr_init(r44597);
        mpfr_init(r44598);
        mpfr_init(r44599);
        mpfr_init(r44600);
        mpfr_init(r44601);
        mpfr_init(r44602);
        mpfr_init(r44603);
        mpfr_init(r44604);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r44576, t, MPFR_RNDN);
        ;
        mpfr_set_si(r44578, mpfr_cmp(r44576, r44577) <= 0, MPFR_RNDN);
        mpfr_set_d(r44579, x, MPFR_RNDN);
        mpfr_set_d(r44580, a, MPFR_RNDN);
        ;
        mpfr_sub(r44582, r44576, r44581, MPFR_RNDN);
        mpfr_pow(r44583, r44580, r44582, MPFR_RNDN);
        mpfr_set_d(r44584, b, MPFR_RNDN);
        ;
        mpfr_add(r44586, r44584, r44585, MPFR_RNDN);
        mpfr_set_d(r44587, y, MPFR_RNDN);
        mpfr_set_d(r44588, z, MPFR_RNDN);
        mpfr_log(r44589, r44588, MPFR_RNDN);
        mpfr_mul(r44590, r44587, r44589, MPFR_RNDN);
        mpfr_sub(r44591, r44586, r44590, MPFR_RNDN);
        mpfr_div(r44592, r44583, r44591, MPFR_RNDN);
        mpfr_mul(r44593, r44579, r44592, MPFR_RNDN);
        mpfr_div(r44594, r44593, r44587, MPFR_RNDN);
        ;
        mpfr_set_si(r44596, mpfr_cmp(r44576, r44595) <= 0, MPFR_RNDN);
        mpfr_div(r44597, r44579, r44587, MPFR_RNDN);
        mpfr_mul(r44598, r44589, r44587, MPFR_RNDN);
        mpfr_sub(r44599, r44584, r44598, MPFR_RNDN);
        mpfr_exp(r44600, r44599, MPFR_RNDN);
        mpfr_div(r44601, r44583, r44600, MPFR_RNDN);
        mpfr_mul(r44602, r44597, r44601, MPFR_RNDN);
        if (mpfr_get_si(r44596, MPFR_RNDN)) { mpfr_set(r44603, r44602, MPFR_RNDN); } else { mpfr_set(r44603, r44594, MPFR_RNDN); };
        if (mpfr_get_si(r44578, MPFR_RNDN)) { mpfr_set(r44604, r44594, MPFR_RNDN); } else { mpfr_set(r44604, r44603, MPFR_RNDN); };
        return mpfr_get_d(r44604, MPFR_RNDN);
}

