#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 r50883 = x;
        float r50884 = y;
        float r50885 = r50883 - r50884;
        float r50886 = 2.0;
        float r50887 = r50885 / r50886;
        float r50888 = r50883 + r50887;
        return r50888;
}

double f_id(double x, double y) {
        double r50889 = x;
        double r50890 = y;
        double r50891 = r50889 - r50890;
        double r50892 = 2.0;
        double r50893 = r50891 / r50892;
        double r50894 = r50889 + r50893;
        return r50894;
}


double f_of(float x, float y) {
        float r50895 = 1.5;
        float r50896 = x;
        float r50897 = r50895 * r50896;
        float r50898 = 0.5;
        float r50899 = y;
        float r50900 = r50898 * r50899;
        float r50901 = r50897 - r50900;
        return r50901;
}

double f_od(double x, double y) {
        double r50902 = 1.5;
        double r50903 = x;
        double r50904 = r50902 * r50903;
        double r50905 = 0.5;
        double r50906 = y;
        double r50907 = r50905 * r50906;
        double r50908 = r50904 - r50907;
        return r50908;
}

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 r50909, r50910, r50911, r50912, r50913, r50914;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r50909);
        mpfr_init(r50910);
        mpfr_init(r50911);
        mpfr_init_set_str(r50912, "2.0", 10, MPFR_RNDN);
        mpfr_init(r50913);
        mpfr_init(r50914);
}

double f_im(double x, double y) {
        mpfr_set_d(r50909, x, MPFR_RNDN);
        mpfr_set_d(r50910, y, MPFR_RNDN);
        mpfr_sub(r50911, r50909, r50910, MPFR_RNDN);
        ;
        mpfr_div(r50913, r50911, r50912, MPFR_RNDN);
        mpfr_add(r50914, r50909, r50913, MPFR_RNDN);
        return mpfr_get_d(r50914, MPFR_RNDN);
}

static mpfr_t r50915, r50916, r50917, r50918, r50919, r50920, r50921;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r50915, "1.5", 10, MPFR_RNDN);
        mpfr_init(r50916);
        mpfr_init(r50917);
        mpfr_init_set_str(r50918, "0.5", 10, MPFR_RNDN);
        mpfr_init(r50919);
        mpfr_init(r50920);
        mpfr_init(r50921);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r50916, x, MPFR_RNDN);
        mpfr_mul(r50917, r50915, r50916, MPFR_RNDN);
        ;
        mpfr_set_d(r50919, y, MPFR_RNDN);
        mpfr_mul(r50920, r50918, r50919, MPFR_RNDN);
        mpfr_sub(r50921, r50917, r50920, MPFR_RNDN);
        return mpfr_get_d(r50921, MPFR_RNDN);
}

static mpfr_t r50922, r50923, r50924, r50925, r50926, r50927, r50928;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r50922, "1.5", 10, MPFR_RNDN);
        mpfr_init(r50923);
        mpfr_init(r50924);
        mpfr_init_set_str(r50925, "0.5", 10, MPFR_RNDN);
        mpfr_init(r50926);
        mpfr_init(r50927);
        mpfr_init(r50928);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r50923, x, MPFR_RNDN);
        mpfr_mul(r50924, r50922, r50923, MPFR_RNDN);
        ;
        mpfr_set_d(r50926, y, MPFR_RNDN);
        mpfr_mul(r50927, r50925, r50926, MPFR_RNDN);
        mpfr_sub(r50928, r50924, r50927, MPFR_RNDN);
        return mpfr_get_d(r50928, MPFR_RNDN);
}

