#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 r55602 = 1.0;
        float r55603 = x;
        float r55604 = y;
        float r55605 = z;
        float r55606 = r55604 - r55605;
        float r55607 = t;
        float r55608 = r55604 - r55607;
        float r55609 = r55606 * r55608;
        float r55610 = r55603 / r55609;
        float r55611 = r55602 - r55610;
        return r55611;
}

double f_id(double x, double y, double z, double t) {
        double r55612 = 1.0;
        double r55613 = x;
        double r55614 = y;
        double r55615 = z;
        double r55616 = r55614 - r55615;
        double r55617 = t;
        double r55618 = r55614 - r55617;
        double r55619 = r55616 * r55618;
        double r55620 = r55613 / r55619;
        double r55621 = r55612 - r55620;
        return r55621;
}


double f_of(float x, float y, float z, float t) {
        float r55622 = 1.0;
        float r55623 = 1;
        float r55624 = y;
        float r55625 = z;
        float r55626 = r55624 - r55625;
        float r55627 = t;
        float r55628 = r55624 - r55627;
        float r55629 = r55626 * r55628;
        float r55630 = x;
        float r55631 = r55629 / r55630;
        float r55632 = r55623 / r55631;
        float r55633 = r55622 - r55632;
        return r55633;
}

double f_od(double x, double y, double z, double t) {
        double r55634 = 1.0;
        double r55635 = 1;
        double r55636 = y;
        double r55637 = z;
        double r55638 = r55636 - r55637;
        double r55639 = t;
        double r55640 = r55636 - r55639;
        double r55641 = r55638 * r55640;
        double r55642 = x;
        double r55643 = r55641 / r55642;
        double r55644 = r55635 / r55643;
        double r55645 = r55634 - r55644;
        return r55645;
}

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 r55646, r55647, r55648, r55649, r55650, r55651, r55652, r55653, r55654, r55655;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55646, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55647);
        mpfr_init(r55648);
        mpfr_init(r55649);
        mpfr_init(r55650);
        mpfr_init(r55651);
        mpfr_init(r55652);
        mpfr_init(r55653);
        mpfr_init(r55654);
        mpfr_init(r55655);
}

double f_im(double x, double y, double z, double t) {
        ;
        mpfr_set_d(r55647, x, MPFR_RNDN);
        mpfr_set_d(r55648, y, MPFR_RNDN);
        mpfr_set_d(r55649, z, MPFR_RNDN);
        mpfr_sub(r55650, r55648, r55649, MPFR_RNDN);
        mpfr_set_d(r55651, t, MPFR_RNDN);
        mpfr_sub(r55652, r55648, r55651, MPFR_RNDN);
        mpfr_mul(r55653, r55650, r55652, MPFR_RNDN);
        mpfr_div(r55654, r55647, r55653, MPFR_RNDN);
        mpfr_sub(r55655, r55646, r55654, MPFR_RNDN);
        return mpfr_get_d(r55655, MPFR_RNDN);
}

static mpfr_t r55656, r55657, r55658, r55659, r55660, r55661, r55662, r55663, r55664, r55665, r55666, r55667;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55656, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r55657, "1", 10, MPFR_RNDN);
        mpfr_init(r55658);
        mpfr_init(r55659);
        mpfr_init(r55660);
        mpfr_init(r55661);
        mpfr_init(r55662);
        mpfr_init(r55663);
        mpfr_init(r55664);
        mpfr_init(r55665);
        mpfr_init(r55666);
        mpfr_init(r55667);
}

double f_fm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_set_d(r55658, y, MPFR_RNDN);
        mpfr_set_d(r55659, z, MPFR_RNDN);
        mpfr_sub(r55660, r55658, r55659, MPFR_RNDN);
        mpfr_set_d(r55661, t, MPFR_RNDN);
        mpfr_sub(r55662, r55658, r55661, MPFR_RNDN);
        mpfr_mul(r55663, r55660, r55662, MPFR_RNDN);
        mpfr_set_d(r55664, x, MPFR_RNDN);
        mpfr_div(r55665, r55663, r55664, MPFR_RNDN);
        mpfr_div(r55666, r55657, r55665, MPFR_RNDN);
        mpfr_sub(r55667, r55656, r55666, MPFR_RNDN);
        return mpfr_get_d(r55667, MPFR_RNDN);
}

static mpfr_t r55668, r55669, r55670, r55671, r55672, r55673, r55674, r55675, r55676, r55677, r55678, r55679;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55668, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r55669, "1", 10, MPFR_RNDN);
        mpfr_init(r55670);
        mpfr_init(r55671);
        mpfr_init(r55672);
        mpfr_init(r55673);
        mpfr_init(r55674);
        mpfr_init(r55675);
        mpfr_init(r55676);
        mpfr_init(r55677);
        mpfr_init(r55678);
        mpfr_init(r55679);
}

double f_dm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_set_d(r55670, y, MPFR_RNDN);
        mpfr_set_d(r55671, z, MPFR_RNDN);
        mpfr_sub(r55672, r55670, r55671, MPFR_RNDN);
        mpfr_set_d(r55673, t, MPFR_RNDN);
        mpfr_sub(r55674, r55670, r55673, MPFR_RNDN);
        mpfr_mul(r55675, r55672, r55674, MPFR_RNDN);
        mpfr_set_d(r55676, x, MPFR_RNDN);
        mpfr_div(r55677, r55675, r55676, MPFR_RNDN);
        mpfr_div(r55678, r55669, r55677, MPFR_RNDN);
        mpfr_sub(r55679, r55668, r55678, MPFR_RNDN);
        return mpfr_get_d(r55679, MPFR_RNDN);
}

