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

char *name = "Data.Histogram.Bin.LogBinD:$cbinSizeN from histogram-fill-0.8.4.1";

double f_if(float x, float y) {
        float r56443 = x;
        float r56444 = y;
        float r56445 = r56443 * r56444;
        float r56446 = r56445 - r56443;
        return r56446;
}

double f_id(double x, double y) {
        double r56447 = x;
        double r56448 = y;
        double r56449 = r56447 * r56448;
        double r56450 = r56449 - r56447;
        return r56450;
}


double f_of(float x, float y) {
        float r56451 = x;
        float r56452 = y;
        float r56453 = r56451 * r56452;
        float r56454 = r56453 - r56451;
        return r56454;
}

double f_od(double x, double y) {
        double r56455 = x;
        double r56456 = y;
        double r56457 = r56455 * r56456;
        double r56458 = r56457 - r56455;
        return r56458;
}

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 r56459, r56460, r56461, r56462;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56459);
        mpfr_init(r56460);
        mpfr_init(r56461);
        mpfr_init(r56462);
}

double f_im(double x, double y) {
        mpfr_set_d(r56459, x, MPFR_RNDN);
        mpfr_set_d(r56460, y, MPFR_RNDN);
        mpfr_mul(r56461, r56459, r56460, MPFR_RNDN);
        mpfr_sub(r56462, r56461, r56459, MPFR_RNDN);
        return mpfr_get_d(r56462, MPFR_RNDN);
}

static mpfr_t r56463, r56464, r56465, r56466;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56463);
        mpfr_init(r56464);
        mpfr_init(r56465);
        mpfr_init(r56466);
}

double f_fm(double x, double y) {
        mpfr_set_d(r56463, x, MPFR_RNDN);
        mpfr_set_d(r56464, y, MPFR_RNDN);
        mpfr_mul(r56465, r56463, r56464, MPFR_RNDN);
        mpfr_sub(r56466, r56465, r56463, MPFR_RNDN);
        return mpfr_get_d(r56466, MPFR_RNDN);
}

static mpfr_t r56467, r56468, r56469, r56470;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56467);
        mpfr_init(r56468);
        mpfr_init(r56469);
        mpfr_init(r56470);
}

double f_dm(double x, double y) {
        mpfr_set_d(r56467, x, MPFR_RNDN);
        mpfr_set_d(r56468, y, MPFR_RNDN);
        mpfr_mul(r56469, r56467, r56468, MPFR_RNDN);
        mpfr_sub(r56470, r56469, r56467, MPFR_RNDN);
        return mpfr_get_d(r56470, MPFR_RNDN);
}

