#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 r41105 = x;
        float r41106 = y;
        float r41107 = log(r41106);
        float r41108 = r41105 * r41107;
        float r41109 = z;
        float r41110 = 1.0f;
        float r41111 = r41110 - r41106;
        float r41112 = log(r41111);
        float r41113 = r41109 * r41112;
        float r41114 = r41108 + r41113;
        float r41115 = t;
        float r41116 = r41114 - r41115;
        return r41116;
}

double f_id(double x, double y, double z, double t) {
        double r41117 = x;
        double r41118 = y;
        double r41119 = log(r41118);
        double r41120 = r41117 * r41119;
        double r41121 = z;
        double r41122 = 1.0;
        double r41123 = r41122 - r41118;
        double r41124 = log(r41123);
        double r41125 = r41121 * r41124;
        double r41126 = r41120 + r41125;
        double r41127 = t;
        double r41128 = r41126 - r41127;
        return r41128;
}


double f_of(float x, float y, float z, float t) {
        float r41129 = 1.0f;
        float r41130 = log(r41129);
        float r41131 = z;
        float r41132 = r41130 * r41131;
        float r41133 = y;
        float r41134 = r41131 * r41133;
        float r41135 = 0.5f;
        float r41136 = r41135 * r41133;
        float r41137 = r41129 + r41136;
        float r41138 = r41134 * r41137;
        float r41139 = r41132 - r41138;
        float r41140 = t;
        float r41141 = log(r41133);
        float r41142 = x;
        float r41143 = r41141 * r41142;
        float r41144 = r41140 - r41143;
        float r41145 = r41139 - r41144;
        return r41145;
}

double f_od(double x, double y, double z, double t) {
        double r41146 = 1.0;
        double r41147 = log(r41146);
        double r41148 = z;
        double r41149 = r41147 * r41148;
        double r41150 = y;
        double r41151 = r41148 * r41150;
        double r41152 = 0.5;
        double r41153 = r41152 * r41150;
        double r41154 = r41146 + r41153;
        double r41155 = r41151 * r41154;
        double r41156 = r41149 - r41155;
        double r41157 = t;
        double r41158 = log(r41150);
        double r41159 = x;
        double r41160 = r41158 * r41159;
        double r41161 = r41157 - r41160;
        double r41162 = r41156 - r41161;
        return r41162;
}

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 r41163, r41164, r41165, r41166, r41167, r41168, r41169, r41170, r41171, r41172, r41173, r41174;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r41163);
        mpfr_init(r41164);
        mpfr_init(r41165);
        mpfr_init(r41166);
        mpfr_init(r41167);
        mpfr_init_set_str(r41168, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41169);
        mpfr_init(r41170);
        mpfr_init(r41171);
        mpfr_init(r41172);
        mpfr_init(r41173);
        mpfr_init(r41174);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r41163, x, MPFR_RNDN);
        mpfr_set_d(r41164, y, MPFR_RNDN);
        mpfr_log(r41165, r41164, MPFR_RNDN);
        mpfr_mul(r41166, r41163, r41165, MPFR_RNDN);
        mpfr_set_d(r41167, z, MPFR_RNDN);
        ;
        mpfr_sub(r41169, r41168, r41164, MPFR_RNDN);
        mpfr_log(r41170, r41169, MPFR_RNDN);
        mpfr_mul(r41171, r41167, r41170, MPFR_RNDN);
        mpfr_add(r41172, r41166, r41171, MPFR_RNDN);
        mpfr_set_d(r41173, t, MPFR_RNDN);
        mpfr_sub(r41174, r41172, r41173, MPFR_RNDN);
        return mpfr_get_d(r41174, MPFR_RNDN);
}

static mpfr_t r41175, r41176, r41177, r41178, r41179, r41180, r41181, r41182, r41183, r41184, r41185, r41186, r41187, r41188, r41189, r41190, r41191;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r41175, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41176);
        mpfr_init(r41177);
        mpfr_init(r41178);
        mpfr_init(r41179);
        mpfr_init(r41180);
        mpfr_init_set_str(r41181, "0.5", 10, MPFR_RNDN);
        mpfr_init(r41182);
        mpfr_init(r41183);
        mpfr_init(r41184);
        mpfr_init(r41185);
        mpfr_init(r41186);
        mpfr_init(r41187);
        mpfr_init(r41188);
        mpfr_init(r41189);
        mpfr_init(r41190);
        mpfr_init(r41191);
}

double f_fm(double x, double y, double z, double t) {
        ;
        mpfr_log(r41176, r41175, MPFR_RNDN);
        mpfr_set_d(r41177, z, MPFR_RNDN);
        mpfr_mul(r41178, r41176, r41177, MPFR_RNDN);
        mpfr_set_d(r41179, y, MPFR_RNDN);
        mpfr_mul(r41180, r41177, r41179, MPFR_RNDN);
        ;
        mpfr_mul(r41182, r41181, r41179, MPFR_RNDN);
        mpfr_add(r41183, r41175, r41182, MPFR_RNDN);
        mpfr_mul(r41184, r41180, r41183, MPFR_RNDN);
        mpfr_sub(r41185, r41178, r41184, MPFR_RNDN);
        mpfr_set_d(r41186, t, MPFR_RNDN);
        mpfr_log(r41187, r41179, MPFR_RNDN);
        mpfr_set_d(r41188, x, MPFR_RNDN);
        mpfr_mul(r41189, r41187, r41188, MPFR_RNDN);
        mpfr_sub(r41190, r41186, r41189, MPFR_RNDN);
        mpfr_sub(r41191, r41185, r41190, MPFR_RNDN);
        return mpfr_get_d(r41191, MPFR_RNDN);
}

static mpfr_t r41192, r41193, r41194, r41195, r41196, r41197, r41198, r41199, r41200, r41201, r41202, r41203, r41204, r41205, r41206, r41207, r41208;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r41192, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41193);
        mpfr_init(r41194);
        mpfr_init(r41195);
        mpfr_init(r41196);
        mpfr_init(r41197);
        mpfr_init_set_str(r41198, "0.5", 10, MPFR_RNDN);
        mpfr_init(r41199);
        mpfr_init(r41200);
        mpfr_init(r41201);
        mpfr_init(r41202);
        mpfr_init(r41203);
        mpfr_init(r41204);
        mpfr_init(r41205);
        mpfr_init(r41206);
        mpfr_init(r41207);
        mpfr_init(r41208);
}

double f_dm(double x, double y, double z, double t) {
        ;
        mpfr_log(r41193, r41192, MPFR_RNDN);
        mpfr_set_d(r41194, z, MPFR_RNDN);
        mpfr_mul(r41195, r41193, r41194, MPFR_RNDN);
        mpfr_set_d(r41196, y, MPFR_RNDN);
        mpfr_mul(r41197, r41194, r41196, MPFR_RNDN);
        ;
        mpfr_mul(r41199, r41198, r41196, MPFR_RNDN);
        mpfr_add(r41200, r41192, r41199, MPFR_RNDN);
        mpfr_mul(r41201, r41197, r41200, MPFR_RNDN);
        mpfr_sub(r41202, r41195, r41201, MPFR_RNDN);
        mpfr_set_d(r41203, t, MPFR_RNDN);
        mpfr_log(r41204, r41196, MPFR_RNDN);
        mpfr_set_d(r41205, x, MPFR_RNDN);
        mpfr_mul(r41206, r41204, r41205, MPFR_RNDN);
        mpfr_sub(r41207, r41203, r41206, MPFR_RNDN);
        mpfr_sub(r41208, r41202, r41207, MPFR_RNDN);
        return mpfr_get_d(r41208, MPFR_RNDN);
}

