#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 r41043 = x;
        float r41044 = y;
        float r41045 = r41043 * r41044;
        float r41046 = 1.0;
        float r41047 = r41046 - r41044;
        float r41048 = r41045 * r41047;
        return r41048;
}

double f_id(double x, double y) {
        double r41049 = x;
        double r41050 = y;
        double r41051 = r41049 * r41050;
        double r41052 = 1.0;
        double r41053 = r41052 - r41050;
        double r41054 = r41051 * r41053;
        return r41054;
}


double f_of(float x, float y) {
        float r41055 = x;
        float r41056 = y;
        float r41057 = r41055 * r41056;
        float r41058 = 1.0;
        float r41059 = r41058 - r41056;
        float r41060 = r41057 * r41059;
        return r41060;
}

double f_od(double x, double y) {
        double r41061 = x;
        double r41062 = y;
        double r41063 = r41061 * r41062;
        double r41064 = 1.0;
        double r41065 = r41064 - r41062;
        double r41066 = r41063 * r41065;
        return r41066;
}

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 r41067, r41068, r41069, r41070, r41071, r41072;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r41067);
        mpfr_init(r41068);
        mpfr_init(r41069);
        mpfr_init_set_str(r41070, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41071);
        mpfr_init(r41072);
}

double f_im(double x, double y) {
        mpfr_set_d(r41067, x, MPFR_RNDN);
        mpfr_set_d(r41068, y, MPFR_RNDN);
        mpfr_mul(r41069, r41067, r41068, MPFR_RNDN);
        ;
        mpfr_sub(r41071, r41070, r41068, MPFR_RNDN);
        mpfr_mul(r41072, r41069, r41071, MPFR_RNDN);
        return mpfr_get_d(r41072, MPFR_RNDN);
}

static mpfr_t r41073, r41074, r41075, r41076, r41077, r41078;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41073);
        mpfr_init(r41074);
        mpfr_init(r41075);
        mpfr_init_set_str(r41076, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41077);
        mpfr_init(r41078);
}

double f_fm(double x, double y) {
        mpfr_set_d(r41073, x, MPFR_RNDN);
        mpfr_set_d(r41074, y, MPFR_RNDN);
        mpfr_mul(r41075, r41073, r41074, MPFR_RNDN);
        ;
        mpfr_sub(r41077, r41076, r41074, MPFR_RNDN);
        mpfr_mul(r41078, r41075, r41077, MPFR_RNDN);
        return mpfr_get_d(r41078, MPFR_RNDN);
}

static mpfr_t r41079, r41080, r41081, r41082, r41083, r41084;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r41079);
        mpfr_init(r41080);
        mpfr_init(r41081);
        mpfr_init_set_str(r41082, "1.0", 10, MPFR_RNDN);
        mpfr_init(r41083);
        mpfr_init(r41084);
}

double f_dm(double x, double y) {
        mpfr_set_d(r41079, x, MPFR_RNDN);
        mpfr_set_d(r41080, y, MPFR_RNDN);
        mpfr_mul(r41081, r41079, r41080, MPFR_RNDN);
        ;
        mpfr_sub(r41083, r41082, r41080, MPFR_RNDN);
        mpfr_mul(r41084, r41081, r41083, MPFR_RNDN);
        return mpfr_get_d(r41084, MPFR_RNDN);
}

