#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 r55746 = 1.0;
        float r55747 = x;
        float r55748 = y;
        float r55749 = z;
        float r55750 = r55748 - r55749;
        float r55751 = t;
        float r55752 = r55748 - r55751;
        float r55753 = r55750 * r55752;
        float r55754 = r55747 / r55753;
        float r55755 = r55746 - r55754;
        return r55755;
}

double f_id(double x, double y, double z, double t) {
        double r55756 = 1.0;
        double r55757 = x;
        double r55758 = y;
        double r55759 = z;
        double r55760 = r55758 - r55759;
        double r55761 = t;
        double r55762 = r55758 - r55761;
        double r55763 = r55760 * r55762;
        double r55764 = r55757 / r55763;
        double r55765 = r55756 - r55764;
        return r55765;
}


double f_of(float x, float y, float z, float t) {
        float r55766 = 1.0;
        float r55767 = 1;
        float r55768 = y;
        float r55769 = z;
        float r55770 = r55768 - r55769;
        float r55771 = t;
        float r55772 = r55768 - r55771;
        float r55773 = r55770 * r55772;
        float r55774 = x;
        float r55775 = r55773 / r55774;
        float r55776 = r55767 / r55775;
        float r55777 = r55766 - r55776;
        return r55777;
}

double f_od(double x, double y, double z, double t) {
        double r55778 = 1.0;
        double r55779 = 1;
        double r55780 = y;
        double r55781 = z;
        double r55782 = r55780 - r55781;
        double r55783 = t;
        double r55784 = r55780 - r55783;
        double r55785 = r55782 * r55784;
        double r55786 = x;
        double r55787 = r55785 / r55786;
        double r55788 = r55779 / r55787;
        double r55789 = r55778 - r55788;
        return r55789;
}

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 r55790, r55791, r55792, r55793, r55794, r55795, r55796, r55797, r55798, r55799;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55790, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55791);
        mpfr_init(r55792);
        mpfr_init(r55793);
        mpfr_init(r55794);
        mpfr_init(r55795);
        mpfr_init(r55796);
        mpfr_init(r55797);
        mpfr_init(r55798);
        mpfr_init(r55799);
}

double f_im(double x, double y, double z, double t) {
        ;
        mpfr_set_d(r55791, x, MPFR_RNDN);
        mpfr_set_d(r55792, y, MPFR_RNDN);
        mpfr_set_d(r55793, z, MPFR_RNDN);
        mpfr_sub(r55794, r55792, r55793, MPFR_RNDN);
        mpfr_set_d(r55795, t, MPFR_RNDN);
        mpfr_sub(r55796, r55792, r55795, MPFR_RNDN);
        mpfr_mul(r55797, r55794, r55796, MPFR_RNDN);
        mpfr_div(r55798, r55791, r55797, MPFR_RNDN);
        mpfr_sub(r55799, r55790, r55798, MPFR_RNDN);
        return mpfr_get_d(r55799, MPFR_RNDN);
}

static mpfr_t r55800, r55801, r55802, r55803, r55804, r55805, r55806, r55807, r55808, r55809, r55810, r55811;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55800, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r55801, "1", 10, MPFR_RNDN);
        mpfr_init(r55802);
        mpfr_init(r55803);
        mpfr_init(r55804);
        mpfr_init(r55805);
        mpfr_init(r55806);
        mpfr_init(r55807);
        mpfr_init(r55808);
        mpfr_init(r55809);
        mpfr_init(r55810);
        mpfr_init(r55811);
}

double f_fm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_set_d(r55802, y, MPFR_RNDN);
        mpfr_set_d(r55803, z, MPFR_RNDN);
        mpfr_sub(r55804, r55802, r55803, MPFR_RNDN);
        mpfr_set_d(r55805, t, MPFR_RNDN);
        mpfr_sub(r55806, r55802, r55805, MPFR_RNDN);
        mpfr_mul(r55807, r55804, r55806, MPFR_RNDN);
        mpfr_set_d(r55808, x, MPFR_RNDN);
        mpfr_div(r55809, r55807, r55808, MPFR_RNDN);
        mpfr_div(r55810, r55801, r55809, MPFR_RNDN);
        mpfr_sub(r55811, r55800, r55810, MPFR_RNDN);
        return mpfr_get_d(r55811, MPFR_RNDN);
}

static mpfr_t r55812, r55813, r55814, r55815, r55816, r55817, r55818, r55819, r55820, r55821, r55822, r55823;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55812, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r55813, "1", 10, MPFR_RNDN);
        mpfr_init(r55814);
        mpfr_init(r55815);
        mpfr_init(r55816);
        mpfr_init(r55817);
        mpfr_init(r55818);
        mpfr_init(r55819);
        mpfr_init(r55820);
        mpfr_init(r55821);
        mpfr_init(r55822);
        mpfr_init(r55823);
}

double f_dm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_set_d(r55814, y, MPFR_RNDN);
        mpfr_set_d(r55815, z, MPFR_RNDN);
        mpfr_sub(r55816, r55814, r55815, MPFR_RNDN);
        mpfr_set_d(r55817, t, MPFR_RNDN);
        mpfr_sub(r55818, r55814, r55817, MPFR_RNDN);
        mpfr_mul(r55819, r55816, r55818, MPFR_RNDN);
        mpfr_set_d(r55820, x, MPFR_RNDN);
        mpfr_div(r55821, r55819, r55820, MPFR_RNDN);
        mpfr_div(r55822, r55813, r55821, MPFR_RNDN);
        mpfr_sub(r55823, r55812, r55822, MPFR_RNDN);
        return mpfr_get_d(r55823, MPFR_RNDN);
}

