#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 r46616 = x;
        float r46617 = y;
        float r46618 = r46617 - r46616;
        float r46619 = z;
        float r46620 = r46618 * r46619;
        float r46621 = t;
        float r46622 = r46620 / r46621;
        float r46623 = r46616 + r46622;
        return r46623;
}

double f_id(double x, double y, double z, double t) {
        double r46624 = x;
        double r46625 = y;
        double r46626 = r46625 - r46624;
        double r46627 = z;
        double r46628 = r46626 * r46627;
        double r46629 = t;
        double r46630 = r46628 / r46629;
        double r46631 = r46624 + r46630;
        return r46631;
}


double f_of(float x, float y, float z, float t) {
        float r46632 = x;
        float r46633 = -6.906465135771799e-107;
        bool r46634 = r46632 <= r46633;
        float r46635 = z;
        float r46636 = t;
        float r46637 = r46635 / r46636;
        float r46638 = y;
        float r46639 = r46638 - r46632;
        float r46640 = r46637 * r46639;
        float r46641 = r46640 + r46632;
        float r46642 = -1.2396732347310702e-264;
        bool r46643 = r46632 <= r46642;
        float r46644 = 1;
        float r46645 = r46639 * r46635;
        float r46646 = r46636 / r46645;
        float r46647 = r46644 / r46646;
        float r46648 = r46632 + r46647;
        float r46649 = r46636 / r46635;
        float r46650 = r46639 / r46649;
        float r46651 = r46632 + r46650;
        float r46652 = r46643 ? r46648 : r46651;
        float r46653 = r46634 ? r46641 : r46652;
        return r46653;
}

double f_od(double x, double y, double z, double t) {
        double r46654 = x;
        double r46655 = -6.906465135771799e-107;
        bool r46656 = r46654 <= r46655;
        double r46657 = z;
        double r46658 = t;
        double r46659 = r46657 / r46658;
        double r46660 = y;
        double r46661 = r46660 - r46654;
        double r46662 = r46659 * r46661;
        double r46663 = r46662 + r46654;
        double r46664 = -1.2396732347310702e-264;
        bool r46665 = r46654 <= r46664;
        double r46666 = 1;
        double r46667 = r46661 * r46657;
        double r46668 = r46658 / r46667;
        double r46669 = r46666 / r46668;
        double r46670 = r46654 + r46669;
        double r46671 = r46658 / r46657;
        double r46672 = r46661 / r46671;
        double r46673 = r46654 + r46672;
        double r46674 = r46665 ? r46670 : r46673;
        double r46675 = r46656 ? r46663 : r46674;
        return r46675;
}

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 r46676, r46677, r46678, r46679, r46680, r46681, r46682, r46683;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46676);
        mpfr_init(r46677);
        mpfr_init(r46678);
        mpfr_init(r46679);
        mpfr_init(r46680);
        mpfr_init(r46681);
        mpfr_init(r46682);
        mpfr_init(r46683);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r46676, x, MPFR_RNDN);
        mpfr_set_d(r46677, y, MPFR_RNDN);
        mpfr_sub(r46678, r46677, r46676, MPFR_RNDN);
        mpfr_set_d(r46679, z, MPFR_RNDN);
        mpfr_mul(r46680, r46678, r46679, MPFR_RNDN);
        mpfr_set_d(r46681, t, MPFR_RNDN);
        mpfr_div(r46682, r46680, r46681, MPFR_RNDN);
        mpfr_add(r46683, r46676, r46682, MPFR_RNDN);
        return mpfr_get_d(r46683, MPFR_RNDN);
}

static mpfr_t r46684, r46685, r46686, r46687, r46688, r46689, r46690, r46691, r46692, r46693, r46694, r46695, r46696, r46697, r46698, r46699, r46700, r46701, r46702, r46703, r46704, r46705;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46684);
        mpfr_init_set_str(r46685, "-6.906465135771799e-107", 10, MPFR_RNDN);
        mpfr_init(r46686);
        mpfr_init(r46687);
        mpfr_init(r46688);
        mpfr_init(r46689);
        mpfr_init(r46690);
        mpfr_init(r46691);
        mpfr_init(r46692);
        mpfr_init(r46693);
        mpfr_init_set_str(r46694, "-1.2396732347310702e-264", 10, MPFR_RNDN);
        mpfr_init(r46695);
        mpfr_init_set_str(r46696, "1", 10, MPFR_RNDN);
        mpfr_init(r46697);
        mpfr_init(r46698);
        mpfr_init(r46699);
        mpfr_init(r46700);
        mpfr_init(r46701);
        mpfr_init(r46702);
        mpfr_init(r46703);
        mpfr_init(r46704);
        mpfr_init(r46705);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r46684, x, MPFR_RNDN);
        ;
        mpfr_set_si(r46686, mpfr_cmp(r46684, r46685) <= 0, MPFR_RNDN);
        mpfr_set_d(r46687, z, MPFR_RNDN);
        mpfr_set_d(r46688, t, MPFR_RNDN);
        mpfr_div(r46689, r46687, r46688, MPFR_RNDN);
        mpfr_set_d(r46690, y, MPFR_RNDN);
        mpfr_sub(r46691, r46690, r46684, MPFR_RNDN);
        mpfr_mul(r46692, r46689, r46691, MPFR_RNDN);
        mpfr_add(r46693, r46692, r46684, MPFR_RNDN);
        ;
        mpfr_set_si(r46695, mpfr_cmp(r46684, r46694) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r46697, r46691, r46687, MPFR_RNDN);
        mpfr_div(r46698, r46688, r46697, MPFR_RNDN);
        mpfr_div(r46699, r46696, r46698, MPFR_RNDN);
        mpfr_add(r46700, r46684, r46699, MPFR_RNDN);
        mpfr_div(r46701, r46688, r46687, MPFR_RNDN);
        mpfr_div(r46702, r46691, r46701, MPFR_RNDN);
        mpfr_add(r46703, r46684, r46702, MPFR_RNDN);
        if (mpfr_get_si(r46695, MPFR_RNDN)) { mpfr_set(r46704, r46700, MPFR_RNDN); } else { mpfr_set(r46704, r46703, MPFR_RNDN); };
        if (mpfr_get_si(r46686, MPFR_RNDN)) { mpfr_set(r46705, r46693, MPFR_RNDN); } else { mpfr_set(r46705, r46704, MPFR_RNDN); };
        return mpfr_get_d(r46705, MPFR_RNDN);
}

static mpfr_t r46706, r46707, r46708, r46709, r46710, r46711, r46712, r46713, r46714, r46715, r46716, r46717, r46718, r46719, r46720, r46721, r46722, r46723, r46724, r46725, r46726, r46727;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46706);
        mpfr_init_set_str(r46707, "-6.906465135771799e-107", 10, MPFR_RNDN);
        mpfr_init(r46708);
        mpfr_init(r46709);
        mpfr_init(r46710);
        mpfr_init(r46711);
        mpfr_init(r46712);
        mpfr_init(r46713);
        mpfr_init(r46714);
        mpfr_init(r46715);
        mpfr_init_set_str(r46716, "-1.2396732347310702e-264", 10, MPFR_RNDN);
        mpfr_init(r46717);
        mpfr_init_set_str(r46718, "1", 10, MPFR_RNDN);
        mpfr_init(r46719);
        mpfr_init(r46720);
        mpfr_init(r46721);
        mpfr_init(r46722);
        mpfr_init(r46723);
        mpfr_init(r46724);
        mpfr_init(r46725);
        mpfr_init(r46726);
        mpfr_init(r46727);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r46706, x, MPFR_RNDN);
        ;
        mpfr_set_si(r46708, mpfr_cmp(r46706, r46707) <= 0, MPFR_RNDN);
        mpfr_set_d(r46709, z, MPFR_RNDN);
        mpfr_set_d(r46710, t, MPFR_RNDN);
        mpfr_div(r46711, r46709, r46710, MPFR_RNDN);
        mpfr_set_d(r46712, y, MPFR_RNDN);
        mpfr_sub(r46713, r46712, r46706, MPFR_RNDN);
        mpfr_mul(r46714, r46711, r46713, MPFR_RNDN);
        mpfr_add(r46715, r46714, r46706, MPFR_RNDN);
        ;
        mpfr_set_si(r46717, mpfr_cmp(r46706, r46716) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r46719, r46713, r46709, MPFR_RNDN);
        mpfr_div(r46720, r46710, r46719, MPFR_RNDN);
        mpfr_div(r46721, r46718, r46720, MPFR_RNDN);
        mpfr_add(r46722, r46706, r46721, MPFR_RNDN);
        mpfr_div(r46723, r46710, r46709, MPFR_RNDN);
        mpfr_div(r46724, r46713, r46723, MPFR_RNDN);
        mpfr_add(r46725, r46706, r46724, MPFR_RNDN);
        if (mpfr_get_si(r46717, MPFR_RNDN)) { mpfr_set(r46726, r46722, MPFR_RNDN); } else { mpfr_set(r46726, r46725, MPFR_RNDN); };
        if (mpfr_get_si(r46708, MPFR_RNDN)) { mpfr_set(r46727, r46715, MPFR_RNDN); } else { mpfr_set(r46727, r46726, MPFR_RNDN); };
        return mpfr_get_d(r46727, MPFR_RNDN);
}

