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

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

double f_if(float x, float y) {
        float r27781 = x;
        float r27782 = y;
        float r27783 = r27781 * r27782;
        float r27784 = 2.0;
        float r27785 = r27783 / r27784;
        return r27785;
}

double f_id(double x, double y) {
        double r27786 = x;
        double r27787 = y;
        double r27788 = r27786 * r27787;
        double r27789 = 2.0;
        double r27790 = r27788 / r27789;
        return r27790;
}


double f_of(float x, float y) {
        float r27791 = x;
        float r27792 = y;
        float r27793 = r27791 * r27792;
        float r27794 = 2.0;
        float r27795 = r27793 / r27794;
        return r27795;
}

double f_od(double x, double y) {
        double r27796 = x;
        double r27797 = y;
        double r27798 = r27796 * r27797;
        double r27799 = 2.0;
        double r27800 = r27798 / r27799;
        return r27800;
}

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 r27801, r27802, r27803, r27804, r27805;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r27801);
        mpfr_init(r27802);
        mpfr_init(r27803);
        mpfr_init_set_str(r27804, "2.0", 10, MPFR_RNDN);
        mpfr_init(r27805);
}

double f_im(double x, double y) {
        mpfr_set_d(r27801, x, MPFR_RNDN);
        mpfr_set_d(r27802, y, MPFR_RNDN);
        mpfr_mul(r27803, r27801, r27802, MPFR_RNDN);
        ;
        mpfr_div(r27805, r27803, r27804, MPFR_RNDN);
        return mpfr_get_d(r27805, MPFR_RNDN);
}

static mpfr_t r27806, r27807, r27808, r27809, r27810;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r27806);
        mpfr_init(r27807);
        mpfr_init(r27808);
        mpfr_init_set_str(r27809, "2.0", 10, MPFR_RNDN);
        mpfr_init(r27810);
}

double f_fm(double x, double y) {
        mpfr_set_d(r27806, x, MPFR_RNDN);
        mpfr_set_d(r27807, y, MPFR_RNDN);
        mpfr_mul(r27808, r27806, r27807, MPFR_RNDN);
        ;
        mpfr_div(r27810, r27808, r27809, MPFR_RNDN);
        return mpfr_get_d(r27810, MPFR_RNDN);
}

static mpfr_t r27811, r27812, r27813, r27814, r27815;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r27811);
        mpfr_init(r27812);
        mpfr_init(r27813);
        mpfr_init_set_str(r27814, "2.0", 10, MPFR_RNDN);
        mpfr_init(r27815);
}

double f_dm(double x, double y) {
        mpfr_set_d(r27811, x, MPFR_RNDN);
        mpfr_set_d(r27812, y, MPFR_RNDN);
        mpfr_mul(r27813, r27811, r27812, MPFR_RNDN);
        ;
        mpfr_div(r27815, r27813, r27814, MPFR_RNDN);
        return mpfr_get_d(r27815, MPFR_RNDN);
}

