#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 r44136 = x;
        float r44137 = y;
        float r44138 = log(r44137);
        float r44139 = r44136 * r44138;
        float r44140 = z;
        float r44141 = 1.0;
        float r44142 = r44141 - r44137;
        float r44143 = log(r44142);
        float r44144 = r44140 * r44143;
        float r44145 = r44139 + r44144;
        float r44146 = t;
        float r44147 = r44145 - r44146;
        return r44147;
}

double f_id(double x, double y, double z, double t) {
        double r44148 = x;
        double r44149 = y;
        double r44150 = log(r44149);
        double r44151 = r44148 * r44150;
        double r44152 = z;
        double r44153 = 1.0;
        double r44154 = r44153 - r44149;
        double r44155 = log(r44154);
        double r44156 = r44152 * r44155;
        double r44157 = r44151 + r44156;
        double r44158 = t;
        double r44159 = r44157 - r44158;
        return r44159;
}


double f_of(float x, float y, float z, float t) {
        float r44160 = x;
        float r44161 = y;
        float r44162 = log(r44161);
        float r44163 = r44160 * r44162;
        float r44164 = z;
        float r44165 = 1.0;
        float r44166 = log(r44165);
        float r44167 = 1/2;
        float r44168 = 2;
        float r44169 = pow(r44161, r44168);
        float r44170 = pow(r44165, r44168);
        float r44171 = r44169 / r44170;
        float r44172 = r44167 * r44171;
        float r44173 = r44165 * r44161;
        float r44174 = r44172 + r44173;
        float r44175 = r44166 - r44174;
        float r44176 = r44164 * r44175;
        float r44177 = r44163 + r44176;
        float r44178 = t;
        float r44179 = r44177 - r44178;
        return r44179;
}

double f_od(double x, double y, double z, double t) {
        double r44180 = x;
        double r44181 = y;
        double r44182 = log(r44181);
        double r44183 = r44180 * r44182;
        double r44184 = z;
        double r44185 = 1.0;
        double r44186 = log(r44185);
        double r44187 = 1/2;
        double r44188 = 2;
        double r44189 = pow(r44181, r44188);
        double r44190 = pow(r44185, r44188);
        double r44191 = r44189 / r44190;
        double r44192 = r44187 * r44191;
        double r44193 = r44185 * r44181;
        double r44194 = r44192 + r44193;
        double r44195 = r44186 - r44194;
        double r44196 = r44184 * r44195;
        double r44197 = r44183 + r44196;
        double r44198 = t;
        double r44199 = r44197 - r44198;
        return r44199;
}

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 r44200, r44201, r44202, r44203, r44204, r44205, r44206, r44207, r44208, r44209, r44210, r44211;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44200);
        mpfr_init(r44201);
        mpfr_init(r44202);
        mpfr_init(r44203);
        mpfr_init(r44204);
        mpfr_init_set_str(r44205, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44206);
        mpfr_init(r44207);
        mpfr_init(r44208);
        mpfr_init(r44209);
        mpfr_init(r44210);
        mpfr_init(r44211);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r44200, x, MPFR_RNDN);
        mpfr_set_d(r44201, y, MPFR_RNDN);
        mpfr_log(r44202, r44201, MPFR_RNDN);
        mpfr_mul(r44203, r44200, r44202, MPFR_RNDN);
        mpfr_set_d(r44204, z, MPFR_RNDN);
        ;
        mpfr_sub(r44206, r44205, r44201, MPFR_RNDN);
        mpfr_log(r44207, r44206, MPFR_RNDN);
        mpfr_mul(r44208, r44204, r44207, MPFR_RNDN);
        mpfr_add(r44209, r44203, r44208, MPFR_RNDN);
        mpfr_set_d(r44210, t, MPFR_RNDN);
        mpfr_sub(r44211, r44209, r44210, MPFR_RNDN);
        return mpfr_get_d(r44211, MPFR_RNDN);
}

static mpfr_t r44212, r44213, r44214, r44215, r44216, r44217, r44218, r44219, r44220, r44221, r44222, r44223, r44224, r44225, r44226, r44227, r44228, r44229, r44230, r44231;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44212);
        mpfr_init(r44213);
        mpfr_init(r44214);
        mpfr_init(r44215);
        mpfr_init(r44216);
        mpfr_init_set_str(r44217, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44218);
        mpfr_init_set_str(r44219, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r44220, "2", 10, MPFR_RNDN);
        mpfr_init(r44221);
        mpfr_init(r44222);
        mpfr_init(r44223);
        mpfr_init(r44224);
        mpfr_init(r44225);
        mpfr_init(r44226);
        mpfr_init(r44227);
        mpfr_init(r44228);
        mpfr_init(r44229);
        mpfr_init(r44230);
        mpfr_init(r44231);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r44212, x, MPFR_RNDN);
        mpfr_set_d(r44213, y, MPFR_RNDN);
        mpfr_log(r44214, r44213, MPFR_RNDN);
        mpfr_mul(r44215, r44212, r44214, MPFR_RNDN);
        mpfr_set_d(r44216, z, MPFR_RNDN);
        ;
        mpfr_log(r44218, r44217, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r44221, r44213, r44220, MPFR_RNDN);
        mpfr_pow(r44222, r44217, r44220, MPFR_RNDN);
        mpfr_div(r44223, r44221, r44222, MPFR_RNDN);
        mpfr_mul(r44224, r44219, r44223, MPFR_RNDN);
        mpfr_mul(r44225, r44217, r44213, MPFR_RNDN);
        mpfr_add(r44226, r44224, r44225, MPFR_RNDN);
        mpfr_sub(r44227, r44218, r44226, MPFR_RNDN);
        mpfr_mul(r44228, r44216, r44227, MPFR_RNDN);
        mpfr_add(r44229, r44215, r44228, MPFR_RNDN);
        mpfr_set_d(r44230, t, MPFR_RNDN);
        mpfr_sub(r44231, r44229, r44230, MPFR_RNDN);
        return mpfr_get_d(r44231, MPFR_RNDN);
}

static mpfr_t r44232, r44233, r44234, r44235, r44236, r44237, r44238, r44239, r44240, r44241, r44242, r44243, r44244, r44245, r44246, r44247, r44248, r44249, r44250, r44251;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r44232);
        mpfr_init(r44233);
        mpfr_init(r44234);
        mpfr_init(r44235);
        mpfr_init(r44236);
        mpfr_init_set_str(r44237, "1.0", 10, MPFR_RNDN);
        mpfr_init(r44238);
        mpfr_init_set_str(r44239, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r44240, "2", 10, MPFR_RNDN);
        mpfr_init(r44241);
        mpfr_init(r44242);
        mpfr_init(r44243);
        mpfr_init(r44244);
        mpfr_init(r44245);
        mpfr_init(r44246);
        mpfr_init(r44247);
        mpfr_init(r44248);
        mpfr_init(r44249);
        mpfr_init(r44250);
        mpfr_init(r44251);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r44232, x, MPFR_RNDN);
        mpfr_set_d(r44233, y, MPFR_RNDN);
        mpfr_log(r44234, r44233, MPFR_RNDN);
        mpfr_mul(r44235, r44232, r44234, MPFR_RNDN);
        mpfr_set_d(r44236, z, MPFR_RNDN);
        ;
        mpfr_log(r44238, r44237, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r44241, r44233, r44240, MPFR_RNDN);
        mpfr_pow(r44242, r44237, r44240, MPFR_RNDN);
        mpfr_div(r44243, r44241, r44242, MPFR_RNDN);
        mpfr_mul(r44244, r44239, r44243, MPFR_RNDN);
        mpfr_mul(r44245, r44237, r44233, MPFR_RNDN);
        mpfr_add(r44246, r44244, r44245, MPFR_RNDN);
        mpfr_sub(r44247, r44238, r44246, MPFR_RNDN);
        mpfr_mul(r44248, r44236, r44247, MPFR_RNDN);
        mpfr_add(r44249, r44235, r44248, MPFR_RNDN);
        mpfr_set_d(r44250, t, MPFR_RNDN);
        mpfr_sub(r44251, r44249, r44250, MPFR_RNDN);
        return mpfr_get_d(r44251, MPFR_RNDN);
}

