#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, A";

double f_if(float x, float y, float z, float t) {
        float r55610 = 1.0;
        float r55611 = x;
        float r55612 = y;
        float r55613 = z;
        float r55614 = r55612 - r55613;
        float r55615 = t;
        float r55616 = r55612 - r55615;
        float r55617 = r55614 * r55616;
        float r55618 = r55611 / r55617;
        float r55619 = r55610 - r55618;
        return r55619;
}

double f_id(double x, double y, double z, double t) {
        double r55620 = 1.0;
        double r55621 = x;
        double r55622 = y;
        double r55623 = z;
        double r55624 = r55622 - r55623;
        double r55625 = t;
        double r55626 = r55622 - r55625;
        double r55627 = r55624 * r55626;
        double r55628 = r55621 / r55627;
        double r55629 = r55620 - r55628;
        return r55629;
}


double f_of(float x, float y, float z, float t) {
        float r55630 = 1.0;
        float r55631 = 1;
        float r55632 = y;
        float r55633 = z;
        float r55634 = r55632 - r55633;
        float r55635 = t;
        float r55636 = r55632 - r55635;
        float r55637 = r55634 * r55636;
        float r55638 = x;
        float r55639 = r55637 / r55638;
        float r55640 = r55631 / r55639;
        float r55641 = r55630 - r55640;
        return r55641;
}

double f_od(double x, double y, double z, double t) {
        double r55642 = 1.0;
        double r55643 = 1;
        double r55644 = y;
        double r55645 = z;
        double r55646 = r55644 - r55645;
        double r55647 = t;
        double r55648 = r55644 - r55647;
        double r55649 = r55646 * r55648;
        double r55650 = x;
        double r55651 = r55649 / r55650;
        double r55652 = r55643 / r55651;
        double r55653 = r55642 - r55652;
        return r55653;
}

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 r55654, r55655, r55656, r55657, r55658, r55659, r55660, r55661, r55662, r55663;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55654, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55655);
        mpfr_init(r55656);
        mpfr_init(r55657);
        mpfr_init(r55658);
        mpfr_init(r55659);
        mpfr_init(r55660);
        mpfr_init(r55661);
        mpfr_init(r55662);
        mpfr_init(r55663);
}

double f_im(double x, double y, double z, double t) {
        ;
        mpfr_set_d(r55655, x, MPFR_RNDN);
        mpfr_set_d(r55656, y, MPFR_RNDN);
        mpfr_set_d(r55657, z, MPFR_RNDN);
        mpfr_sub(r55658, r55656, r55657, MPFR_RNDN);
        mpfr_set_d(r55659, t, MPFR_RNDN);
        mpfr_sub(r55660, r55656, r55659, MPFR_RNDN);
        mpfr_mul(r55661, r55658, r55660, MPFR_RNDN);
        mpfr_div(r55662, r55655, r55661, MPFR_RNDN);
        mpfr_sub(r55663, r55654, r55662, MPFR_RNDN);
        return mpfr_get_d(r55663, MPFR_RNDN);
}

static mpfr_t r55664, r55665, r55666, r55667, r55668, r55669, r55670, r55671, r55672, r55673, r55674, r55675;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55664, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r55665, "1", 10, MPFR_RNDN);
        mpfr_init(r55666);
        mpfr_init(r55667);
        mpfr_init(r55668);
        mpfr_init(r55669);
        mpfr_init(r55670);
        mpfr_init(r55671);
        mpfr_init(r55672);
        mpfr_init(r55673);
        mpfr_init(r55674);
        mpfr_init(r55675);
}

double f_fm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_set_d(r55666, y, MPFR_RNDN);
        mpfr_set_d(r55667, z, MPFR_RNDN);
        mpfr_sub(r55668, r55666, r55667, MPFR_RNDN);
        mpfr_set_d(r55669, t, MPFR_RNDN);
        mpfr_sub(r55670, r55666, r55669, MPFR_RNDN);
        mpfr_mul(r55671, r55668, r55670, MPFR_RNDN);
        mpfr_set_d(r55672, x, MPFR_RNDN);
        mpfr_div(r55673, r55671, r55672, MPFR_RNDN);
        mpfr_div(r55674, r55665, r55673, MPFR_RNDN);
        mpfr_sub(r55675, r55664, r55674, MPFR_RNDN);
        return mpfr_get_d(r55675, MPFR_RNDN);
}

static mpfr_t r55676, r55677, r55678, r55679, r55680, r55681, r55682, r55683, r55684, r55685, r55686, r55687;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55676, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r55677, "1", 10, MPFR_RNDN);
        mpfr_init(r55678);
        mpfr_init(r55679);
        mpfr_init(r55680);
        mpfr_init(r55681);
        mpfr_init(r55682);
        mpfr_init(r55683);
        mpfr_init(r55684);
        mpfr_init(r55685);
        mpfr_init(r55686);
        mpfr_init(r55687);
}

double f_dm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_set_d(r55678, y, MPFR_RNDN);
        mpfr_set_d(r55679, z, MPFR_RNDN);
        mpfr_sub(r55680, r55678, r55679, MPFR_RNDN);
        mpfr_set_d(r55681, t, MPFR_RNDN);
        mpfr_sub(r55682, r55678, r55681, MPFR_RNDN);
        mpfr_mul(r55683, r55680, r55682, MPFR_RNDN);
        mpfr_set_d(r55684, x, MPFR_RNDN);
        mpfr_div(r55685, r55683, r55684, MPFR_RNDN);
        mpfr_div(r55686, r55677, r55685, MPFR_RNDN);
        mpfr_sub(r55687, r55676, r55686, MPFR_RNDN);
        return mpfr_get_d(r55687, MPFR_RNDN);
}

