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

char *name = "Graphics.Rendering.Chart.Plot.Vectors:renderPlotVectors from Chart-1.5.3";

double f_if(float x, float y) {
        float r50002 = x;
        float r50003 = 1.0;
        float r50004 = r50003 - r50002;
        float r50005 = y;
        float r50006 = r50003 - r50005;
        float r50007 = r50004 * r50006;
        float r50008 = r50002 + r50007;
        return r50008;
}

double f_id(double x, double y) {
        double r50009 = x;
        double r50010 = 1.0;
        double r50011 = r50010 - r50009;
        double r50012 = y;
        double r50013 = r50010 - r50012;
        double r50014 = r50011 * r50013;
        double r50015 = r50009 + r50014;
        return r50015;
}


double f_of(float x, float y) {
        float r50016 = 1.0;
        float r50017 = y;
        float r50018 = x;
        float r50019 = r50016 - r50018;
        float r50020 = r50017 * r50019;
        float r50021 = r50016 - r50020;
        return r50021;
}

double f_od(double x, double y) {
        double r50022 = 1.0;
        double r50023 = y;
        double r50024 = x;
        double r50025 = r50022 - r50024;
        double r50026 = r50023 * r50025;
        double r50027 = r50022 - r50026;
        return r50027;
}

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 r50028, r50029, r50030, r50031, r50032, r50033, r50034;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r50028);
        mpfr_init_set_str(r50029, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50030);
        mpfr_init(r50031);
        mpfr_init(r50032);
        mpfr_init(r50033);
        mpfr_init(r50034);
}

double f_im(double x, double y) {
        mpfr_set_d(r50028, x, MPFR_RNDN);
        ;
        mpfr_sub(r50030, r50029, r50028, MPFR_RNDN);
        mpfr_set_d(r50031, y, MPFR_RNDN);
        mpfr_sub(r50032, r50029, r50031, MPFR_RNDN);
        mpfr_mul(r50033, r50030, r50032, MPFR_RNDN);
        mpfr_add(r50034, r50028, r50033, MPFR_RNDN);
        return mpfr_get_d(r50034, MPFR_RNDN);
}

static mpfr_t r50035, r50036, r50037, r50038, r50039, r50040;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r50035, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50036);
        mpfr_init(r50037);
        mpfr_init(r50038);
        mpfr_init(r50039);
        mpfr_init(r50040);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r50036, y, MPFR_RNDN);
        mpfr_set_d(r50037, x, MPFR_RNDN);
        mpfr_sub(r50038, r50035, r50037, MPFR_RNDN);
        mpfr_mul(r50039, r50036, r50038, MPFR_RNDN);
        mpfr_sub(r50040, r50035, r50039, MPFR_RNDN);
        return mpfr_get_d(r50040, MPFR_RNDN);
}

static mpfr_t r50041, r50042, r50043, r50044, r50045, r50046;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r50041, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50042);
        mpfr_init(r50043);
        mpfr_init(r50044);
        mpfr_init(r50045);
        mpfr_init(r50046);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r50042, y, MPFR_RNDN);
        mpfr_set_d(r50043, x, MPFR_RNDN);
        mpfr_sub(r50044, r50041, r50043, MPFR_RNDN);
        mpfr_mul(r50045, r50042, r50044, MPFR_RNDN);
        mpfr_sub(r50046, r50041, r50045, MPFR_RNDN);
        return mpfr_get_d(r50046, MPFR_RNDN);
}

