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

char *name = "Graphics.Rendering.Chart.Axis.Types:hBufferRect from Chart-1.5.3";

double f_if(float x, float y) {
        float r50751 = x;
        float r50752 = y;
        float r50753 = r50751 - r50752;
        float r50754 = 2.0;
        float r50755 = r50753 / r50754;
        float r50756 = r50751 + r50755;
        return r50756;
}

double f_id(double x, double y) {
        double r50757 = x;
        double r50758 = y;
        double r50759 = r50757 - r50758;
        double r50760 = 2.0;
        double r50761 = r50759 / r50760;
        double r50762 = r50757 + r50761;
        return r50762;
}


double f_of(float x, float y) {
        float r50763 = 1.5;
        float r50764 = x;
        float r50765 = r50763 * r50764;
        float r50766 = 0.5;
        float r50767 = y;
        float r50768 = r50766 * r50767;
        float r50769 = r50765 - r50768;
        return r50769;
}

double f_od(double x, double y) {
        double r50770 = 1.5;
        double r50771 = x;
        double r50772 = r50770 * r50771;
        double r50773 = 0.5;
        double r50774 = y;
        double r50775 = r50773 * r50774;
        double r50776 = r50772 - r50775;
        return r50776;
}

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 r50777, r50778, r50779, r50780, r50781, r50782;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r50777);
        mpfr_init(r50778);
        mpfr_init(r50779);
        mpfr_init_set_str(r50780, "2.0", 10, MPFR_RNDN);
        mpfr_init(r50781);
        mpfr_init(r50782);
}

double f_im(double x, double y) {
        mpfr_set_d(r50777, x, MPFR_RNDN);
        mpfr_set_d(r50778, y, MPFR_RNDN);
        mpfr_sub(r50779, r50777, r50778, MPFR_RNDN);
        ;
        mpfr_div(r50781, r50779, r50780, MPFR_RNDN);
        mpfr_add(r50782, r50777, r50781, MPFR_RNDN);
        return mpfr_get_d(r50782, MPFR_RNDN);
}

static mpfr_t r50783, r50784, r50785, r50786, r50787, r50788, r50789;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r50783, "1.5", 10, MPFR_RNDN);
        mpfr_init(r50784);
        mpfr_init(r50785);
        mpfr_init_set_str(r50786, "0.5", 10, MPFR_RNDN);
        mpfr_init(r50787);
        mpfr_init(r50788);
        mpfr_init(r50789);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r50784, x, MPFR_RNDN);
        mpfr_mul(r50785, r50783, r50784, MPFR_RNDN);
        ;
        mpfr_set_d(r50787, y, MPFR_RNDN);
        mpfr_mul(r50788, r50786, r50787, MPFR_RNDN);
        mpfr_sub(r50789, r50785, r50788, MPFR_RNDN);
        return mpfr_get_d(r50789, MPFR_RNDN);
}

static mpfr_t r50790, r50791, r50792, r50793, r50794, r50795, r50796;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r50790, "1.5", 10, MPFR_RNDN);
        mpfr_init(r50791);
        mpfr_init(r50792);
        mpfr_init_set_str(r50793, "0.5", 10, MPFR_RNDN);
        mpfr_init(r50794);
        mpfr_init(r50795);
        mpfr_init(r50796);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r50791, x, MPFR_RNDN);
        mpfr_mul(r50792, r50790, r50791, MPFR_RNDN);
        ;
        mpfr_set_d(r50794, y, MPFR_RNDN);
        mpfr_mul(r50795, r50793, r50794, MPFR_RNDN);
        mpfr_sub(r50796, r50792, r50795, MPFR_RNDN);
        return mpfr_get_d(r50796, MPFR_RNDN);
}

