#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 r55894 = 1.0;
        float r55895 = x;
        float r55896 = y;
        float r55897 = z;
        float r55898 = r55896 - r55897;
        float r55899 = t;
        float r55900 = r55896 - r55899;
        float r55901 = r55898 * r55900;
        float r55902 = r55895 / r55901;
        float r55903 = r55894 - r55902;
        return r55903;
}

double f_id(double x, double y, double z, double t) {
        double r55904 = 1.0;
        double r55905 = x;
        double r55906 = y;
        double r55907 = z;
        double r55908 = r55906 - r55907;
        double r55909 = t;
        double r55910 = r55906 - r55909;
        double r55911 = r55908 * r55910;
        double r55912 = r55905 / r55911;
        double r55913 = r55904 - r55912;
        return r55913;
}


double f_of(float x, float y, float z, float t) {
        float r55914 = 1.0;
        float r55915 = 1;
        float r55916 = y;
        float r55917 = z;
        float r55918 = r55916 - r55917;
        float r55919 = t;
        float r55920 = r55916 - r55919;
        float r55921 = r55918 * r55920;
        float r55922 = x;
        float r55923 = r55921 / r55922;
        float r55924 = r55915 / r55923;
        float r55925 = r55914 - r55924;
        return r55925;
}

double f_od(double x, double y, double z, double t) {
        double r55926 = 1.0;
        double r55927 = 1;
        double r55928 = y;
        double r55929 = z;
        double r55930 = r55928 - r55929;
        double r55931 = t;
        double r55932 = r55928 - r55931;
        double r55933 = r55930 * r55932;
        double r55934 = x;
        double r55935 = r55933 / r55934;
        double r55936 = r55927 / r55935;
        double r55937 = r55926 - r55936;
        return r55937;
}

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 r55938, r55939, r55940, r55941, r55942, r55943, r55944, r55945, r55946, r55947;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55938, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55939);
        mpfr_init(r55940);
        mpfr_init(r55941);
        mpfr_init(r55942);
        mpfr_init(r55943);
        mpfr_init(r55944);
        mpfr_init(r55945);
        mpfr_init(r55946);
        mpfr_init(r55947);
}

double f_im(double x, double y, double z, double t) {
        ;
        mpfr_set_d(r55939, x, MPFR_RNDN);
        mpfr_set_d(r55940, y, MPFR_RNDN);
        mpfr_set_d(r55941, z, MPFR_RNDN);
        mpfr_sub(r55942, r55940, r55941, MPFR_RNDN);
        mpfr_set_d(r55943, t, MPFR_RNDN);
        mpfr_sub(r55944, r55940, r55943, MPFR_RNDN);
        mpfr_mul(r55945, r55942, r55944, MPFR_RNDN);
        mpfr_div(r55946, r55939, r55945, MPFR_RNDN);
        mpfr_sub(r55947, r55938, r55946, MPFR_RNDN);
        return mpfr_get_d(r55947, MPFR_RNDN);
}

static mpfr_t r55948, r55949, r55950, r55951, r55952, r55953, r55954, r55955, r55956, r55957, r55958, r55959;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55948, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r55949, "1", 10, MPFR_RNDN);
        mpfr_init(r55950);
        mpfr_init(r55951);
        mpfr_init(r55952);
        mpfr_init(r55953);
        mpfr_init(r55954);
        mpfr_init(r55955);
        mpfr_init(r55956);
        mpfr_init(r55957);
        mpfr_init(r55958);
        mpfr_init(r55959);
}

double f_fm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_set_d(r55950, y, MPFR_RNDN);
        mpfr_set_d(r55951, z, MPFR_RNDN);
        mpfr_sub(r55952, r55950, r55951, MPFR_RNDN);
        mpfr_set_d(r55953, t, MPFR_RNDN);
        mpfr_sub(r55954, r55950, r55953, MPFR_RNDN);
        mpfr_mul(r55955, r55952, r55954, MPFR_RNDN);
        mpfr_set_d(r55956, x, MPFR_RNDN);
        mpfr_div(r55957, r55955, r55956, MPFR_RNDN);
        mpfr_div(r55958, r55949, r55957, MPFR_RNDN);
        mpfr_sub(r55959, r55948, r55958, MPFR_RNDN);
        return mpfr_get_d(r55959, MPFR_RNDN);
}

static mpfr_t r55960, r55961, r55962, r55963, r55964, r55965, r55966, r55967, r55968, r55969, r55970, r55971;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55960, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r55961, "1", 10, MPFR_RNDN);
        mpfr_init(r55962);
        mpfr_init(r55963);
        mpfr_init(r55964);
        mpfr_init(r55965);
        mpfr_init(r55966);
        mpfr_init(r55967);
        mpfr_init(r55968);
        mpfr_init(r55969);
        mpfr_init(r55970);
        mpfr_init(r55971);
}

double f_dm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_set_d(r55962, y, MPFR_RNDN);
        mpfr_set_d(r55963, z, MPFR_RNDN);
        mpfr_sub(r55964, r55962, r55963, MPFR_RNDN);
        mpfr_set_d(r55965, t, MPFR_RNDN);
        mpfr_sub(r55966, r55962, r55965, MPFR_RNDN);
        mpfr_mul(r55967, r55964, r55966, MPFR_RNDN);
        mpfr_set_d(r55968, x, MPFR_RNDN);
        mpfr_div(r55969, r55967, r55968, MPFR_RNDN);
        mpfr_div(r55970, r55961, r55969, MPFR_RNDN);
        mpfr_sub(r55971, r55960, r55970, MPFR_RNDN);
        return mpfr_get_d(r55971, MPFR_RNDN);
}

