#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 r40535 = x;
        float r40536 = y;
        float r40537 = r40535 * r40536;
        float r40538 = 1.0;
        float r40539 = r40538 - r40536;
        float r40540 = r40537 * r40539;
        return r40540;
}

double f_id(double x, double y) {
        double r40541 = x;
        double r40542 = y;
        double r40543 = r40541 * r40542;
        double r40544 = 1.0;
        double r40545 = r40544 - r40542;
        double r40546 = r40543 * r40545;
        return r40546;
}


double f_of(float x, float y) {
        float r40547 = x;
        float r40548 = y;
        float r40549 = r40547 * r40548;
        float r40550 = 1.0;
        float r40551 = r40550 - r40548;
        float r40552 = r40549 * r40551;
        return r40552;
}

double f_od(double x, double y) {
        double r40553 = x;
        double r40554 = y;
        double r40555 = r40553 * r40554;
        double r40556 = 1.0;
        double r40557 = r40556 - r40554;
        double r40558 = r40555 * r40557;
        return r40558;
}

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 r40559, r40560, r40561, r40562, r40563, r40564;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r40559);
        mpfr_init(r40560);
        mpfr_init(r40561);
        mpfr_init_set_str(r40562, "1.0", 10, MPFR_RNDN);
        mpfr_init(r40563);
        mpfr_init(r40564);
}

double f_im(double x, double y) {
        mpfr_set_d(r40559, x, MPFR_RNDN);
        mpfr_set_d(r40560, y, MPFR_RNDN);
        mpfr_mul(r40561, r40559, r40560, MPFR_RNDN);
        ;
        mpfr_sub(r40563, r40562, r40560, MPFR_RNDN);
        mpfr_mul(r40564, r40561, r40563, MPFR_RNDN);
        return mpfr_get_d(r40564, MPFR_RNDN);
}

static mpfr_t r40565, r40566, r40567, r40568, r40569, r40570;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r40565);
        mpfr_init(r40566);
        mpfr_init(r40567);
        mpfr_init_set_str(r40568, "1.0", 10, MPFR_RNDN);
        mpfr_init(r40569);
        mpfr_init(r40570);
}

double f_fm(double x, double y) {
        mpfr_set_d(r40565, x, MPFR_RNDN);
        mpfr_set_d(r40566, y, MPFR_RNDN);
        mpfr_mul(r40567, r40565, r40566, MPFR_RNDN);
        ;
        mpfr_sub(r40569, r40568, r40566, MPFR_RNDN);
        mpfr_mul(r40570, r40567, r40569, MPFR_RNDN);
        return mpfr_get_d(r40570, MPFR_RNDN);
}

static mpfr_t r40571, r40572, r40573, r40574, r40575, r40576;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r40571);
        mpfr_init(r40572);
        mpfr_init(r40573);
        mpfr_init_set_str(r40574, "1.0", 10, MPFR_RNDN);
        mpfr_init(r40575);
        mpfr_init(r40576);
}

double f_dm(double x, double y) {
        mpfr_set_d(r40571, x, MPFR_RNDN);
        mpfr_set_d(r40572, y, MPFR_RNDN);
        mpfr_mul(r40573, r40571, r40572, MPFR_RNDN);
        ;
        mpfr_sub(r40575, r40574, r40572, MPFR_RNDN);
        mpfr_mul(r40576, r40573, r40575, MPFR_RNDN);
        return mpfr_get_d(r40576, MPFR_RNDN);
}

