#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 r56689 = x;
        float r56690 = 2.0;
        float r56691 = r56689 / r56690;
        float r56692 = y;
        float r56693 = r56692 * r56689;
        float r56694 = r56691 + r56693;
        float r56695 = z;
        float r56696 = r56694 + r56695;
        return r56696;
}

double f_id(double x, double y, double z) {
        double r56697 = x;
        double r56698 = 2.0;
        double r56699 = r56697 / r56698;
        double r56700 = y;
        double r56701 = r56700 * r56697;
        double r56702 = r56699 + r56701;
        double r56703 = z;
        double r56704 = r56702 + r56703;
        return r56704;
}


double f_of(float x, float y, float z) {
        float r56705 = x;
        float r56706 = 2.0;
        float r56707 = r56705 / r56706;
        float r56708 = y;
        float r56709 = r56708 * r56705;
        float r56710 = r56707 + r56709;
        float r56711 = z;
        float r56712 = r56710 + r56711;
        return r56712;
}

double f_od(double x, double y, double z) {
        double r56713 = x;
        double r56714 = 2.0;
        double r56715 = r56713 / r56714;
        double r56716 = y;
        double r56717 = r56716 * r56713;
        double r56718 = r56715 + r56717;
        double r56719 = z;
        double r56720 = r56718 + r56719;
        return r56720;
}

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 r56721, r56722, r56723, r56724, r56725, r56726, r56727, r56728;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56721);
        mpfr_init_set_str(r56722, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56723);
        mpfr_init(r56724);
        mpfr_init(r56725);
        mpfr_init(r56726);
        mpfr_init(r56727);
        mpfr_init(r56728);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r56721, x, MPFR_RNDN);
        ;
        mpfr_div(r56723, r56721, r56722, MPFR_RNDN);
        mpfr_set_d(r56724, y, MPFR_RNDN);
        mpfr_mul(r56725, r56724, r56721, MPFR_RNDN);
        mpfr_add(r56726, r56723, r56725, MPFR_RNDN);
        mpfr_set_d(r56727, z, MPFR_RNDN);
        mpfr_add(r56728, r56726, r56727, MPFR_RNDN);
        return mpfr_get_d(r56728, MPFR_RNDN);
}

static mpfr_t r56729, r56730, r56731, r56732, r56733, r56734, r56735, r56736;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56729);
        mpfr_init_set_str(r56730, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56731);
        mpfr_init(r56732);
        mpfr_init(r56733);
        mpfr_init(r56734);
        mpfr_init(r56735);
        mpfr_init(r56736);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r56729, x, MPFR_RNDN);
        ;
        mpfr_div(r56731, r56729, r56730, MPFR_RNDN);
        mpfr_set_d(r56732, y, MPFR_RNDN);
        mpfr_mul(r56733, r56732, r56729, MPFR_RNDN);
        mpfr_add(r56734, r56731, r56733, MPFR_RNDN);
        mpfr_set_d(r56735, z, MPFR_RNDN);
        mpfr_add(r56736, r56734, r56735, MPFR_RNDN);
        return mpfr_get_d(r56736, MPFR_RNDN);
}

static mpfr_t r56737, r56738, r56739, r56740, r56741, r56742, r56743, r56744;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56737);
        mpfr_init_set_str(r56738, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56739);
        mpfr_init(r56740);
        mpfr_init(r56741);
        mpfr_init(r56742);
        mpfr_init(r56743);
        mpfr_init(r56744);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r56737, x, MPFR_RNDN);
        ;
        mpfr_div(r56739, r56737, r56738, MPFR_RNDN);
        mpfr_set_d(r56740, y, MPFR_RNDN);
        mpfr_mul(r56741, r56740, r56737, MPFR_RNDN);
        mpfr_add(r56742, r56739, r56741, MPFR_RNDN);
        mpfr_set_d(r56743, z, MPFR_RNDN);
        mpfr_add(r56744, r56742, r56743, MPFR_RNDN);
        return mpfr_get_d(r56744, MPFR_RNDN);
}

