#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Statistics.Distribution.Beta:$centropy from math-functions-0.1.5.2";

double f_if(float x, float y, float z, float t, float a, float b) {
        float r40944 = x;
        float r40945 = y;
        float r40946 = 1.0;
        float r40947 = r40945 - r40946;
        float r40948 = z;
        float r40949 = r40947 * r40948;
        float r40950 = r40944 - r40949;
        float r40951 = t;
        float r40952 = r40951 - r40946;
        float r40953 = a;
        float r40954 = r40952 * r40953;
        float r40955 = r40950 - r40954;
        float r40956 = r40945 + r40951;
        float r40957 = 2.0;
        float r40958 = r40956 - r40957;
        float r40959 = b;
        float r40960 = r40958 * r40959;
        float r40961 = r40955 + r40960;
        return r40961;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r40962 = x;
        double r40963 = y;
        double r40964 = 1.0;
        double r40965 = r40963 - r40964;
        double r40966 = z;
        double r40967 = r40965 * r40966;
        double r40968 = r40962 - r40967;
        double r40969 = t;
        double r40970 = r40969 - r40964;
        double r40971 = a;
        double r40972 = r40970 * r40971;
        double r40973 = r40968 - r40972;
        double r40974 = r40963 + r40969;
        double r40975 = 2.0;
        double r40976 = r40974 - r40975;
        double r40977 = b;
        double r40978 = r40976 * r40977;
        double r40979 = r40973 + r40978;
        return r40979;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r40980 = x;
        float r40981 = y;
        float r40982 = 1.0;
        float r40983 = r40981 - r40982;
        float r40984 = z;
        float r40985 = r40983 * r40984;
        float r40986 = r40980 - r40985;
        float r40987 = t;
        float r40988 = r40987 - r40982;
        float r40989 = a;
        float r40990 = r40988 * r40989;
        float r40991 = r40986 - r40990;
        float r40992 = r40981 + r40987;
        float r40993 = 2.0;
        float r40994 = r40992 - r40993;
        float r40995 = b;
        float r40996 = r40994 * r40995;
        float r40997 = r40991 + r40996;
        return r40997;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r40998 = x;
        double r40999 = y;
        double r41000 = 1.0;
        double r41001 = r40999 - r41000;
        double r41002 = z;
        double r41003 = r41001 * r41002;
        double r41004 = r40998 - r41003;
        double r41005 = t;
        double r41006 = r41005 - r41000;
        double r41007 = a;
        double r41008 = r41006 * r41007;
        double r41009 = r41004 - r41008;
        double r41010 = r40999 + r41005;
        double r41011 = 2.0;
        double r41012 = r41010 - r41011;
        double r41013 = b;
        double r41014 = r41012 * r41013;
        double r41015 = r41009 + r41014;
        return r41015;
}

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 r41016, r41017, r41018, r41019, r41020, r41021, r41022, r41023, r41024, r41025, r41026, r41027, r41028, r41029, r41030, r41031, r41032, r41033;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(656);
        mpfr_init(r41016);
        mpfr_init(r41017);
        mpfr_init_set_str(r41018, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41019);
        mpfr_init(r41020);
        mpfr_init(r41021);
        mpfr_init(r41022);
        mpfr_init(r41023);
        mpfr_init(r41024);
        mpfr_init(r41025);
        mpfr_init(r41026);
        mpfr_init(r41027);
        mpfr_init(r41028);
        mpfr_init_set_str(r41029, "2.0", 10, MPFR_RNDN);
        mpfr_init(r41030);
        mpfr_init(r41031);
        mpfr_init(r41032);
        mpfr_init(r41033);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r41016, x, MPFR_RNDN);
        mpfr_set_d(r41017, y, MPFR_RNDN);
        ;
        mpfr_sub(r41019, r41017, r41018, MPFR_RNDN);
        mpfr_set_d(r41020, z, MPFR_RNDN);
        mpfr_mul(r41021, r41019, r41020, MPFR_RNDN);
        mpfr_sub(r41022, r41016, r41021, MPFR_RNDN);
        mpfr_set_d(r41023, t, MPFR_RNDN);
        mpfr_sub(r41024, r41023, r41018, MPFR_RNDN);
        mpfr_set_d(r41025, a, MPFR_RNDN);
        mpfr_mul(r41026, r41024, r41025, MPFR_RNDN);
        mpfr_sub(r41027, r41022, r41026, MPFR_RNDN);
        mpfr_add(r41028, r41017, r41023, MPFR_RNDN);
        ;
        mpfr_sub(r41030, r41028, r41029, MPFR_RNDN);
        mpfr_set_d(r41031, b, MPFR_RNDN);
        mpfr_mul(r41032, r41030, r41031, MPFR_RNDN);
        mpfr_add(r41033, r41027, r41032, MPFR_RNDN);
        return mpfr_get_d(r41033, MPFR_RNDN);
}

static mpfr_t r41034, r41035, r41036, r41037, r41038, r41039, r41040, r41041, r41042, r41043, r41044, r41045, r41046, r41047, r41048, r41049, r41050, r41051;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(656);
        mpfr_init(r41034);
        mpfr_init(r41035);
        mpfr_init_set_str(r41036, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41037);
        mpfr_init(r41038);
        mpfr_init(r41039);
        mpfr_init(r41040);
        mpfr_init(r41041);
        mpfr_init(r41042);
        mpfr_init(r41043);
        mpfr_init(r41044);
        mpfr_init(r41045);
        mpfr_init(r41046);
        mpfr_init_set_str(r41047, "2.0", 10, MPFR_RNDN);
        mpfr_init(r41048);
        mpfr_init(r41049);
        mpfr_init(r41050);
        mpfr_init(r41051);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r41034, x, MPFR_RNDN);
        mpfr_set_d(r41035, y, MPFR_RNDN);
        ;
        mpfr_sub(r41037, r41035, r41036, MPFR_RNDN);
        mpfr_set_d(r41038, z, MPFR_RNDN);
        mpfr_mul(r41039, r41037, r41038, MPFR_RNDN);
        mpfr_sub(r41040, r41034, r41039, MPFR_RNDN);
        mpfr_set_d(r41041, t, MPFR_RNDN);
        mpfr_sub(r41042, r41041, r41036, MPFR_RNDN);
        mpfr_set_d(r41043, a, MPFR_RNDN);
        mpfr_mul(r41044, r41042, r41043, MPFR_RNDN);
        mpfr_sub(r41045, r41040, r41044, MPFR_RNDN);
        mpfr_add(r41046, r41035, r41041, MPFR_RNDN);
        ;
        mpfr_sub(r41048, r41046, r41047, MPFR_RNDN);
        mpfr_set_d(r41049, b, MPFR_RNDN);
        mpfr_mul(r41050, r41048, r41049, MPFR_RNDN);
        mpfr_add(r41051, r41045, r41050, MPFR_RNDN);
        return mpfr_get_d(r41051, MPFR_RNDN);
}

static mpfr_t r41052, r41053, r41054, r41055, r41056, r41057, r41058, r41059, r41060, r41061, r41062, r41063, r41064, r41065, r41066, r41067, r41068, r41069;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(656);
        mpfr_init(r41052);
        mpfr_init(r41053);
        mpfr_init_set_str(r41054, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41055);
        mpfr_init(r41056);
        mpfr_init(r41057);
        mpfr_init(r41058);
        mpfr_init(r41059);
        mpfr_init(r41060);
        mpfr_init(r41061);
        mpfr_init(r41062);
        mpfr_init(r41063);
        mpfr_init(r41064);
        mpfr_init_set_str(r41065, "2.0", 10, MPFR_RNDN);
        mpfr_init(r41066);
        mpfr_init(r41067);
        mpfr_init(r41068);
        mpfr_init(r41069);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r41052, x, MPFR_RNDN);
        mpfr_set_d(r41053, y, MPFR_RNDN);
        ;
        mpfr_sub(r41055, r41053, r41054, MPFR_RNDN);
        mpfr_set_d(r41056, z, MPFR_RNDN);
        mpfr_mul(r41057, r41055, r41056, MPFR_RNDN);
        mpfr_sub(r41058, r41052, r41057, MPFR_RNDN);
        mpfr_set_d(r41059, t, MPFR_RNDN);
        mpfr_sub(r41060, r41059, r41054, MPFR_RNDN);
        mpfr_set_d(r41061, a, MPFR_RNDN);
        mpfr_mul(r41062, r41060, r41061, MPFR_RNDN);
        mpfr_sub(r41063, r41058, r41062, MPFR_RNDN);
        mpfr_add(r41064, r41053, r41059, MPFR_RNDN);
        ;
        mpfr_sub(r41066, r41064, r41065, MPFR_RNDN);
        mpfr_set_d(r41067, b, MPFR_RNDN);
        mpfr_mul(r41068, r41066, r41067, MPFR_RNDN);
        mpfr_add(r41069, r41063, r41068, MPFR_RNDN);
        return mpfr_get_d(r41069, MPFR_RNDN);
}

