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

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

double f_if(float x, float y) {
        float r37061 = x;
        float r37062 = y;
        float r37063 = r37061 * r37062;
        float r37064 = 1.0f;
        float r37065 = r37064 - r37062;
        float r37066 = r37063 * r37065;
        return r37066;
}

double f_id(double x, double y) {
        double r37067 = x;
        double r37068 = y;
        double r37069 = r37067 * r37068;
        double r37070 = 1.0;
        double r37071 = r37070 - r37068;
        double r37072 = r37069 * r37071;
        return r37072;
}


double f_of(float x, float y) {
        float r37073 = x;
        float r37074 = y;
        float r37075 = r37073 * r37074;
        float r37076 = 1.0f;
        float r37077 = r37076 - r37074;
        float r37078 = r37075 * r37077;
        return r37078;
}

double f_od(double x, double y) {
        double r37079 = x;
        double r37080 = y;
        double r37081 = r37079 * r37080;
        double r37082 = 1.0;
        double r37083 = r37082 - r37080;
        double r37084 = r37081 * r37083;
        return r37084;
}

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 r37085, r37086, r37087, r37088, r37089, r37090;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r37085);
        mpfr_init(r37086);
        mpfr_init(r37087);
        mpfr_init_set_str(r37088, "1.0", 10, MPFR_RNDN);
        mpfr_init(r37089);
        mpfr_init(r37090);
}

double f_im(double x, double y) {
        mpfr_set_d(r37085, x, MPFR_RNDN);
        mpfr_set_d(r37086, y, MPFR_RNDN);
        mpfr_mul(r37087, r37085, r37086, MPFR_RNDN);
        ;
        mpfr_sub(r37089, r37088, r37086, MPFR_RNDN);
        mpfr_mul(r37090, r37087, r37089, MPFR_RNDN);
        return mpfr_get_d(r37090, MPFR_RNDN);
}

static mpfr_t r37091, r37092, r37093, r37094, r37095, r37096;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r37091);
        mpfr_init(r37092);
        mpfr_init(r37093);
        mpfr_init_set_str(r37094, "1.0", 10, MPFR_RNDN);
        mpfr_init(r37095);
        mpfr_init(r37096);
}

double f_fm(double x, double y) {
        mpfr_set_d(r37091, x, MPFR_RNDN);
        mpfr_set_d(r37092, y, MPFR_RNDN);
        mpfr_mul(r37093, r37091, r37092, MPFR_RNDN);
        ;
        mpfr_sub(r37095, r37094, r37092, MPFR_RNDN);
        mpfr_mul(r37096, r37093, r37095, MPFR_RNDN);
        return mpfr_get_d(r37096, MPFR_RNDN);
}

static mpfr_t r37097, r37098, r37099, r37100, r37101, r37102;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r37097);
        mpfr_init(r37098);
        mpfr_init(r37099);
        mpfr_init_set_str(r37100, "1.0", 10, MPFR_RNDN);
        mpfr_init(r37101);
        mpfr_init(r37102);
}

double f_dm(double x, double y) {
        mpfr_set_d(r37097, x, MPFR_RNDN);
        mpfr_set_d(r37098, y, MPFR_RNDN);
        mpfr_mul(r37099, r37097, r37098, MPFR_RNDN);
        ;
        mpfr_sub(r37101, r37100, r37098, MPFR_RNDN);
        mpfr_mul(r37102, r37099, r37101, MPFR_RNDN);
        return mpfr_get_d(r37102, MPFR_RNDN);
}

