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

char *name = "Numeric.Histogram:binBounds from Chart-1.5.3";

double f_if(float x, float y, float z, float t) {
        float r46251 = x;
        float r46252 = y;
        float r46253 = r46252 - r46251;
        float r46254 = z;
        float r46255 = r46253 * r46254;
        float r46256 = t;
        float r46257 = r46255 / r46256;
        float r46258 = r46251 + r46257;
        return r46258;
}

double f_id(double x, double y, double z, double t) {
        double r46259 = x;
        double r46260 = y;
        double r46261 = r46260 - r46259;
        double r46262 = z;
        double r46263 = r46261 * r46262;
        double r46264 = t;
        double r46265 = r46263 / r46264;
        double r46266 = r46259 + r46265;
        return r46266;
}


double f_of(float x, float y, float z, float t) {
        float r46267 = x;
        float r46268 = y;
        float r46269 = r46268 - r46267;
        float r46270 = t;
        float r46271 = z;
        float r46272 = r46270 / r46271;
        float r46273 = r46269 / r46272;
        float r46274 = r46267 + r46273;
        return r46274;
}

double f_od(double x, double y, double z, double t) {
        double r46275 = x;
        double r46276 = y;
        double r46277 = r46276 - r46275;
        double r46278 = t;
        double r46279 = z;
        double r46280 = r46278 / r46279;
        double r46281 = r46277 / r46280;
        double r46282 = r46275 + r46281;
        return r46282;
}

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 r46283, r46284, r46285, r46286, r46287, r46288, r46289, r46290;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46283);
        mpfr_init(r46284);
        mpfr_init(r46285);
        mpfr_init(r46286);
        mpfr_init(r46287);
        mpfr_init(r46288);
        mpfr_init(r46289);
        mpfr_init(r46290);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r46283, x, MPFR_RNDN);
        mpfr_set_d(r46284, y, MPFR_RNDN);
        mpfr_sub(r46285, r46284, r46283, MPFR_RNDN);
        mpfr_set_d(r46286, z, MPFR_RNDN);
        mpfr_mul(r46287, r46285, r46286, MPFR_RNDN);
        mpfr_set_d(r46288, t, MPFR_RNDN);
        mpfr_div(r46289, r46287, r46288, MPFR_RNDN);
        mpfr_add(r46290, r46283, r46289, MPFR_RNDN);
        return mpfr_get_d(r46290, MPFR_RNDN);
}

static mpfr_t r46291, r46292, r46293, r46294, r46295, r46296, r46297, r46298;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46291);
        mpfr_init(r46292);
        mpfr_init(r46293);
        mpfr_init(r46294);
        mpfr_init(r46295);
        mpfr_init(r46296);
        mpfr_init(r46297);
        mpfr_init(r46298);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r46291, x, MPFR_RNDN);
        mpfr_set_d(r46292, y, MPFR_RNDN);
        mpfr_sub(r46293, r46292, r46291, MPFR_RNDN);
        mpfr_set_d(r46294, t, MPFR_RNDN);
        mpfr_set_d(r46295, z, MPFR_RNDN);
        mpfr_div(r46296, r46294, r46295, MPFR_RNDN);
        mpfr_div(r46297, r46293, r46296, MPFR_RNDN);
        mpfr_add(r46298, r46291, r46297, MPFR_RNDN);
        return mpfr_get_d(r46298, MPFR_RNDN);
}

static mpfr_t r46299, r46300, r46301, r46302, r46303, r46304, r46305, r46306;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46299);
        mpfr_init(r46300);
        mpfr_init(r46301);
        mpfr_init(r46302);
        mpfr_init(r46303);
        mpfr_init(r46304);
        mpfr_init(r46305);
        mpfr_init(r46306);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r46299, x, MPFR_RNDN);
        mpfr_set_d(r46300, y, MPFR_RNDN);
        mpfr_sub(r46301, r46300, r46299, MPFR_RNDN);
        mpfr_set_d(r46302, t, MPFR_RNDN);
        mpfr_set_d(r46303, z, MPFR_RNDN);
        mpfr_div(r46304, r46302, r46303, MPFR_RNDN);
        mpfr_div(r46305, r46301, r46304, MPFR_RNDN);
        mpfr_add(r46306, r46299, r46305, MPFR_RNDN);
        return mpfr_get_d(r46306, MPFR_RNDN);
}

