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

char *name = "Diagrams.Solve.Polynomial:quartForm  from diagrams-solve-0.1, E";

double f_if(float x, float y) {
        float r34156 = x;
        float r34157 = y;
        float r34158 = 4.0;
        float r34159 = r34157 / r34158;
        float r34160 = r34156 - r34159;
        return r34160;
}

double f_id(double x, double y) {
        double r34161 = x;
        double r34162 = y;
        double r34163 = 4.0;
        double r34164 = r34162 / r34163;
        double r34165 = r34161 - r34164;
        return r34165;
}


double f_of(float x, float y) {
        float r34166 = x;
        float r34167 = y;
        float r34168 = 4.0;
        float r34169 = r34167 / r34168;
        float r34170 = r34166 - r34169;
        return r34170;
}

double f_od(double x, double y) {
        double r34171 = x;
        double r34172 = y;
        double r34173 = 4.0;
        double r34174 = r34172 / r34173;
        double r34175 = r34171 - r34174;
        return r34175;
}

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 r34176, r34177, r34178, r34179, r34180;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34176);
        mpfr_init(r34177);
        mpfr_init_set_str(r34178, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34179);
        mpfr_init(r34180);
}

double f_im(double x, double y) {
        mpfr_set_d(r34176, x, MPFR_RNDN);
        mpfr_set_d(r34177, y, MPFR_RNDN);
        ;
        mpfr_div(r34179, r34177, r34178, MPFR_RNDN);
        mpfr_sub(r34180, r34176, r34179, MPFR_RNDN);
        return mpfr_get_d(r34180, MPFR_RNDN);
}

static mpfr_t r34181, r34182, r34183, r34184, r34185;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34181);
        mpfr_init(r34182);
        mpfr_init_set_str(r34183, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34184);
        mpfr_init(r34185);
}

double f_fm(double x, double y) {
        mpfr_set_d(r34181, x, MPFR_RNDN);
        mpfr_set_d(r34182, y, MPFR_RNDN);
        ;
        mpfr_div(r34184, r34182, r34183, MPFR_RNDN);
        mpfr_sub(r34185, r34181, r34184, MPFR_RNDN);
        return mpfr_get_d(r34185, MPFR_RNDN);
}

static mpfr_t r34186, r34187, r34188, r34189, r34190;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34186);
        mpfr_init(r34187);
        mpfr_init_set_str(r34188, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34189);
        mpfr_init(r34190);
}

double f_dm(double x, double y) {
        mpfr_set_d(r34186, x, MPFR_RNDN);
        mpfr_set_d(r34187, y, MPFR_RNDN);
        ;
        mpfr_div(r34189, r34187, r34188, MPFR_RNDN);
        mpfr_sub(r34190, r34186, r34189, MPFR_RNDN);
        return mpfr_get_d(r34190, MPFR_RNDN);
}

