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

char *name = "Numeric.Interval.Internal:bisect from intervals-0.7.1, A";

double f_if(float x, float y) {
        float r46272 = x;
        float r46273 = y;
        float r46274 = r46273 - r46272;
        float r46275 = 2.0;
        float r46276 = r46274 / r46275;
        float r46277 = r46272 + r46276;
        return r46277;
}

double f_id(double x, double y) {
        double r46278 = x;
        double r46279 = y;
        double r46280 = r46279 - r46278;
        double r46281 = 2.0;
        double r46282 = r46280 / r46281;
        double r46283 = r46278 + r46282;
        return r46283;
}


double f_of(float x, float y) {
        float r46284 = x;
        float r46285 = y;
        float r46286 = r46285 - r46284;
        float r46287 = 2.0;
        float r46288 = r46286 / r46287;
        float r46289 = r46284 + r46288;
        return r46289;
}

double f_od(double x, double y) {
        double r46290 = x;
        double r46291 = y;
        double r46292 = r46291 - r46290;
        double r46293 = 2.0;
        double r46294 = r46292 / r46293;
        double r46295 = r46290 + r46294;
        return r46295;
}

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 r46296, r46297, r46298, r46299, r46300, r46301;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46296);
        mpfr_init(r46297);
        mpfr_init(r46298);
        mpfr_init_set_str(r46299, "2.0", 10, MPFR_RNDN);
        mpfr_init(r46300);
        mpfr_init(r46301);
}

double f_im(double x, double y) {
        mpfr_set_d(r46296, x, MPFR_RNDN);
        mpfr_set_d(r46297, y, MPFR_RNDN);
        mpfr_sub(r46298, r46297, r46296, MPFR_RNDN);
        ;
        mpfr_div(r46300, r46298, r46299, MPFR_RNDN);
        mpfr_add(r46301, r46296, r46300, MPFR_RNDN);
        return mpfr_get_d(r46301, MPFR_RNDN);
}

static mpfr_t r46302, r46303, r46304, r46305, r46306, r46307;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46302);
        mpfr_init(r46303);
        mpfr_init(r46304);
        mpfr_init_set_str(r46305, "2.0", 10, MPFR_RNDN);
        mpfr_init(r46306);
        mpfr_init(r46307);
}

double f_fm(double x, double y) {
        mpfr_set_d(r46302, x, MPFR_RNDN);
        mpfr_set_d(r46303, y, MPFR_RNDN);
        mpfr_sub(r46304, r46303, r46302, MPFR_RNDN);
        ;
        mpfr_div(r46306, r46304, r46305, MPFR_RNDN);
        mpfr_add(r46307, r46302, r46306, MPFR_RNDN);
        return mpfr_get_d(r46307, MPFR_RNDN);
}

static mpfr_t r46308, r46309, r46310, r46311, r46312, r46313;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46308);
        mpfr_init(r46309);
        mpfr_init(r46310);
        mpfr_init_set_str(r46311, "2.0", 10, MPFR_RNDN);
        mpfr_init(r46312);
        mpfr_init(r46313);
}

double f_dm(double x, double y) {
        mpfr_set_d(r46308, x, MPFR_RNDN);
        mpfr_set_d(r46309, y, MPFR_RNDN);
        mpfr_sub(r46310, r46309, r46308, MPFR_RNDN);
        ;
        mpfr_div(r46312, r46310, r46311, MPFR_RNDN);
        mpfr_add(r46313, r46308, r46312, MPFR_RNDN);
        return mpfr_get_d(r46313, MPFR_RNDN);
}

