#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 r37296 = x;
        float r37297 = 1.0f;
        float r37298 = r37296 - r37297;
        float r37299 = y;
        float r37300 = log(r37299);
        float r37301 = r37298 * r37300;
        float r37302 = z;
        float r37303 = r37302 - r37297;
        float r37304 = r37297 - r37299;
        float r37305 = log(r37304);
        float r37306 = r37303 * r37305;
        float r37307 = r37301 + r37306;
        float r37308 = t;
        float r37309 = r37307 - r37308;
        return r37309;
}

double f_id(double x, double y, double z, double t) {
        double r37310 = x;
        double r37311 = 1.0;
        double r37312 = r37310 - r37311;
        double r37313 = y;
        double r37314 = log(r37313);
        double r37315 = r37312 * r37314;
        double r37316 = z;
        double r37317 = r37316 - r37311;
        double r37318 = r37311 - r37313;
        double r37319 = log(r37318);
        double r37320 = r37317 * r37319;
        double r37321 = r37315 + r37320;
        double r37322 = t;
        double r37323 = r37321 - r37322;
        return r37323;
}


double f_of(float x, float y, float z, float t) {
        float r37324 = y;
        float r37325 = log(r37324);
        float r37326 = x;
        float r37327 = 1.0f;
        float r37328 = r37326 - r37327;
        float r37329 = r37325 * r37328;
        float r37330 = 0.5f;
        float r37331 = r37324 * r37330;
        float r37332 = r37331 * r37324;
        float r37333 = t;
        float r37334 = r37332 - r37333;
        float r37335 = r37329 + r37334;
        float r37336 = z;
        float r37337 = r37324 * r37336;
        float r37338 = r37331 + r37327;
        float r37339 = r37337 * r37338;
        float r37340 = r37335 - r37339;
        return r37340;
}

double f_od(double x, double y, double z, double t) {
        double r37341 = y;
        double r37342 = log(r37341);
        double r37343 = x;
        double r37344 = 1.0;
        double r37345 = r37343 - r37344;
        double r37346 = r37342 * r37345;
        double r37347 = 0.5;
        double r37348 = r37341 * r37347;
        double r37349 = r37348 * r37341;
        double r37350 = t;
        double r37351 = r37349 - r37350;
        double r37352 = r37346 + r37351;
        double r37353 = z;
        double r37354 = r37341 * r37353;
        double r37355 = r37348 + r37344;
        double r37356 = r37354 * r37355;
        double r37357 = r37352 - r37356;
        return r37357;
}

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 r37358, r37359, r37360, r37361, r37362, r37363, r37364, r37365, r37366, r37367, r37368, r37369, r37370, r37371;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r37358);
        mpfr_init_set_str(r37359, "1.0", 10, MPFR_RNDN);
        mpfr_init(r37360);
        mpfr_init(r37361);
        mpfr_init(r37362);
        mpfr_init(r37363);
        mpfr_init(r37364);
        mpfr_init(r37365);
        mpfr_init(r37366);
        mpfr_init(r37367);
        mpfr_init(r37368);
        mpfr_init(r37369);
        mpfr_init(r37370);
        mpfr_init(r37371);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r37358, x, MPFR_RNDN);
        ;
        mpfr_sub(r37360, r37358, r37359, MPFR_RNDN);
        mpfr_set_d(r37361, y, MPFR_RNDN);
        mpfr_log(r37362, r37361, MPFR_RNDN);
        mpfr_mul(r37363, r37360, r37362, MPFR_RNDN);
        mpfr_set_d(r37364, z, MPFR_RNDN);
        mpfr_sub(r37365, r37364, r37359, MPFR_RNDN);
        mpfr_sub(r37366, r37359, r37361, MPFR_RNDN);
        mpfr_log(r37367, r37366, MPFR_RNDN);
        mpfr_mul(r37368, r37365, r37367, MPFR_RNDN);
        mpfr_add(r37369, r37363, r37368, MPFR_RNDN);
        mpfr_set_d(r37370, t, MPFR_RNDN);
        mpfr_sub(r37371, r37369, r37370, MPFR_RNDN);
        return mpfr_get_d(r37371, MPFR_RNDN);
}

static mpfr_t r37372, r37373, r37374, r37375, r37376, r37377, r37378, r37379, r37380, r37381, r37382, r37383, r37384, r37385, r37386, r37387, r37388;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r37372);
        mpfr_init(r37373);
        mpfr_init(r37374);
        mpfr_init_set_str(r37375, "1.0", 10, MPFR_RNDN);
        mpfr_init(r37376);
        mpfr_init(r37377);
        mpfr_init_set_str(r37378, "0.5", 10, MPFR_RNDN);
        mpfr_init(r37379);
        mpfr_init(r37380);
        mpfr_init(r37381);
        mpfr_init(r37382);
        mpfr_init(r37383);
        mpfr_init(r37384);
        mpfr_init(r37385);
        mpfr_init(r37386);
        mpfr_init(r37387);
        mpfr_init(r37388);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r37372, y, MPFR_RNDN);
        mpfr_log(r37373, r37372, MPFR_RNDN);
        mpfr_set_d(r37374, x, MPFR_RNDN);
        ;
        mpfr_sub(r37376, r37374, r37375, MPFR_RNDN);
        mpfr_mul(r37377, r37373, r37376, MPFR_RNDN);
        ;
        mpfr_mul(r37379, r37372, r37378, MPFR_RNDN);
        mpfr_mul(r37380, r37379, r37372, MPFR_RNDN);
        mpfr_set_d(r37381, t, MPFR_RNDN);
        mpfr_sub(r37382, r37380, r37381, MPFR_RNDN);
        mpfr_add(r37383, r37377, r37382, MPFR_RNDN);
        mpfr_set_d(r37384, z, MPFR_RNDN);
        mpfr_mul(r37385, r37372, r37384, MPFR_RNDN);
        mpfr_add(r37386, r37379, r37375, MPFR_RNDN);
        mpfr_mul(r37387, r37385, r37386, MPFR_RNDN);
        mpfr_sub(r37388, r37383, r37387, MPFR_RNDN);
        return mpfr_get_d(r37388, MPFR_RNDN);
}

static mpfr_t r37389, r37390, r37391, r37392, r37393, r37394, r37395, r37396, r37397, r37398, r37399, r37400, r37401, r37402, r37403, r37404, r37405;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r37389);
        mpfr_init(r37390);
        mpfr_init(r37391);
        mpfr_init_set_str(r37392, "1.0", 10, MPFR_RNDN);
        mpfr_init(r37393);
        mpfr_init(r37394);
        mpfr_init_set_str(r37395, "0.5", 10, MPFR_RNDN);
        mpfr_init(r37396);
        mpfr_init(r37397);
        mpfr_init(r37398);
        mpfr_init(r37399);
        mpfr_init(r37400);
        mpfr_init(r37401);
        mpfr_init(r37402);
        mpfr_init(r37403);
        mpfr_init(r37404);
        mpfr_init(r37405);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r37389, y, MPFR_RNDN);
        mpfr_log(r37390, r37389, MPFR_RNDN);
        mpfr_set_d(r37391, x, MPFR_RNDN);
        ;
        mpfr_sub(r37393, r37391, r37392, MPFR_RNDN);
        mpfr_mul(r37394, r37390, r37393, MPFR_RNDN);
        ;
        mpfr_mul(r37396, r37389, r37395, MPFR_RNDN);
        mpfr_mul(r37397, r37396, r37389, MPFR_RNDN);
        mpfr_set_d(r37398, t, MPFR_RNDN);
        mpfr_sub(r37399, r37397, r37398, MPFR_RNDN);
        mpfr_add(r37400, r37394, r37399, MPFR_RNDN);
        mpfr_set_d(r37401, z, MPFR_RNDN);
        mpfr_mul(r37402, r37389, r37401, MPFR_RNDN);
        mpfr_add(r37403, r37396, r37392, MPFR_RNDN);
        mpfr_mul(r37404, r37402, r37403, MPFR_RNDN);
        mpfr_sub(r37405, r37400, r37404, MPFR_RNDN);
        return mpfr_get_d(r37405, MPFR_RNDN);
}

