#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 r46295 = x;
        float r46296 = y;
        float r46297 = r46296 - r46295;
        float r46298 = 2.0;
        float r46299 = r46297 / r46298;
        float r46300 = r46295 + r46299;
        return r46300;
}

double f_id(double x, double y) {
        double r46301 = x;
        double r46302 = y;
        double r46303 = r46302 - r46301;
        double r46304 = 2.0;
        double r46305 = r46303 / r46304;
        double r46306 = r46301 + r46305;
        return r46306;
}


double f_of(float x, float y) {
        float r46307 = x;
        float r46308 = y;
        float r46309 = r46308 - r46307;
        float r46310 = 2.0;
        float r46311 = r46309 / r46310;
        float r46312 = r46307 + r46311;
        return r46312;
}

double f_od(double x, double y) {
        double r46313 = x;
        double r46314 = y;
        double r46315 = r46314 - r46313;
        double r46316 = 2.0;
        double r46317 = r46315 / r46316;
        double r46318 = r46313 + r46317;
        return r46318;
}

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 r46319, r46320, r46321, r46322, r46323, r46324;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46319);
        mpfr_init(r46320);
        mpfr_init(r46321);
        mpfr_init_set_str(r46322, "2.0", 10, MPFR_RNDN);
        mpfr_init(r46323);
        mpfr_init(r46324);
}

double f_im(double x, double y) {
        mpfr_set_d(r46319, x, MPFR_RNDN);
        mpfr_set_d(r46320, y, MPFR_RNDN);
        mpfr_sub(r46321, r46320, r46319, MPFR_RNDN);
        ;
        mpfr_div(r46323, r46321, r46322, MPFR_RNDN);
        mpfr_add(r46324, r46319, r46323, MPFR_RNDN);
        return mpfr_get_d(r46324, MPFR_RNDN);
}

static mpfr_t r46325, r46326, r46327, r46328, r46329, r46330;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46325);
        mpfr_init(r46326);
        mpfr_init(r46327);
        mpfr_init_set_str(r46328, "2.0", 10, MPFR_RNDN);
        mpfr_init(r46329);
        mpfr_init(r46330);
}

double f_fm(double x, double y) {
        mpfr_set_d(r46325, x, MPFR_RNDN);
        mpfr_set_d(r46326, y, MPFR_RNDN);
        mpfr_sub(r46327, r46326, r46325, MPFR_RNDN);
        ;
        mpfr_div(r46329, r46327, r46328, MPFR_RNDN);
        mpfr_add(r46330, r46325, r46329, MPFR_RNDN);
        return mpfr_get_d(r46330, MPFR_RNDN);
}

static mpfr_t r46331, r46332, r46333, r46334, r46335, r46336;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46331);
        mpfr_init(r46332);
        mpfr_init(r46333);
        mpfr_init_set_str(r46334, "2.0", 10, MPFR_RNDN);
        mpfr_init(r46335);
        mpfr_init(r46336);
}

double f_dm(double x, double y) {
        mpfr_set_d(r46331, x, MPFR_RNDN);
        mpfr_set_d(r46332, y, MPFR_RNDN);
        mpfr_sub(r46333, r46332, r46331, MPFR_RNDN);
        ;
        mpfr_div(r46335, r46333, r46334, MPFR_RNDN);
        mpfr_add(r46336, r46331, r46335, MPFR_RNDN);
        return mpfr_get_d(r46336, MPFR_RNDN);
}

