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

char *name = "Statistics.Distribution.Beta:$cdensity from math-functions-0.1.5.2";

double f_if(float x, float y, float z, float t) {
        float r41098 = x;
        float r41099 = 1.0;
        float r41100 = r41098 - r41099;
        float r41101 = y;
        float r41102 = log(r41101);
        float r41103 = r41100 * r41102;
        float r41104 = z;
        float r41105 = r41104 - r41099;
        float r41106 = r41099 - r41101;
        float r41107 = log(r41106);
        float r41108 = r41105 * r41107;
        float r41109 = r41103 + r41108;
        float r41110 = t;
        float r41111 = r41109 - r41110;
        return r41111;
}

double f_id(double x, double y, double z, double t) {
        double r41112 = x;
        double r41113 = 1.0;
        double r41114 = r41112 - r41113;
        double r41115 = y;
        double r41116 = log(r41115);
        double r41117 = r41114 * r41116;
        double r41118 = z;
        double r41119 = r41118 - r41113;
        double r41120 = r41113 - r41115;
        double r41121 = log(r41120);
        double r41122 = r41119 * r41121;
        double r41123 = r41117 + r41122;
        double r41124 = t;
        double r41125 = r41123 - r41124;
        return r41125;
}


double f_of(float x, float y, float z, float t) {
        float r41126 = x;
        float r41127 = 1.0;
        float r41128 = r41126 - r41127;
        float r41129 = y;
        float r41130 = log(r41129);
        float r41131 = r41128 * r41130;
        float r41132 = z;
        float r41133 = r41132 - r41127;
        float r41134 = cbrt(r41133);
        float r41135 = r41134 * r41134;
        float r41136 = log(r41127);
        float r41137 = 1/2;
        float r41138 = 2;
        float r41139 = pow(r41129, r41138);
        float r41140 = pow(r41127, r41138);
        float r41141 = r41139 / r41140;
        float r41142 = r41137 * r41141;
        float r41143 = r41127 * r41129;
        float r41144 = r41142 + r41143;
        float r41145 = r41136 - r41144;
        float r41146 = r41134 * r41145;
        float r41147 = r41135 * r41146;
        float r41148 = r41131 + r41147;
        float r41149 = t;
        float r41150 = r41148 - r41149;
        return r41150;
}

double f_od(double x, double y, double z, double t) {
        double r41151 = x;
        double r41152 = 1.0;
        double r41153 = r41151 - r41152;
        double r41154 = y;
        double r41155 = log(r41154);
        double r41156 = r41153 * r41155;
        double r41157 = z;
        double r41158 = r41157 - r41152;
        double r41159 = cbrt(r41158);
        double r41160 = r41159 * r41159;
        double r41161 = log(r41152);
        double r41162 = 1/2;
        double r41163 = 2;
        double r41164 = pow(r41154, r41163);
        double r41165 = pow(r41152, r41163);
        double r41166 = r41164 / r41165;
        double r41167 = r41162 * r41166;
        double r41168 = r41152 * r41154;
        double r41169 = r41167 + r41168;
        double r41170 = r41161 - r41169;
        double r41171 = r41159 * r41170;
        double r41172 = r41160 * r41171;
        double r41173 = r41156 + r41172;
        double r41174 = t;
        double r41175 = r41173 - r41174;
        return r41175;
}

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 r41176, r41177, r41178, r41179, r41180, r41181, r41182, r41183, r41184, r41185, r41186, r41187, r41188, r41189;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init(r41176);
        mpfr_init_set_str(r41177, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41178);
        mpfr_init(r41179);
        mpfr_init(r41180);
        mpfr_init(r41181);
        mpfr_init(r41182);
        mpfr_init(r41183);
        mpfr_init(r41184);
        mpfr_init(r41185);
        mpfr_init(r41186);
        mpfr_init(r41187);
        mpfr_init(r41188);
        mpfr_init(r41189);
}

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

static mpfr_t r41190, r41191, r41192, r41193, r41194, r41195, r41196, r41197, r41198, r41199, r41200, r41201, r41202, r41203, r41204, r41205, r41206, r41207, r41208, r41209, r41210, r41211, r41212, r41213, r41214;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r41190);
        mpfr_init_set_str(r41191, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41192);
        mpfr_init(r41193);
        mpfr_init(r41194);
        mpfr_init(r41195);
        mpfr_init(r41196);
        mpfr_init(r41197);
        mpfr_init(r41198);
        mpfr_init(r41199);
        mpfr_init(r41200);
        mpfr_init_set_str(r41201, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r41202, "2", 10, MPFR_RNDN);
        mpfr_init(r41203);
        mpfr_init(r41204);
        mpfr_init(r41205);
        mpfr_init(r41206);
        mpfr_init(r41207);
        mpfr_init(r41208);
        mpfr_init(r41209);
        mpfr_init(r41210);
        mpfr_init(r41211);
        mpfr_init(r41212);
        mpfr_init(r41213);
        mpfr_init(r41214);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r41190, x, MPFR_RNDN);
        ;
        mpfr_sub(r41192, r41190, r41191, MPFR_RNDN);
        mpfr_set_d(r41193, y, MPFR_RNDN);
        mpfr_log(r41194, r41193, MPFR_RNDN);
        mpfr_mul(r41195, r41192, r41194, MPFR_RNDN);
        mpfr_set_d(r41196, z, MPFR_RNDN);
        mpfr_sub(r41197, r41196, r41191, MPFR_RNDN);
        mpfr_cbrt(r41198, r41197, MPFR_RNDN);
        mpfr_mul(r41199, r41198, r41198, MPFR_RNDN);
        mpfr_log(r41200, r41191, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r41203, r41193, r41202, MPFR_RNDN);
        mpfr_pow(r41204, r41191, r41202, MPFR_RNDN);
        mpfr_div(r41205, r41203, r41204, MPFR_RNDN);
        mpfr_mul(r41206, r41201, r41205, MPFR_RNDN);
        mpfr_mul(r41207, r41191, r41193, MPFR_RNDN);
        mpfr_add(r41208, r41206, r41207, MPFR_RNDN);
        mpfr_sub(r41209, r41200, r41208, MPFR_RNDN);
        mpfr_mul(r41210, r41198, r41209, MPFR_RNDN);
        mpfr_mul(r41211, r41199, r41210, MPFR_RNDN);
        mpfr_add(r41212, r41195, r41211, MPFR_RNDN);
        mpfr_set_d(r41213, t, MPFR_RNDN);
        mpfr_sub(r41214, r41212, r41213, MPFR_RNDN);
        return mpfr_get_d(r41214, MPFR_RNDN);
}

static mpfr_t r41215, r41216, r41217, r41218, r41219, r41220, r41221, r41222, r41223, r41224, r41225, r41226, r41227, r41228, r41229, r41230, r41231, r41232, r41233, r41234, r41235, r41236, r41237, r41238, r41239;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r41215);
        mpfr_init_set_str(r41216, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41217);
        mpfr_init(r41218);
        mpfr_init(r41219);
        mpfr_init(r41220);
        mpfr_init(r41221);
        mpfr_init(r41222);
        mpfr_init(r41223);
        mpfr_init(r41224);
        mpfr_init(r41225);
        mpfr_init_set_str(r41226, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r41227, "2", 10, MPFR_RNDN);
        mpfr_init(r41228);
        mpfr_init(r41229);
        mpfr_init(r41230);
        mpfr_init(r41231);
        mpfr_init(r41232);
        mpfr_init(r41233);
        mpfr_init(r41234);
        mpfr_init(r41235);
        mpfr_init(r41236);
        mpfr_init(r41237);
        mpfr_init(r41238);
        mpfr_init(r41239);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r41215, x, MPFR_RNDN);
        ;
        mpfr_sub(r41217, r41215, r41216, MPFR_RNDN);
        mpfr_set_d(r41218, y, MPFR_RNDN);
        mpfr_log(r41219, r41218, MPFR_RNDN);
        mpfr_mul(r41220, r41217, r41219, MPFR_RNDN);
        mpfr_set_d(r41221, z, MPFR_RNDN);
        mpfr_sub(r41222, r41221, r41216, MPFR_RNDN);
        mpfr_cbrt(r41223, r41222, MPFR_RNDN);
        mpfr_mul(r41224, r41223, r41223, MPFR_RNDN);
        mpfr_log(r41225, r41216, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r41228, r41218, r41227, MPFR_RNDN);
        mpfr_pow(r41229, r41216, r41227, MPFR_RNDN);
        mpfr_div(r41230, r41228, r41229, MPFR_RNDN);
        mpfr_mul(r41231, r41226, r41230, MPFR_RNDN);
        mpfr_mul(r41232, r41216, r41218, MPFR_RNDN);
        mpfr_add(r41233, r41231, r41232, MPFR_RNDN);
        mpfr_sub(r41234, r41225, r41233, MPFR_RNDN);
        mpfr_mul(r41235, r41223, r41234, MPFR_RNDN);
        mpfr_mul(r41236, r41224, r41235, MPFR_RNDN);
        mpfr_add(r41237, r41220, r41236, MPFR_RNDN);
        mpfr_set_d(r41238, t, MPFR_RNDN);
        mpfr_sub(r41239, r41237, r41238, MPFR_RNDN);
        return mpfr_get_d(r41239, MPFR_RNDN);
}

