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

char *name = "Data.Random.Distribution.Triangular:triangularCDF from random-fu-0.2.6.2, B";

double f_if(float x, float y, float z, float t) {
        float r54409 = x;
        float r54410 = y;
        float r54411 = z;
        float r54412 = r54410 - r54411;
        float r54413 = t;
        float r54414 = r54413 - r54411;
        float r54415 = r54412 * r54414;
        float r54416 = r54409 / r54415;
        return r54416;
}

double f_id(double x, double y, double z, double t) {
        double r54417 = x;
        double r54418 = y;
        double r54419 = z;
        double r54420 = r54418 - r54419;
        double r54421 = t;
        double r54422 = r54421 - r54419;
        double r54423 = r54420 * r54422;
        double r54424 = r54417 / r54423;
        return r54424;
}


double f_of(float x, float y, float z, float t) {
        float r54425 = x;
        float r54426 = t;
        float r54427 = z;
        float r54428 = r54426 - r54427;
        float r54429 = r54425 / r54428;
        float r54430 = y;
        float r54431 = r54430 - r54427;
        float r54432 = r54429 / r54431;
        float r54433 = 1.0f;
        float r54434 = pow(r54432, r54433);
        return r54434;
}

double f_od(double x, double y, double z, double t) {
        double r54435 = x;
        double r54436 = t;
        double r54437 = z;
        double r54438 = r54436 - r54437;
        double r54439 = r54435 / r54438;
        double r54440 = y;
        double r54441 = r54440 - r54437;
        double r54442 = r54439 / r54441;
        double r54443 = 1.0;
        double r54444 = pow(r54442, r54443);
        return r54444;
}

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 r54445, r54446, r54447, r54448, r54449, r54450, r54451, r54452;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r54445);
        mpfr_init(r54446);
        mpfr_init(r54447);
        mpfr_init(r54448);
        mpfr_init(r54449);
        mpfr_init(r54450);
        mpfr_init(r54451);
        mpfr_init(r54452);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r54445, x, MPFR_RNDN);
        mpfr_set_d(r54446, y, MPFR_RNDN);
        mpfr_set_d(r54447, z, MPFR_RNDN);
        mpfr_sub(r54448, r54446, r54447, MPFR_RNDN);
        mpfr_set_d(r54449, t, MPFR_RNDN);
        mpfr_sub(r54450, r54449, r54447, MPFR_RNDN);
        mpfr_mul(r54451, r54448, r54450, MPFR_RNDN);
        mpfr_div(r54452, r54445, r54451, MPFR_RNDN);
        return mpfr_get_d(r54452, MPFR_RNDN);
}

static mpfr_t r54453, r54454, r54455, r54456, r54457, r54458, r54459, r54460, r54461, r54462;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r54453);
        mpfr_init(r54454);
        mpfr_init(r54455);
        mpfr_init(r54456);
        mpfr_init(r54457);
        mpfr_init(r54458);
        mpfr_init(r54459);
        mpfr_init(r54460);
        mpfr_init_set_str(r54461, "1", 10, MPFR_RNDN);
        mpfr_init(r54462);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r54453, x, MPFR_RNDN);
        mpfr_set_d(r54454, t, MPFR_RNDN);
        mpfr_set_d(r54455, z, MPFR_RNDN);
        mpfr_sub(r54456, r54454, r54455, MPFR_RNDN);
        mpfr_div(r54457, r54453, r54456, MPFR_RNDN);
        mpfr_set_d(r54458, y, MPFR_RNDN);
        mpfr_sub(r54459, r54458, r54455, MPFR_RNDN);
        mpfr_div(r54460, r54457, r54459, MPFR_RNDN);
        ;
        mpfr_pow(r54462, r54460, r54461, MPFR_RNDN);
        return mpfr_get_d(r54462, MPFR_RNDN);
}

static mpfr_t r54463, r54464, r54465, r54466, r54467, r54468, r54469, r54470, r54471, r54472;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r54463);
        mpfr_init(r54464);
        mpfr_init(r54465);
        mpfr_init(r54466);
        mpfr_init(r54467);
        mpfr_init(r54468);
        mpfr_init(r54469);
        mpfr_init(r54470);
        mpfr_init_set_str(r54471, "1", 10, MPFR_RNDN);
        mpfr_init(r54472);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r54463, x, MPFR_RNDN);
        mpfr_set_d(r54464, t, MPFR_RNDN);
        mpfr_set_d(r54465, z, MPFR_RNDN);
        mpfr_sub(r54466, r54464, r54465, MPFR_RNDN);
        mpfr_div(r54467, r54463, r54466, MPFR_RNDN);
        mpfr_set_d(r54468, y, MPFR_RNDN);
        mpfr_sub(r54469, r54468, r54465, MPFR_RNDN);
        mpfr_div(r54470, r54467, r54469, MPFR_RNDN);
        ;
        mpfr_pow(r54472, r54470, r54471, MPFR_RNDN);
        return mpfr_get_d(r54472, MPFR_RNDN);
}

