#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 r46268 = x;
        float r46269 = y;
        float r46270 = r46269 - r46268;
        float r46271 = 2.0;
        float r46272 = r46270 / r46271;
        float r46273 = r46268 + r46272;
        return r46273;
}

double f_id(double x, double y) {
        double r46274 = x;
        double r46275 = y;
        double r46276 = r46275 - r46274;
        double r46277 = 2.0;
        double r46278 = r46276 / r46277;
        double r46279 = r46274 + r46278;
        return r46279;
}


double f_of(float x, float y) {
        float r46280 = x;
        float r46281 = y;
        float r46282 = r46281 - r46280;
        float r46283 = 2.0;
        float r46284 = r46282 / r46283;
        float r46285 = r46280 + r46284;
        return r46285;
}

double f_od(double x, double y) {
        double r46286 = x;
        double r46287 = y;
        double r46288 = r46287 - r46286;
        double r46289 = 2.0;
        double r46290 = r46288 / r46289;
        double r46291 = r46286 + r46290;
        return r46291;
}

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 r46292, r46293, r46294, r46295, r46296, r46297;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46292);
        mpfr_init(r46293);
        mpfr_init(r46294);
        mpfr_init_set_str(r46295, "2.0", 10, MPFR_RNDN);
        mpfr_init(r46296);
        mpfr_init(r46297);
}

double f_im(double x, double y) {
        mpfr_set_d(r46292, x, MPFR_RNDN);
        mpfr_set_d(r46293, y, MPFR_RNDN);
        mpfr_sub(r46294, r46293, r46292, MPFR_RNDN);
        ;
        mpfr_div(r46296, r46294, r46295, MPFR_RNDN);
        mpfr_add(r46297, r46292, r46296, MPFR_RNDN);
        return mpfr_get_d(r46297, MPFR_RNDN);
}

static mpfr_t r46298, r46299, r46300, r46301, r46302, r46303;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46298);
        mpfr_init(r46299);
        mpfr_init(r46300);
        mpfr_init_set_str(r46301, "2.0", 10, MPFR_RNDN);
        mpfr_init(r46302);
        mpfr_init(r46303);
}

double f_fm(double x, double y) {
        mpfr_set_d(r46298, x, MPFR_RNDN);
        mpfr_set_d(r46299, y, MPFR_RNDN);
        mpfr_sub(r46300, r46299, r46298, MPFR_RNDN);
        ;
        mpfr_div(r46302, r46300, r46301, MPFR_RNDN);
        mpfr_add(r46303, r46298, r46302, MPFR_RNDN);
        return mpfr_get_d(r46303, MPFR_RNDN);
}

static mpfr_t r46304, r46305, r46306, r46307, r46308, r46309;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46304);
        mpfr_init(r46305);
        mpfr_init(r46306);
        mpfr_init_set_str(r46307, "2.0", 10, MPFR_RNDN);
        mpfr_init(r46308);
        mpfr_init(r46309);
}

double f_dm(double x, double y) {
        mpfr_set_d(r46304, x, MPFR_RNDN);
        mpfr_set_d(r46305, y, MPFR_RNDN);
        mpfr_sub(r46306, r46305, r46304, MPFR_RNDN);
        ;
        mpfr_div(r46308, r46306, r46307, MPFR_RNDN);
        mpfr_add(r46309, r46304, r46308, MPFR_RNDN);
        return mpfr_get_d(r46309, MPFR_RNDN);
}

