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

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

double f_if(float x, float y, float z) {
        float r56593 = x;
        float r56594 = 2.0;
        float r56595 = r56593 / r56594;
        float r56596 = y;
        float r56597 = r56596 * r56593;
        float r56598 = r56595 + r56597;
        float r56599 = z;
        float r56600 = r56598 + r56599;
        return r56600;
}

double f_id(double x, double y, double z) {
        double r56601 = x;
        double r56602 = 2.0;
        double r56603 = r56601 / r56602;
        double r56604 = y;
        double r56605 = r56604 * r56601;
        double r56606 = r56603 + r56605;
        double r56607 = z;
        double r56608 = r56606 + r56607;
        return r56608;
}


double f_of(float x, float y, float z) {
        float r56609 = x;
        float r56610 = 2.0;
        float r56611 = r56609 / r56610;
        float r56612 = y;
        float r56613 = r56612 * r56609;
        float r56614 = r56611 + r56613;
        float r56615 = z;
        float r56616 = r56614 + r56615;
        return r56616;
}

double f_od(double x, double y, double z) {
        double r56617 = x;
        double r56618 = 2.0;
        double r56619 = r56617 / r56618;
        double r56620 = y;
        double r56621 = r56620 * r56617;
        double r56622 = r56619 + r56621;
        double r56623 = z;
        double r56624 = r56622 + r56623;
        return r56624;
}

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 r56625, r56626, r56627, r56628, r56629, r56630, r56631, r56632;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56625);
        mpfr_init_set_str(r56626, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56627);
        mpfr_init(r56628);
        mpfr_init(r56629);
        mpfr_init(r56630);
        mpfr_init(r56631);
        mpfr_init(r56632);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r56625, x, MPFR_RNDN);
        ;
        mpfr_div(r56627, r56625, r56626, MPFR_RNDN);
        mpfr_set_d(r56628, y, MPFR_RNDN);
        mpfr_mul(r56629, r56628, r56625, MPFR_RNDN);
        mpfr_add(r56630, r56627, r56629, MPFR_RNDN);
        mpfr_set_d(r56631, z, MPFR_RNDN);
        mpfr_add(r56632, r56630, r56631, MPFR_RNDN);
        return mpfr_get_d(r56632, MPFR_RNDN);
}

static mpfr_t r56633, r56634, r56635, r56636, r56637, r56638, r56639, r56640;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56633);
        mpfr_init_set_str(r56634, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56635);
        mpfr_init(r56636);
        mpfr_init(r56637);
        mpfr_init(r56638);
        mpfr_init(r56639);
        mpfr_init(r56640);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r56633, x, MPFR_RNDN);
        ;
        mpfr_div(r56635, r56633, r56634, MPFR_RNDN);
        mpfr_set_d(r56636, y, MPFR_RNDN);
        mpfr_mul(r56637, r56636, r56633, MPFR_RNDN);
        mpfr_add(r56638, r56635, r56637, MPFR_RNDN);
        mpfr_set_d(r56639, z, MPFR_RNDN);
        mpfr_add(r56640, r56638, r56639, MPFR_RNDN);
        return mpfr_get_d(r56640, MPFR_RNDN);
}

static mpfr_t r56641, r56642, r56643, r56644, r56645, r56646, r56647, r56648;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56641);
        mpfr_init_set_str(r56642, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56643);
        mpfr_init(r56644);
        mpfr_init(r56645);
        mpfr_init(r56646);
        mpfr_init(r56647);
        mpfr_init(r56648);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r56641, x, MPFR_RNDN);
        ;
        mpfr_div(r56643, r56641, r56642, MPFR_RNDN);
        mpfr_set_d(r56644, y, MPFR_RNDN);
        mpfr_mul(r56645, r56644, r56641, MPFR_RNDN);
        mpfr_add(r56646, r56643, r56645, MPFR_RNDN);
        mpfr_set_d(r56647, z, MPFR_RNDN);
        mpfr_add(r56648, r56646, r56647, MPFR_RNDN);
        return mpfr_get_d(r56648, MPFR_RNDN);
}

