#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 r54437 = x;
        float r54438 = y;
        float r54439 = z;
        float r54440 = r54438 - r54439;
        float r54441 = t;
        float r54442 = r54441 - r54439;
        float r54443 = r54440 * r54442;
        float r54444 = r54437 / r54443;
        return r54444;
}

double f_id(double x, double y, double z, double t) {
        double r54445 = x;
        double r54446 = y;
        double r54447 = z;
        double r54448 = r54446 - r54447;
        double r54449 = t;
        double r54450 = r54449 - r54447;
        double r54451 = r54448 * r54450;
        double r54452 = r54445 / r54451;
        return r54452;
}


double f_of(float x, float y, float z, float t) {
        float r54453 = x;
        float r54454 = y;
        float r54455 = z;
        float r54456 = r54454 - r54455;
        float r54457 = r54453 / r54456;
        float r54458 = t;
        float r54459 = r54458 - r54455;
        float r54460 = r54457 / r54459;
        return r54460;
}

double f_od(double x, double y, double z, double t) {
        double r54461 = x;
        double r54462 = y;
        double r54463 = z;
        double r54464 = r54462 - r54463;
        double r54465 = r54461 / r54464;
        double r54466 = t;
        double r54467 = r54466 - r54463;
        double r54468 = r54465 / r54467;
        return r54468;
}

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 r54469, r54470, r54471, r54472, r54473, r54474, r54475, r54476;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54469);
        mpfr_init(r54470);
        mpfr_init(r54471);
        mpfr_init(r54472);
        mpfr_init(r54473);
        mpfr_init(r54474);
        mpfr_init(r54475);
        mpfr_init(r54476);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r54469, x, MPFR_RNDN);
        mpfr_set_d(r54470, y, MPFR_RNDN);
        mpfr_set_d(r54471, z, MPFR_RNDN);
        mpfr_sub(r54472, r54470, r54471, MPFR_RNDN);
        mpfr_set_d(r54473, t, MPFR_RNDN);
        mpfr_sub(r54474, r54473, r54471, MPFR_RNDN);
        mpfr_mul(r54475, r54472, r54474, MPFR_RNDN);
        mpfr_div(r54476, r54469, r54475, MPFR_RNDN);
        return mpfr_get_d(r54476, MPFR_RNDN);
}

static mpfr_t r54477, r54478, r54479, r54480, r54481, r54482, r54483, r54484;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54477);
        mpfr_init(r54478);
        mpfr_init(r54479);
        mpfr_init(r54480);
        mpfr_init(r54481);
        mpfr_init(r54482);
        mpfr_init(r54483);
        mpfr_init(r54484);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r54477, x, MPFR_RNDN);
        mpfr_set_d(r54478, y, MPFR_RNDN);
        mpfr_set_d(r54479, z, MPFR_RNDN);
        mpfr_sub(r54480, r54478, r54479, MPFR_RNDN);
        mpfr_div(r54481, r54477, r54480, MPFR_RNDN);
        mpfr_set_d(r54482, t, MPFR_RNDN);
        mpfr_sub(r54483, r54482, r54479, MPFR_RNDN);
        mpfr_div(r54484, r54481, r54483, MPFR_RNDN);
        return mpfr_get_d(r54484, MPFR_RNDN);
}

static mpfr_t r54485, r54486, r54487, r54488, r54489, r54490, r54491, r54492;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54485);
        mpfr_init(r54486);
        mpfr_init(r54487);
        mpfr_init(r54488);
        mpfr_init(r54489);
        mpfr_init(r54490);
        mpfr_init(r54491);
        mpfr_init(r54492);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r54485, x, MPFR_RNDN);
        mpfr_set_d(r54486, y, MPFR_RNDN);
        mpfr_set_d(r54487, z, MPFR_RNDN);
        mpfr_sub(r54488, r54486, r54487, MPFR_RNDN);
        mpfr_div(r54489, r54485, r54488, MPFR_RNDN);
        mpfr_set_d(r54490, t, MPFR_RNDN);
        mpfr_sub(r54491, r54490, r54487, MPFR_RNDN);
        mpfr_div(r54492, r54489, r54491, MPFR_RNDN);
        return mpfr_get_d(r54492, MPFR_RNDN);
}

