#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 r44351 = x;
        float r44352 = y;
        float r44353 = log(r44352);
        float r44354 = r44351 * r44353;
        float r44355 = z;
        float r44356 = 1.0;
        float r44357 = r44356 - r44352;
        float r44358 = log(r44357);
        float r44359 = r44355 * r44358;
        float r44360 = r44354 + r44359;
        float r44361 = t;
        float r44362 = r44360 - r44361;
        return r44362;
}

double f_id(double x, double y, double z, double t) {
        double r44363 = x;
        double r44364 = y;
        double r44365 = log(r44364);
        double r44366 = r44363 * r44365;
        double r44367 = z;
        double r44368 = 1.0;
        double r44369 = r44368 - r44364;
        double r44370 = log(r44369);
        double r44371 = r44367 * r44370;
        double r44372 = r44366 + r44371;
        double r44373 = t;
        double r44374 = r44372 - r44373;
        return r44374;
}


double f_of(float x, float y, float z, float t) {
        float r44375 = x;
        float r44376 = y;
        float r44377 = log(r44376);
        float r44378 = r44375 * r44377;
        float r44379 = z;
        float r44380 = 1.0;
        float r44381 = log(r44380);
        float r44382 = 1/2;
        float r44383 = 2;
        float r44384 = pow(r44376, r44383);
        float r44385 = pow(r44380, r44383);
        float r44386 = r44384 / r44385;
        float r44387 = r44382 * r44386;
        float r44388 = r44380 * r44376;
        float r44389 = r44387 + r44388;
        float r44390 = r44381 - r44389;
        float r44391 = r44379 * r44390;
        float r44392 = r44378 + r44391;
        float r44393 = t;
        float r44394 = r44392 - r44393;
        return r44394;
}

double f_od(double x, double y, double z, double t) {
        double r44395 = x;
        double r44396 = y;
        double r44397 = log(r44396);
        double r44398 = r44395 * r44397;
        double r44399 = z;
        double r44400 = 1.0;
        double r44401 = log(r44400);
        double r44402 = 1/2;
        double r44403 = 2;
        double r44404 = pow(r44396, r44403);
        double r44405 = pow(r44400, r44403);
        double r44406 = r44404 / r44405;
        double r44407 = r44402 * r44406;
        double r44408 = r44400 * r44396;
        double r44409 = r44407 + r44408;
        double r44410 = r44401 - r44409;
        double r44411 = r44399 * r44410;
        double r44412 = r44398 + r44411;
        double r44413 = t;
        double r44414 = r44412 - r44413;
        return r44414;
}

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 r44415, r44416, r44417, r44418, r44419, r44420, r44421, r44422, r44423, r44424, r44425, r44426;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44415);
        mpfr_init(r44416);
        mpfr_init(r44417);
        mpfr_init(r44418);
        mpfr_init(r44419);
        mpfr_init_set_str(r44420, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44421);
        mpfr_init(r44422);
        mpfr_init(r44423);
        mpfr_init(r44424);
        mpfr_init(r44425);
        mpfr_init(r44426);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r44415, x, MPFR_RNDN);
        mpfr_set_d(r44416, y, MPFR_RNDN);
        mpfr_log(r44417, r44416, MPFR_RNDN);
        mpfr_mul(r44418, r44415, r44417, MPFR_RNDN);
        mpfr_set_d(r44419, z, MPFR_RNDN);
        ;
        mpfr_sub(r44421, r44420, r44416, MPFR_RNDN);
        mpfr_log(r44422, r44421, MPFR_RNDN);
        mpfr_mul(r44423, r44419, r44422, MPFR_RNDN);
        mpfr_add(r44424, r44418, r44423, MPFR_RNDN);
        mpfr_set_d(r44425, t, MPFR_RNDN);
        mpfr_sub(r44426, r44424, r44425, MPFR_RNDN);
        return mpfr_get_d(r44426, MPFR_RNDN);
}

static mpfr_t r44427, r44428, r44429, r44430, r44431, r44432, r44433, r44434, r44435, r44436, r44437, r44438, r44439, r44440, r44441, r44442, r44443, r44444, r44445, r44446;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44427);
        mpfr_init(r44428);
        mpfr_init(r44429);
        mpfr_init(r44430);
        mpfr_init(r44431);
        mpfr_init_set_str(r44432, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44433);
        mpfr_init_set_str(r44434, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r44435, "2", 10, MPFR_RNDN);
        mpfr_init(r44436);
        mpfr_init(r44437);
        mpfr_init(r44438);
        mpfr_init(r44439);
        mpfr_init(r44440);
        mpfr_init(r44441);
        mpfr_init(r44442);
        mpfr_init(r44443);
        mpfr_init(r44444);
        mpfr_init(r44445);
        mpfr_init(r44446);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r44427, x, MPFR_RNDN);
        mpfr_set_d(r44428, y, MPFR_RNDN);
        mpfr_log(r44429, r44428, MPFR_RNDN);
        mpfr_mul(r44430, r44427, r44429, MPFR_RNDN);
        mpfr_set_d(r44431, z, MPFR_RNDN);
        ;
        mpfr_log(r44433, r44432, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r44436, r44428, r44435, MPFR_RNDN);
        mpfr_pow(r44437, r44432, r44435, MPFR_RNDN);
        mpfr_div(r44438, r44436, r44437, MPFR_RNDN);
        mpfr_mul(r44439, r44434, r44438, MPFR_RNDN);
        mpfr_mul(r44440, r44432, r44428, MPFR_RNDN);
        mpfr_add(r44441, r44439, r44440, MPFR_RNDN);
        mpfr_sub(r44442, r44433, r44441, MPFR_RNDN);
        mpfr_mul(r44443, r44431, r44442, MPFR_RNDN);
        mpfr_add(r44444, r44430, r44443, MPFR_RNDN);
        mpfr_set_d(r44445, t, MPFR_RNDN);
        mpfr_sub(r44446, r44444, r44445, MPFR_RNDN);
        return mpfr_get_d(r44446, MPFR_RNDN);
}

static mpfr_t r44447, r44448, r44449, r44450, r44451, r44452, r44453, r44454, r44455, r44456, r44457, r44458, r44459, r44460, r44461, r44462, r44463, r44464, r44465, r44466;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44447);
        mpfr_init(r44448);
        mpfr_init(r44449);
        mpfr_init(r44450);
        mpfr_init(r44451);
        mpfr_init_set_str(r44452, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44453);
        mpfr_init_set_str(r44454, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r44455, "2", 10, MPFR_RNDN);
        mpfr_init(r44456);
        mpfr_init(r44457);
        mpfr_init(r44458);
        mpfr_init(r44459);
        mpfr_init(r44460);
        mpfr_init(r44461);
        mpfr_init(r44462);
        mpfr_init(r44463);
        mpfr_init(r44464);
        mpfr_init(r44465);
        mpfr_init(r44466);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r44447, x, MPFR_RNDN);
        mpfr_set_d(r44448, y, MPFR_RNDN);
        mpfr_log(r44449, r44448, MPFR_RNDN);
        mpfr_mul(r44450, r44447, r44449, MPFR_RNDN);
        mpfr_set_d(r44451, z, MPFR_RNDN);
        ;
        mpfr_log(r44453, r44452, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r44456, r44448, r44455, MPFR_RNDN);
        mpfr_pow(r44457, r44452, r44455, MPFR_RNDN);
        mpfr_div(r44458, r44456, r44457, MPFR_RNDN);
        mpfr_mul(r44459, r44454, r44458, MPFR_RNDN);
        mpfr_mul(r44460, r44452, r44448, MPFR_RNDN);
        mpfr_add(r44461, r44459, r44460, MPFR_RNDN);
        mpfr_sub(r44462, r44453, r44461, MPFR_RNDN);
        mpfr_mul(r44463, r44451, r44462, MPFR_RNDN);
        mpfr_add(r44464, r44450, r44463, MPFR_RNDN);
        mpfr_set_d(r44465, t, MPFR_RNDN);
        mpfr_sub(r44466, r44464, r44465, MPFR_RNDN);
        return mpfr_get_d(r44466, MPFR_RNDN);
}

