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

double f_if(float x, float y, float z, float t) {
        float r44480 = x;
        float r44481 = y;
        float r44482 = log(r44481);
        float r44483 = r44480 * r44482;
        float r44484 = z;
        float r44485 = 1.0;
        float r44486 = r44485 - r44481;
        float r44487 = log(r44486);
        float r44488 = r44484 * r44487;
        float r44489 = r44483 + r44488;
        float r44490 = t;
        float r44491 = r44489 - r44490;
        return r44491;
}

double f_id(double x, double y, double z, double t) {
        double r44492 = x;
        double r44493 = y;
        double r44494 = log(r44493);
        double r44495 = r44492 * r44494;
        double r44496 = z;
        double r44497 = 1.0;
        double r44498 = r44497 - r44493;
        double r44499 = log(r44498);
        double r44500 = r44496 * r44499;
        double r44501 = r44495 + r44500;
        double r44502 = t;
        double r44503 = r44501 - r44502;
        return r44503;
}


double f_of(float x, float y, float z, float t) {
        float r44504 = x;
        float r44505 = y;
        float r44506 = log(r44505);
        float r44507 = r44504 * r44506;
        float r44508 = z;
        float r44509 = 1.0;
        float r44510 = log(r44509);
        float r44511 = 1/2;
        float r44512 = 2;
        float r44513 = pow(r44505, r44512);
        float r44514 = pow(r44509, r44512);
        float r44515 = r44513 / r44514;
        float r44516 = r44511 * r44515;
        float r44517 = r44509 * r44505;
        float r44518 = r44516 + r44517;
        float r44519 = r44510 - r44518;
        float r44520 = r44508 * r44519;
        float r44521 = r44507 + r44520;
        float r44522 = t;
        float r44523 = r44521 - r44522;
        return r44523;
}

double f_od(double x, double y, double z, double t) {
        double r44524 = x;
        double r44525 = y;
        double r44526 = log(r44525);
        double r44527 = r44524 * r44526;
        double r44528 = z;
        double r44529 = 1.0;
        double r44530 = log(r44529);
        double r44531 = 1/2;
        double r44532 = 2;
        double r44533 = pow(r44525, r44532);
        double r44534 = pow(r44529, r44532);
        double r44535 = r44533 / r44534;
        double r44536 = r44531 * r44535;
        double r44537 = r44529 * r44525;
        double r44538 = r44536 + r44537;
        double r44539 = r44530 - r44538;
        double r44540 = r44528 * r44539;
        double r44541 = r44527 + r44540;
        double r44542 = t;
        double r44543 = r44541 - r44542;
        return r44543;
}

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 r44544, r44545, r44546, r44547, r44548, r44549, r44550, r44551, r44552, r44553, r44554, r44555;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44544);
        mpfr_init(r44545);
        mpfr_init(r44546);
        mpfr_init(r44547);
        mpfr_init(r44548);
        mpfr_init_set_str(r44549, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44550);
        mpfr_init(r44551);
        mpfr_init(r44552);
        mpfr_init(r44553);
        mpfr_init(r44554);
        mpfr_init(r44555);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r44544, x, MPFR_RNDN);
        mpfr_set_d(r44545, y, MPFR_RNDN);
        mpfr_log(r44546, r44545, MPFR_RNDN);
        mpfr_mul(r44547, r44544, r44546, MPFR_RNDN);
        mpfr_set_d(r44548, z, MPFR_RNDN);
        ;
        mpfr_sub(r44550, r44549, r44545, MPFR_RNDN);
        mpfr_log(r44551, r44550, MPFR_RNDN);
        mpfr_mul(r44552, r44548, r44551, MPFR_RNDN);
        mpfr_add(r44553, r44547, r44552, MPFR_RNDN);
        mpfr_set_d(r44554, t, MPFR_RNDN);
        mpfr_sub(r44555, r44553, r44554, MPFR_RNDN);
        return mpfr_get_d(r44555, MPFR_RNDN);
}

static mpfr_t 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(r44556);
        mpfr_init(r44557);
        mpfr_init(r44558);
        mpfr_init(r44559);
        mpfr_init(r44560);
        mpfr_init_set_str(r44561, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44562);
        mpfr_init_set_str(r44563, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r44564, "2", 10, MPFR_RNDN);
        mpfr_init(r44565);
        mpfr_init(r44566);
        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) {
        mpfr_set_d(r44556, x, MPFR_RNDN);
        mpfr_set_d(r44557, y, MPFR_RNDN);
        mpfr_log(r44558, r44557, MPFR_RNDN);
        mpfr_mul(r44559, r44556, r44558, MPFR_RNDN);
        mpfr_set_d(r44560, z, MPFR_RNDN);
        ;
        mpfr_log(r44562, r44561, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r44565, r44557, r44564, MPFR_RNDN);
        mpfr_pow(r44566, r44561, r44564, MPFR_RNDN);
        mpfr_div(r44567, r44565, r44566, MPFR_RNDN);
        mpfr_mul(r44568, r44563, r44567, MPFR_RNDN);
        mpfr_mul(r44569, r44561, r44557, MPFR_RNDN);
        mpfr_add(r44570, r44568, r44569, MPFR_RNDN);
        mpfr_sub(r44571, r44562, r44570, MPFR_RNDN);
        mpfr_mul(r44572, r44560, r44571, MPFR_RNDN);
        mpfr_add(r44573, r44559, r44572, MPFR_RNDN);
        mpfr_set_d(r44574, t, MPFR_RNDN);
        mpfr_sub(r44575, r44573, 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44576);
        mpfr_init(r44577);
        mpfr_init(r44578);
        mpfr_init(r44579);
        mpfr_init(r44580);
        mpfr_init_set_str(r44581, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44582);
        mpfr_init_set_str(r44583, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r44584, "2", 10, MPFR_RNDN);
        mpfr_init(r44585);
        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(r44595);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r44576, x, MPFR_RNDN);
        mpfr_set_d(r44577, y, MPFR_RNDN);
        mpfr_log(r44578, r44577, MPFR_RNDN);
        mpfr_mul(r44579, r44576, r44578, MPFR_RNDN);
        mpfr_set_d(r44580, z, MPFR_RNDN);
        ;
        mpfr_log(r44582, r44581, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r44585, r44577, r44584, MPFR_RNDN);
        mpfr_pow(r44586, r44581, r44584, MPFR_RNDN);
        mpfr_div(r44587, r44585, r44586, MPFR_RNDN);
        mpfr_mul(r44588, r44583, r44587, MPFR_RNDN);
        mpfr_mul(r44589, r44581, r44577, MPFR_RNDN);
        mpfr_add(r44590, r44588, r44589, MPFR_RNDN);
        mpfr_sub(r44591, r44582, r44590, MPFR_RNDN);
        mpfr_mul(r44592, r44580, r44591, MPFR_RNDN);
        mpfr_add(r44593, r44579, r44592, MPFR_RNDN);
        mpfr_set_d(r44594, t, MPFR_RNDN);
        mpfr_sub(r44595, r44593, r44594, MPFR_RNDN);
        return mpfr_get_d(r44595, MPFR_RNDN);
}

