#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 r46407 = x;
        float r46408 = y;
        float r46409 = r46408 - r46407;
        float r46410 = z;
        float r46411 = r46409 * r46410;
        float r46412 = t;
        float r46413 = r46411 / r46412;
        float r46414 = r46407 + r46413;
        return r46414;
}

double f_id(double x, double y, double z, double t) {
        double r46415 = x;
        double r46416 = y;
        double r46417 = r46416 - r46415;
        double r46418 = z;
        double r46419 = r46417 * r46418;
        double r46420 = t;
        double r46421 = r46419 / r46420;
        double r46422 = r46415 + r46421;
        return r46422;
}


double f_of(float x, float y, float z, float t) {
        float r46423 = x;
        float r46424 = -1.2236383726059943e-104;
        bool r46425 = r46423 <= r46424;
        float r46426 = z;
        float r46427 = t;
        float r46428 = r46426 / r46427;
        float r46429 = y;
        float r46430 = r46429 - r46423;
        float r46431 = r46428 * r46430;
        float r46432 = r46431 + r46423;
        float r46433 = -1.2444038385878892e-264;
        bool r46434 = r46423 <= r46433;
        float r46435 = 1;
        float r46436 = r46430 * r46426;
        float r46437 = r46427 / r46436;
        float r46438 = r46435 / r46437;
        float r46439 = r46423 + r46438;
        float r46440 = r46427 / r46426;
        float r46441 = r46430 / r46440;
        float r46442 = r46423 + r46441;
        float r46443 = r46434 ? r46439 : r46442;
        float r46444 = r46425 ? r46432 : r46443;
        return r46444;
}

double f_od(double x, double y, double z, double t) {
        double r46445 = x;
        double r46446 = -1.2236383726059943e-104;
        bool r46447 = r46445 <= r46446;
        double r46448 = z;
        double r46449 = t;
        double r46450 = r46448 / r46449;
        double r46451 = y;
        double r46452 = r46451 - r46445;
        double r46453 = r46450 * r46452;
        double r46454 = r46453 + r46445;
        double r46455 = -1.2444038385878892e-264;
        bool r46456 = r46445 <= r46455;
        double r46457 = 1;
        double r46458 = r46452 * r46448;
        double r46459 = r46449 / r46458;
        double r46460 = r46457 / r46459;
        double r46461 = r46445 + r46460;
        double r46462 = r46449 / r46448;
        double r46463 = r46452 / r46462;
        double r46464 = r46445 + r46463;
        double r46465 = r46456 ? r46461 : r46464;
        double r46466 = r46447 ? r46454 : r46465;
        return r46466;
}

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 r46467, r46468, r46469, r46470, r46471, r46472, r46473, r46474;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46467);
        mpfr_init(r46468);
        mpfr_init(r46469);
        mpfr_init(r46470);
        mpfr_init(r46471);
        mpfr_init(r46472);
        mpfr_init(r46473);
        mpfr_init(r46474);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r46467, x, MPFR_RNDN);
        mpfr_set_d(r46468, y, MPFR_RNDN);
        mpfr_sub(r46469, r46468, r46467, MPFR_RNDN);
        mpfr_set_d(r46470, z, MPFR_RNDN);
        mpfr_mul(r46471, r46469, r46470, MPFR_RNDN);
        mpfr_set_d(r46472, t, MPFR_RNDN);
        mpfr_div(r46473, r46471, r46472, MPFR_RNDN);
        mpfr_add(r46474, r46467, r46473, MPFR_RNDN);
        return mpfr_get_d(r46474, MPFR_RNDN);
}

static mpfr_t r46475, r46476, r46477, r46478, r46479, r46480, r46481, r46482, r46483, r46484, r46485, r46486, r46487, r46488, r46489, r46490, r46491, r46492, r46493, r46494, r46495, r46496;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46475);
        mpfr_init_set_str(r46476, "-1.2236383726059943e-104", 10, MPFR_RNDN);
        mpfr_init(r46477);
        mpfr_init(r46478);
        mpfr_init(r46479);
        mpfr_init(r46480);
        mpfr_init(r46481);
        mpfr_init(r46482);
        mpfr_init(r46483);
        mpfr_init(r46484);
        mpfr_init_set_str(r46485, "-1.2444038385878892e-264", 10, MPFR_RNDN);
        mpfr_init(r46486);
        mpfr_init_set_str(r46487, "1", 10, MPFR_RNDN);
        mpfr_init(r46488);
        mpfr_init(r46489);
        mpfr_init(r46490);
        mpfr_init(r46491);
        mpfr_init(r46492);
        mpfr_init(r46493);
        mpfr_init(r46494);
        mpfr_init(r46495);
        mpfr_init(r46496);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r46475, x, MPFR_RNDN);
        ;
        mpfr_set_si(r46477, mpfr_cmp(r46475, r46476) <= 0, MPFR_RNDN);
        mpfr_set_d(r46478, z, MPFR_RNDN);
        mpfr_set_d(r46479, t, MPFR_RNDN);
        mpfr_div(r46480, r46478, r46479, MPFR_RNDN);
        mpfr_set_d(r46481, y, MPFR_RNDN);
        mpfr_sub(r46482, r46481, r46475, MPFR_RNDN);
        mpfr_mul(r46483, r46480, r46482, MPFR_RNDN);
        mpfr_add(r46484, r46483, r46475, MPFR_RNDN);
        ;
        mpfr_set_si(r46486, mpfr_cmp(r46475, r46485) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r46488, r46482, r46478, MPFR_RNDN);
        mpfr_div(r46489, r46479, r46488, MPFR_RNDN);
        mpfr_div(r46490, r46487, r46489, MPFR_RNDN);
        mpfr_add(r46491, r46475, r46490, MPFR_RNDN);
        mpfr_div(r46492, r46479, r46478, MPFR_RNDN);
        mpfr_div(r46493, r46482, r46492, MPFR_RNDN);
        mpfr_add(r46494, r46475, r46493, MPFR_RNDN);
        if (mpfr_get_si(r46486, MPFR_RNDN)) { mpfr_set(r46495, r46491, MPFR_RNDN); } else { mpfr_set(r46495, r46494, MPFR_RNDN); };
        if (mpfr_get_si(r46477, MPFR_RNDN)) { mpfr_set(r46496, r46484, MPFR_RNDN); } else { mpfr_set(r46496, r46495, MPFR_RNDN); };
        return mpfr_get_d(r46496, MPFR_RNDN);
}

static mpfr_t r46497, r46498, r46499, r46500, r46501, r46502, r46503, r46504, r46505, r46506, r46507, r46508, r46509, r46510, r46511, r46512, r46513, r46514, r46515, r46516, r46517, r46518;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46497);
        mpfr_init_set_str(r46498, "-1.2236383726059943e-104", 10, MPFR_RNDN);
        mpfr_init(r46499);
        mpfr_init(r46500);
        mpfr_init(r46501);
        mpfr_init(r46502);
        mpfr_init(r46503);
        mpfr_init(r46504);
        mpfr_init(r46505);
        mpfr_init(r46506);
        mpfr_init_set_str(r46507, "-1.2444038385878892e-264", 10, MPFR_RNDN);
        mpfr_init(r46508);
        mpfr_init_set_str(r46509, "1", 10, MPFR_RNDN);
        mpfr_init(r46510);
        mpfr_init(r46511);
        mpfr_init(r46512);
        mpfr_init(r46513);
        mpfr_init(r46514);
        mpfr_init(r46515);
        mpfr_init(r46516);
        mpfr_init(r46517);
        mpfr_init(r46518);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r46497, x, MPFR_RNDN);
        ;
        mpfr_set_si(r46499, mpfr_cmp(r46497, r46498) <= 0, MPFR_RNDN);
        mpfr_set_d(r46500, z, MPFR_RNDN);
        mpfr_set_d(r46501, t, MPFR_RNDN);
        mpfr_div(r46502, r46500, r46501, MPFR_RNDN);
        mpfr_set_d(r46503, y, MPFR_RNDN);
        mpfr_sub(r46504, r46503, r46497, MPFR_RNDN);
        mpfr_mul(r46505, r46502, r46504, MPFR_RNDN);
        mpfr_add(r46506, r46505, r46497, MPFR_RNDN);
        ;
        mpfr_set_si(r46508, mpfr_cmp(r46497, r46507) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r46510, r46504, r46500, MPFR_RNDN);
        mpfr_div(r46511, r46501, r46510, MPFR_RNDN);
        mpfr_div(r46512, r46509, r46511, MPFR_RNDN);
        mpfr_add(r46513, r46497, r46512, MPFR_RNDN);
        mpfr_div(r46514, r46501, r46500, MPFR_RNDN);
        mpfr_div(r46515, r46504, r46514, MPFR_RNDN);
        mpfr_add(r46516, r46497, r46515, MPFR_RNDN);
        if (mpfr_get_si(r46508, MPFR_RNDN)) { mpfr_set(r46517, r46513, MPFR_RNDN); } else { mpfr_set(r46517, r46516, MPFR_RNDN); };
        if (mpfr_get_si(r46499, MPFR_RNDN)) { mpfr_set(r46518, r46506, MPFR_RNDN); } else { mpfr_set(r46518, r46517, MPFR_RNDN); };
        return mpfr_get_d(r46518, MPFR_RNDN);
}

