#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 r40993 = x;
        float r40994 = 1.0;
        float r40995 = r40993 - r40994;
        float r40996 = y;
        float r40997 = log(r40996);
        float r40998 = r40995 * r40997;
        float r40999 = z;
        float r41000 = r40999 - r40994;
        float r41001 = r40994 - r40996;
        float r41002 = log(r41001);
        float r41003 = r41000 * r41002;
        float r41004 = r40998 + r41003;
        float r41005 = t;
        float r41006 = r41004 - r41005;
        return r41006;
}

double f_id(double x, double y, double z, double t) {
        double r41007 = x;
        double r41008 = 1.0;
        double r41009 = r41007 - r41008;
        double r41010 = y;
        double r41011 = log(r41010);
        double r41012 = r41009 * r41011;
        double r41013 = z;
        double r41014 = r41013 - r41008;
        double r41015 = r41008 - r41010;
        double r41016 = log(r41015);
        double r41017 = r41014 * r41016;
        double r41018 = r41012 + r41017;
        double r41019 = t;
        double r41020 = r41018 - r41019;
        return r41020;
}


double f_of(float x, float y, float z, float t) {
        float r41021 = x;
        float r41022 = 1.0;
        float r41023 = r41021 - r41022;
        float r41024 = y;
        float r41025 = log(r41024);
        float r41026 = r41023 * r41025;
        float r41027 = z;
        float r41028 = r41027 - r41022;
        float r41029 = cbrt(r41028);
        float r41030 = r41029 * r41029;
        float r41031 = log(r41022);
        float r41032 = 1/2;
        float r41033 = 2;
        float r41034 = pow(r41024, r41033);
        float r41035 = pow(r41022, r41033);
        float r41036 = r41034 / r41035;
        float r41037 = r41032 * r41036;
        float r41038 = r41022 * r41024;
        float r41039 = r41037 + r41038;
        float r41040 = r41031 - r41039;
        float r41041 = r41029 * r41040;
        float r41042 = r41030 * r41041;
        float r41043 = r41026 + r41042;
        float r41044 = t;
        float r41045 = r41043 - r41044;
        return r41045;
}

double f_od(double x, double y, double z, double t) {
        double r41046 = x;
        double r41047 = 1.0;
        double r41048 = r41046 - r41047;
        double r41049 = y;
        double r41050 = log(r41049);
        double r41051 = r41048 * r41050;
        double r41052 = z;
        double r41053 = r41052 - r41047;
        double r41054 = cbrt(r41053);
        double r41055 = r41054 * r41054;
        double r41056 = log(r41047);
        double r41057 = 1/2;
        double r41058 = 2;
        double r41059 = pow(r41049, r41058);
        double r41060 = pow(r41047, r41058);
        double r41061 = r41059 / r41060;
        double r41062 = r41057 * r41061;
        double r41063 = r41047 * r41049;
        double r41064 = r41062 + r41063;
        double r41065 = r41056 - r41064;
        double r41066 = r41054 * r41065;
        double r41067 = r41055 * r41066;
        double r41068 = r41051 + r41067;
        double r41069 = t;
        double r41070 = r41068 - r41069;
        return r41070;
}

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 r41071, r41072, r41073, r41074, r41075, r41076, r41077, r41078, r41079, r41080, r41081, r41082, r41083, r41084;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init(r41071);
        mpfr_init_set_str(r41072, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41073);
        mpfr_init(r41074);
        mpfr_init(r41075);
        mpfr_init(r41076);
        mpfr_init(r41077);
        mpfr_init(r41078);
        mpfr_init(r41079);
        mpfr_init(r41080);
        mpfr_init(r41081);
        mpfr_init(r41082);
        mpfr_init(r41083);
        mpfr_init(r41084);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r41071, x, MPFR_RNDN);
        ;
        mpfr_sub(r41073, r41071, r41072, MPFR_RNDN);
        mpfr_set_d(r41074, y, MPFR_RNDN);
        mpfr_log(r41075, r41074, MPFR_RNDN);
        mpfr_mul(r41076, r41073, r41075, MPFR_RNDN);
        mpfr_set_d(r41077, z, MPFR_RNDN);
        mpfr_sub(r41078, r41077, r41072, MPFR_RNDN);
        mpfr_sub(r41079, r41072, r41074, MPFR_RNDN);
        mpfr_log(r41080, r41079, MPFR_RNDN);
        mpfr_mul(r41081, r41078, r41080, MPFR_RNDN);
        mpfr_add(r41082, r41076, r41081, MPFR_RNDN);
        mpfr_set_d(r41083, t, MPFR_RNDN);
        mpfr_sub(r41084, r41082, r41083, MPFR_RNDN);
        return mpfr_get_d(r41084, MPFR_RNDN);
}

static mpfr_t r41085, r41086, r41087, r41088, r41089, r41090, r41091, r41092, r41093, r41094, r41095, r41096, r41097, r41098, r41099, r41100, r41101, r41102, r41103, r41104, r41105, r41106, r41107, r41108, r41109;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r41085);
        mpfr_init_set_str(r41086, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41087);
        mpfr_init(r41088);
        mpfr_init(r41089);
        mpfr_init(r41090);
        mpfr_init(r41091);
        mpfr_init(r41092);
        mpfr_init(r41093);
        mpfr_init(r41094);
        mpfr_init(r41095);
        mpfr_init_set_str(r41096, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r41097, "2", 10, MPFR_RNDN);
        mpfr_init(r41098);
        mpfr_init(r41099);
        mpfr_init(r41100);
        mpfr_init(r41101);
        mpfr_init(r41102);
        mpfr_init(r41103);
        mpfr_init(r41104);
        mpfr_init(r41105);
        mpfr_init(r41106);
        mpfr_init(r41107);
        mpfr_init(r41108);
        mpfr_init(r41109);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r41085, x, MPFR_RNDN);
        ;
        mpfr_sub(r41087, r41085, r41086, MPFR_RNDN);
        mpfr_set_d(r41088, y, MPFR_RNDN);
        mpfr_log(r41089, r41088, MPFR_RNDN);
        mpfr_mul(r41090, r41087, r41089, MPFR_RNDN);
        mpfr_set_d(r41091, z, MPFR_RNDN);
        mpfr_sub(r41092, r41091, r41086, MPFR_RNDN);
        mpfr_cbrt(r41093, r41092, MPFR_RNDN);
        mpfr_mul(r41094, r41093, r41093, MPFR_RNDN);
        mpfr_log(r41095, r41086, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r41098, r41088, r41097, MPFR_RNDN);
        mpfr_pow(r41099, r41086, r41097, MPFR_RNDN);
        mpfr_div(r41100, r41098, r41099, MPFR_RNDN);
        mpfr_mul(r41101, r41096, r41100, MPFR_RNDN);
        mpfr_mul(r41102, r41086, r41088, MPFR_RNDN);
        mpfr_add(r41103, r41101, r41102, MPFR_RNDN);
        mpfr_sub(r41104, r41095, r41103, MPFR_RNDN);
        mpfr_mul(r41105, r41093, r41104, MPFR_RNDN);
        mpfr_mul(r41106, r41094, r41105, MPFR_RNDN);
        mpfr_add(r41107, r41090, r41106, MPFR_RNDN);
        mpfr_set_d(r41108, t, MPFR_RNDN);
        mpfr_sub(r41109, r41107, r41108, MPFR_RNDN);
        return mpfr_get_d(r41109, MPFR_RNDN);
}

static mpfr_t r41110, r41111, r41112, r41113, r41114, r41115, r41116, r41117, r41118, r41119, r41120, r41121, r41122, r41123, r41124, r41125, r41126, r41127, r41128, r41129, r41130, r41131, r41132, r41133, r41134;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r41110);
        mpfr_init_set_str(r41111, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41112);
        mpfr_init(r41113);
        mpfr_init(r41114);
        mpfr_init(r41115);
        mpfr_init(r41116);
        mpfr_init(r41117);
        mpfr_init(r41118);
        mpfr_init(r41119);
        mpfr_init(r41120);
        mpfr_init_set_str(r41121, "1/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r41122, "2", 10, MPFR_RNDN);
        mpfr_init(r41123);
        mpfr_init(r41124);
        mpfr_init(r41125);
        mpfr_init(r41126);
        mpfr_init(r41127);
        mpfr_init(r41128);
        mpfr_init(r41129);
        mpfr_init(r41130);
        mpfr_init(r41131);
        mpfr_init(r41132);
        mpfr_init(r41133);
        mpfr_init(r41134);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r41110, x, MPFR_RNDN);
        ;
        mpfr_sub(r41112, r41110, r41111, MPFR_RNDN);
        mpfr_set_d(r41113, y, MPFR_RNDN);
        mpfr_log(r41114, r41113, MPFR_RNDN);
        mpfr_mul(r41115, r41112, r41114, MPFR_RNDN);
        mpfr_set_d(r41116, z, MPFR_RNDN);
        mpfr_sub(r41117, r41116, r41111, MPFR_RNDN);
        mpfr_cbrt(r41118, r41117, MPFR_RNDN);
        mpfr_mul(r41119, r41118, r41118, MPFR_RNDN);
        mpfr_log(r41120, r41111, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r41123, r41113, r41122, MPFR_RNDN);
        mpfr_pow(r41124, r41111, r41122, MPFR_RNDN);
        mpfr_div(r41125, r41123, r41124, MPFR_RNDN);
        mpfr_mul(r41126, r41121, r41125, MPFR_RNDN);
        mpfr_mul(r41127, r41111, r41113, MPFR_RNDN);
        mpfr_add(r41128, r41126, r41127, MPFR_RNDN);
        mpfr_sub(r41129, r41120, r41128, MPFR_RNDN);
        mpfr_mul(r41130, r41118, r41129, MPFR_RNDN);
        mpfr_mul(r41131, r41119, r41130, MPFR_RNDN);
        mpfr_add(r41132, r41115, r41131, MPFR_RNDN);
        mpfr_set_d(r41133, t, MPFR_RNDN);
        mpfr_sub(r41134, r41132, r41133, MPFR_RNDN);
        return mpfr_get_d(r41134, MPFR_RNDN);
}

