#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 r56369 = x;
        float r56370 = y;
        float r56371 = r56369 * r56370;
        float r56372 = r56371 - r56369;
        return r56372;
}

double f_id(double x, double y) {
        double r56373 = x;
        double r56374 = y;
        double r56375 = r56373 * r56374;
        double r56376 = r56375 - r56373;
        return r56376;
}


double f_of(float x, float y) {
        float r56377 = x;
        float r56378 = y;
        float r56379 = r56377 * r56378;
        float r56380 = r56379 - r56377;
        return r56380;
}

double f_od(double x, double y) {
        double r56381 = x;
        double r56382 = y;
        double r56383 = r56381 * r56382;
        double r56384 = r56383 - r56381;
        return r56384;
}

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 r56385, r56386, r56387, r56388;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56385);
        mpfr_init(r56386);
        mpfr_init(r56387);
        mpfr_init(r56388);
}

double f_im(double x, double y) {
        mpfr_set_d(r56385, x, MPFR_RNDN);
        mpfr_set_d(r56386, y, MPFR_RNDN);
        mpfr_mul(r56387, r56385, r56386, MPFR_RNDN);
        mpfr_sub(r56388, r56387, r56385, MPFR_RNDN);
        return mpfr_get_d(r56388, MPFR_RNDN);
}

static mpfr_t r56389, r56390, r56391, r56392;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56389);
        mpfr_init(r56390);
        mpfr_init(r56391);
        mpfr_init(r56392);
}

double f_fm(double x, double y) {
        mpfr_set_d(r56389, x, MPFR_RNDN);
        mpfr_set_d(r56390, y, MPFR_RNDN);
        mpfr_mul(r56391, r56389, r56390, MPFR_RNDN);
        mpfr_sub(r56392, r56391, r56389, MPFR_RNDN);
        return mpfr_get_d(r56392, MPFR_RNDN);
}

static mpfr_t r56393, r56394, r56395, r56396;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56393);
        mpfr_init(r56394);
        mpfr_init(r56395);
        mpfr_init(r56396);
}

double f_dm(double x, double y) {
        mpfr_set_d(r56393, x, MPFR_RNDN);
        mpfr_set_d(r56394, y, MPFR_RNDN);
        mpfr_mul(r56395, r56393, r56394, MPFR_RNDN);
        mpfr_sub(r56396, r56395, r56393, MPFR_RNDN);
        return mpfr_get_d(r56396, MPFR_RNDN);
}

