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

char *name = "Graphics.Rendering.Chart.Plot.Pie:renderPie from Chart-1.5.3";

double f_if(float x, float y) {
        float r50076 = x;
        float r50077 = y;
        float r50078 = r50076 + r50077;
        float r50079 = r50078 - r50076;
        return r50079;
}

double f_id(double x, double y) {
        double r50080 = x;
        double r50081 = y;
        double r50082 = r50080 + r50081;
        double r50083 = r50082 - r50080;
        return r50083;
}


double f_of(float __attribute__((unused)) x, float y) {
        float r50084 = y;
        float r50085 = 0;
        float r50086 = r50084 - r50085;
        return r50086;
}

double f_od(double __attribute__((unused)) x, double y) {
        double r50087 = y;
        double r50088 = 0;
        double r50089 = r50087 - r50088;
        return r50089;
}

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 r50090, r50091, r50092, r50093;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r50090);
        mpfr_init(r50091);
        mpfr_init(r50092);
        mpfr_init(r50093);
}

double f_im(double x, double y) {
        mpfr_set_d(r50090, x, MPFR_RNDN);
        mpfr_set_d(r50091, y, MPFR_RNDN);
        mpfr_add(r50092, r50090, r50091, MPFR_RNDN);
        mpfr_sub(r50093, r50092, r50090, MPFR_RNDN);
        return mpfr_get_d(r50093, MPFR_RNDN);
}

static mpfr_t r50094, r50095, r50096;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r50094);
        mpfr_init_set_str(r50095, "0", 10, MPFR_RNDN);
        mpfr_init(r50096);
}

double f_fm(double __attribute__((unused)) x, double y) {
        mpfr_set_d(r50094, y, MPFR_RNDN);
        ;
        mpfr_sub(r50096, r50094, r50095, MPFR_RNDN);
        return mpfr_get_d(r50096, MPFR_RNDN);
}

static mpfr_t r50097, r50098, r50099;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r50097);
        mpfr_init_set_str(r50098, "0", 10, MPFR_RNDN);
        mpfr_init(r50099);
}

double f_dm(double __attribute__((unused)) x, double y) {
        mpfr_set_d(r50097, y, MPFR_RNDN);
        ;
        mpfr_sub(r50099, r50097, r50098, MPFR_RNDN);
        return mpfr_get_d(r50099, MPFR_RNDN);
}

