#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 r54493 = 1.0;
        float r54494 = x;
        float r54495 = y;
        float r54496 = z;
        float r54497 = r54495 - r54496;
        float r54498 = t;
        float r54499 = r54495 - r54498;
        float r54500 = r54497 * r54499;
        float r54501 = r54494 / r54500;
        float r54502 = r54493 - r54501;
        return r54502;
}

double f_id(double x, double y, double z, double t) {
        double r54503 = 1.0;
        double r54504 = x;
        double r54505 = y;
        double r54506 = z;
        double r54507 = r54505 - r54506;
        double r54508 = t;
        double r54509 = r54505 - r54508;
        double r54510 = r54507 * r54509;
        double r54511 = r54504 / r54510;
        double r54512 = r54503 - r54511;
        return r54512;
}


double f_of(float x, float y, float z, float t) {
        float r54513 = 1.0;
        float r54514 = 1;
        float r54515 = y;
        float r54516 = z;
        float r54517 = r54515 - r54516;
        float r54518 = t;
        float r54519 = r54515 - r54518;
        float r54520 = r54517 * r54519;
        float r54521 = x;
        float r54522 = r54520 / r54521;
        float r54523 = r54514 / r54522;
        float r54524 = r54513 - r54523;
        return r54524;
}

double f_od(double x, double y, double z, double t) {
        double r54525 = 1.0;
        double r54526 = 1;
        double r54527 = y;
        double r54528 = z;
        double r54529 = r54527 - r54528;
        double r54530 = t;
        double r54531 = r54527 - r54530;
        double r54532 = r54529 * r54531;
        double r54533 = x;
        double r54534 = r54532 / r54533;
        double r54535 = r54526 / r54534;
        double r54536 = r54525 - r54535;
        return r54536;
}

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 r54537, r54538, r54539, r54540, r54541, r54542, r54543, r54544, r54545, r54546;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54537, "1.0", 10, MPFR_RNDN);
        mpfr_init(r54538);
        mpfr_init(r54539);
        mpfr_init(r54540);
        mpfr_init(r54541);
        mpfr_init(r54542);
        mpfr_init(r54543);
        mpfr_init(r54544);
        mpfr_init(r54545);
        mpfr_init(r54546);
}

double f_im(double x, double y, double z, double t) {
        ;
        mpfr_set_d(r54538, x, MPFR_RNDN);
        mpfr_set_d(r54539, y, MPFR_RNDN);
        mpfr_set_d(r54540, z, MPFR_RNDN);
        mpfr_sub(r54541, r54539, r54540, MPFR_RNDN);
        mpfr_set_d(r54542, t, MPFR_RNDN);
        mpfr_sub(r54543, r54539, r54542, MPFR_RNDN);
        mpfr_mul(r54544, r54541, r54543, MPFR_RNDN);
        mpfr_div(r54545, r54538, r54544, MPFR_RNDN);
        mpfr_sub(r54546, r54537, r54545, MPFR_RNDN);
        return mpfr_get_d(r54546, MPFR_RNDN);
}

static mpfr_t r54547, r54548, r54549, r54550, r54551, r54552, r54553, r54554, r54555, r54556, r54557, r54558;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54547, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54548, "1", 10, MPFR_RNDN);
        mpfr_init(r54549);
        mpfr_init(r54550);
        mpfr_init(r54551);
        mpfr_init(r54552);
        mpfr_init(r54553);
        mpfr_init(r54554);
        mpfr_init(r54555);
        mpfr_init(r54556);
        mpfr_init(r54557);
        mpfr_init(r54558);
}

double f_fm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_set_d(r54549, y, MPFR_RNDN);
        mpfr_set_d(r54550, z, MPFR_RNDN);
        mpfr_sub(r54551, r54549, r54550, MPFR_RNDN);
        mpfr_set_d(r54552, t, MPFR_RNDN);
        mpfr_sub(r54553, r54549, r54552, MPFR_RNDN);
        mpfr_mul(r54554, r54551, r54553, MPFR_RNDN);
        mpfr_set_d(r54555, x, MPFR_RNDN);
        mpfr_div(r54556, r54554, r54555, MPFR_RNDN);
        mpfr_div(r54557, r54548, r54556, MPFR_RNDN);
        mpfr_sub(r54558, r54547, r54557, MPFR_RNDN);
        return mpfr_get_d(r54558, MPFR_RNDN);
}

static mpfr_t r54559, r54560, r54561, r54562, r54563, r54564, r54565, r54566, r54567, r54568, r54569, r54570;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54559, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54560, "1", 10, MPFR_RNDN);
        mpfr_init(r54561);
        mpfr_init(r54562);
        mpfr_init(r54563);
        mpfr_init(r54564);
        mpfr_init(r54565);
        mpfr_init(r54566);
        mpfr_init(r54567);
        mpfr_init(r54568);
        mpfr_init(r54569);
        mpfr_init(r54570);
}

double f_dm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_set_d(r54561, y, MPFR_RNDN);
        mpfr_set_d(r54562, z, MPFR_RNDN);
        mpfr_sub(r54563, r54561, r54562, MPFR_RNDN);
        mpfr_set_d(r54564, t, MPFR_RNDN);
        mpfr_sub(r54565, r54561, r54564, MPFR_RNDN);
        mpfr_mul(r54566, r54563, r54565, MPFR_RNDN);
        mpfr_set_d(r54567, x, MPFR_RNDN);
        mpfr_div(r54568, r54566, r54567, MPFR_RNDN);
        mpfr_div(r54569, r54560, r54568, MPFR_RNDN);
        mpfr_sub(r54570, r54559, r54569, MPFR_RNDN);
        return mpfr_get_d(r54570, MPFR_RNDN);
}

