#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 r55292 = x;
        float r55293 = 2.0;
        float r55294 = r55292 / r55293;
        float r55295 = y;
        float r55296 = r55295 * r55292;
        float r55297 = r55294 + r55296;
        float r55298 = z;
        float r55299 = r55297 + r55298;
        return r55299;
}

double f_id(double x, double y, double z) {
        double r55300 = x;
        double r55301 = 2.0;
        double r55302 = r55300 / r55301;
        double r55303 = y;
        double r55304 = r55303 * r55300;
        double r55305 = r55302 + r55304;
        double r55306 = z;
        double r55307 = r55305 + r55306;
        return r55307;
}


double f_of(float x, float y, float z) {
        float r55308 = x;
        float r55309 = 2.0;
        float r55310 = r55308 / r55309;
        float r55311 = y;
        float r55312 = r55311 * r55308;
        float r55313 = r55310 + r55312;
        float r55314 = z;
        float r55315 = r55313 + r55314;
        return r55315;
}

double f_od(double x, double y, double z) {
        double r55316 = x;
        double r55317 = 2.0;
        double r55318 = r55316 / r55317;
        double r55319 = y;
        double r55320 = r55319 * r55316;
        double r55321 = r55318 + r55320;
        double r55322 = z;
        double r55323 = r55321 + r55322;
        return r55323;
}

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 r55324, r55325, r55326, r55327, r55328, r55329, r55330, r55331;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55324);
        mpfr_init_set_str(r55325, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55326);
        mpfr_init(r55327);
        mpfr_init(r55328);
        mpfr_init(r55329);
        mpfr_init(r55330);
        mpfr_init(r55331);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r55324, x, MPFR_RNDN);
        ;
        mpfr_div(r55326, r55324, r55325, MPFR_RNDN);
        mpfr_set_d(r55327, y, MPFR_RNDN);
        mpfr_mul(r55328, r55327, r55324, MPFR_RNDN);
        mpfr_add(r55329, r55326, r55328, MPFR_RNDN);
        mpfr_set_d(r55330, z, MPFR_RNDN);
        mpfr_add(r55331, r55329, r55330, MPFR_RNDN);
        return mpfr_get_d(r55331, MPFR_RNDN);
}

static mpfr_t r55332, r55333, r55334, r55335, r55336, r55337, r55338, r55339;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55332);
        mpfr_init_set_str(r55333, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55334);
        mpfr_init(r55335);
        mpfr_init(r55336);
        mpfr_init(r55337);
        mpfr_init(r55338);
        mpfr_init(r55339);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r55332, x, MPFR_RNDN);
        ;
        mpfr_div(r55334, r55332, r55333, MPFR_RNDN);
        mpfr_set_d(r55335, y, MPFR_RNDN);
        mpfr_mul(r55336, r55335, r55332, MPFR_RNDN);
        mpfr_add(r55337, r55334, r55336, MPFR_RNDN);
        mpfr_set_d(r55338, z, MPFR_RNDN);
        mpfr_add(r55339, r55337, r55338, MPFR_RNDN);
        return mpfr_get_d(r55339, MPFR_RNDN);
}

static mpfr_t r55340, r55341, r55342, r55343, r55344, r55345, r55346, r55347;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55340);
        mpfr_init_set_str(r55341, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55342);
        mpfr_init(r55343);
        mpfr_init(r55344);
        mpfr_init(r55345);
        mpfr_init(r55346);
        mpfr_init(r55347);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r55340, x, MPFR_RNDN);
        ;
        mpfr_div(r55342, r55340, r55341, MPFR_RNDN);
        mpfr_set_d(r55343, y, MPFR_RNDN);
        mpfr_mul(r55344, r55343, r55340, MPFR_RNDN);
        mpfr_add(r55345, r55342, r55344, MPFR_RNDN);
        mpfr_set_d(r55346, z, MPFR_RNDN);
        mpfr_add(r55347, r55345, r55346, MPFR_RNDN);
        return mpfr_get_d(r55347, MPFR_RNDN);
}

