#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, A";

double f_if(float x, float y) {
        float r34262 = x;
        float r34263 = 3.0;
        float r34264 = 8.0;
        float r34265 = r34263 / r34264;
        float r34266 = y;
        float r34267 = r34265 * r34266;
        float r34268 = r34262 - r34267;
        return r34268;
}

double f_id(double x, double y) {
        double r34269 = x;
        double r34270 = 3.0;
        double r34271 = 8.0;
        double r34272 = r34270 / r34271;
        double r34273 = y;
        double r34274 = r34272 * r34273;
        double r34275 = r34269 - r34274;
        return r34275;
}


double f_of(float x, float y) {
        float r34276 = x;
        float r34277 = 3.0;
        float r34278 = 8.0;
        float r34279 = r34277 / r34278;
        float r34280 = y;
        float r34281 = r34279 * r34280;
        float r34282 = r34276 - r34281;
        return r34282;
}

double f_od(double x, double y) {
        double r34283 = x;
        double r34284 = 3.0;
        double r34285 = 8.0;
        double r34286 = r34284 / r34285;
        double r34287 = y;
        double r34288 = r34286 * r34287;
        double r34289 = r34283 - r34288;
        return r34289;
}

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 r34290, r34291, r34292, r34293, r34294, r34295, r34296;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r34290);
        mpfr_init_set_str(r34291, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34292, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34293);
        mpfr_init(r34294);
        mpfr_init(r34295);
        mpfr_init(r34296);
}

double f_im(double x, double y) {
        mpfr_set_d(r34290, x, MPFR_RNDN);
        ;
        ;
        mpfr_div(r34293, r34291, r34292, MPFR_RNDN);
        mpfr_set_d(r34294, y, MPFR_RNDN);
        mpfr_mul(r34295, r34293, r34294, MPFR_RNDN);
        mpfr_sub(r34296, r34290, r34295, MPFR_RNDN);
        return mpfr_get_d(r34296, MPFR_RNDN);
}

static mpfr_t r34297, r34298, r34299, r34300, r34301, r34302, r34303;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r34297);
        mpfr_init_set_str(r34298, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34299, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34300);
        mpfr_init(r34301);
        mpfr_init(r34302);
        mpfr_init(r34303);
}

double f_fm(double x, double y) {
        mpfr_set_d(r34297, x, MPFR_RNDN);
        ;
        ;
        mpfr_div(r34300, r34298, r34299, MPFR_RNDN);
        mpfr_set_d(r34301, y, MPFR_RNDN);
        mpfr_mul(r34302, r34300, r34301, MPFR_RNDN);
        mpfr_sub(r34303, r34297, r34302, MPFR_RNDN);
        return mpfr_get_d(r34303, MPFR_RNDN);
}

static mpfr_t r34304, r34305, r34306, r34307, r34308, r34309, r34310;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r34304);
        mpfr_init_set_str(r34305, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34306, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34307);
        mpfr_init(r34308);
        mpfr_init(r34309);
        mpfr_init(r34310);
}

double f_dm(double x, double y) {
        mpfr_set_d(r34304, x, MPFR_RNDN);
        ;
        ;
        mpfr_div(r34307, r34305, r34306, MPFR_RNDN);
        mpfr_set_d(r34308, y, MPFR_RNDN);
        mpfr_mul(r34309, r34307, r34308, MPFR_RNDN);
        mpfr_sub(r34310, r34304, r34309, MPFR_RNDN);
        return mpfr_get_d(r34310, MPFR_RNDN);
}

