#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 r55668 = 1.0;
        float r55669 = x;
        float r55670 = y;
        float r55671 = z;
        float r55672 = r55670 - r55671;
        float r55673 = t;
        float r55674 = r55670 - r55673;
        float r55675 = r55672 * r55674;
        float r55676 = r55669 / r55675;
        float r55677 = r55668 - r55676;
        return r55677;
}

double f_id(double x, double y, double z, double t) {
        double r55678 = 1.0;
        double r55679 = x;
        double r55680 = y;
        double r55681 = z;
        double r55682 = r55680 - r55681;
        double r55683 = t;
        double r55684 = r55680 - r55683;
        double r55685 = r55682 * r55684;
        double r55686 = r55679 / r55685;
        double r55687 = r55678 - r55686;
        return r55687;
}


double f_of(float x, float y, float z, float t) {
        float r55688 = 1.0;
        float r55689 = 1;
        float r55690 = y;
        float r55691 = z;
        float r55692 = r55690 - r55691;
        float r55693 = t;
        float r55694 = r55690 - r55693;
        float r55695 = r55692 * r55694;
        float r55696 = x;
        float r55697 = r55695 / r55696;
        float r55698 = r55689 / r55697;
        float r55699 = r55688 - r55698;
        return r55699;
}

double f_od(double x, double y, double z, double t) {
        double r55700 = 1.0;
        double r55701 = 1;
        double r55702 = y;
        double r55703 = z;
        double r55704 = r55702 - r55703;
        double r55705 = t;
        double r55706 = r55702 - r55705;
        double r55707 = r55704 * r55706;
        double r55708 = x;
        double r55709 = r55707 / r55708;
        double r55710 = r55701 / r55709;
        double r55711 = r55700 - r55710;
        return r55711;
}

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 r55712, r55713, r55714, r55715, r55716, r55717, r55718, r55719, r55720, r55721;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55712, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55713);
        mpfr_init(r55714);
        mpfr_init(r55715);
        mpfr_init(r55716);
        mpfr_init(r55717);
        mpfr_init(r55718);
        mpfr_init(r55719);
        mpfr_init(r55720);
        mpfr_init(r55721);
}

double f_im(double x, double y, double z, double t) {
        ;
        mpfr_set_d(r55713, x, MPFR_RNDN);
        mpfr_set_d(r55714, y, MPFR_RNDN);
        mpfr_set_d(r55715, z, MPFR_RNDN);
        mpfr_sub(r55716, r55714, r55715, MPFR_RNDN);
        mpfr_set_d(r55717, t, MPFR_RNDN);
        mpfr_sub(r55718, r55714, r55717, MPFR_RNDN);
        mpfr_mul(r55719, r55716, r55718, MPFR_RNDN);
        mpfr_div(r55720, r55713, r55719, MPFR_RNDN);
        mpfr_sub(r55721, r55712, r55720, MPFR_RNDN);
        return mpfr_get_d(r55721, MPFR_RNDN);
}

static mpfr_t r55722, r55723, r55724, r55725, r55726, r55727, r55728, r55729, r55730, r55731, r55732, r55733;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55722, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r55723, "1", 10, MPFR_RNDN);
        mpfr_init(r55724);
        mpfr_init(r55725);
        mpfr_init(r55726);
        mpfr_init(r55727);
        mpfr_init(r55728);
        mpfr_init(r55729);
        mpfr_init(r55730);
        mpfr_init(r55731);
        mpfr_init(r55732);
        mpfr_init(r55733);
}

double f_fm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_set_d(r55724, y, MPFR_RNDN);
        mpfr_set_d(r55725, z, MPFR_RNDN);
        mpfr_sub(r55726, r55724, r55725, MPFR_RNDN);
        mpfr_set_d(r55727, t, MPFR_RNDN);
        mpfr_sub(r55728, r55724, r55727, MPFR_RNDN);
        mpfr_mul(r55729, r55726, r55728, MPFR_RNDN);
        mpfr_set_d(r55730, x, MPFR_RNDN);
        mpfr_div(r55731, r55729, r55730, MPFR_RNDN);
        mpfr_div(r55732, r55723, r55731, MPFR_RNDN);
        mpfr_sub(r55733, r55722, r55732, MPFR_RNDN);
        return mpfr_get_d(r55733, MPFR_RNDN);
}

static mpfr_t r55734, r55735, r55736, r55737, r55738, r55739, r55740, r55741, r55742, r55743, r55744, r55745;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55734, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r55735, "1", 10, MPFR_RNDN);
        mpfr_init(r55736);
        mpfr_init(r55737);
        mpfr_init(r55738);
        mpfr_init(r55739);
        mpfr_init(r55740);
        mpfr_init(r55741);
        mpfr_init(r55742);
        mpfr_init(r55743);
        mpfr_init(r55744);
        mpfr_init(r55745);
}

double f_dm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_set_d(r55736, y, MPFR_RNDN);
        mpfr_set_d(r55737, z, MPFR_RNDN);
        mpfr_sub(r55738, r55736, r55737, MPFR_RNDN);
        mpfr_set_d(r55739, t, MPFR_RNDN);
        mpfr_sub(r55740, r55736, r55739, MPFR_RNDN);
        mpfr_mul(r55741, r55738, r55740, MPFR_RNDN);
        mpfr_set_d(r55742, x, MPFR_RNDN);
        mpfr_div(r55743, r55741, r55742, MPFR_RNDN);
        mpfr_div(r55744, r55735, r55743, MPFR_RNDN);
        mpfr_sub(r55745, r55734, r55744, MPFR_RNDN);
        return mpfr_get_d(r55745, MPFR_RNDN);
}

