#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 r34184 = x;
        float r34185 = 3.0;
        float r34186 = 8.0;
        float r34187 = r34185 / r34186;
        float r34188 = y;
        float r34189 = r34187 * r34188;
        float r34190 = r34184 - r34189;
        return r34190;
}

double f_id(double x, double y) {
        double r34191 = x;
        double r34192 = 3.0;
        double r34193 = 8.0;
        double r34194 = r34192 / r34193;
        double r34195 = y;
        double r34196 = r34194 * r34195;
        double r34197 = r34191 - r34196;
        return r34197;
}


double f_of(float x, float y) {
        float r34198 = x;
        float r34199 = 3.0;
        float r34200 = 8.0;
        float r34201 = r34199 / r34200;
        float r34202 = y;
        float r34203 = r34201 * r34202;
        float r34204 = r34198 - r34203;
        return r34204;
}

double f_od(double x, double y) {
        double r34205 = x;
        double r34206 = 3.0;
        double r34207 = 8.0;
        double r34208 = r34206 / r34207;
        double r34209 = y;
        double r34210 = r34208 * r34209;
        double r34211 = r34205 - r34210;
        return r34211;
}

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 r34212, r34213, r34214, r34215, r34216, r34217, r34218;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r34212);
        mpfr_init_set_str(r34213, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34214, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34215);
        mpfr_init(r34216);
        mpfr_init(r34217);
        mpfr_init(r34218);
}

double f_im(double x, double y) {
        mpfr_set_d(r34212, x, MPFR_RNDN);
        ;
        ;
        mpfr_div(r34215, r34213, r34214, MPFR_RNDN);
        mpfr_set_d(r34216, y, MPFR_RNDN);
        mpfr_mul(r34217, r34215, r34216, MPFR_RNDN);
        mpfr_sub(r34218, r34212, r34217, MPFR_RNDN);
        return mpfr_get_d(r34218, MPFR_RNDN);
}

static mpfr_t r34219, r34220, r34221, r34222, r34223, r34224, r34225;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r34219);
        mpfr_init_set_str(r34220, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34221, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34222);
        mpfr_init(r34223);
        mpfr_init(r34224);
        mpfr_init(r34225);
}

double f_fm(double x, double y) {
        mpfr_set_d(r34219, x, MPFR_RNDN);
        ;
        ;
        mpfr_div(r34222, r34220, r34221, MPFR_RNDN);
        mpfr_set_d(r34223, y, MPFR_RNDN);
        mpfr_mul(r34224, r34222, r34223, MPFR_RNDN);
        mpfr_sub(r34225, r34219, r34224, MPFR_RNDN);
        return mpfr_get_d(r34225, MPFR_RNDN);
}

static mpfr_t r34226, r34227, r34228, r34229, r34230, r34231, r34232;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r34226);
        mpfr_init_set_str(r34227, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34228, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34229);
        mpfr_init(r34230);
        mpfr_init(r34231);
        mpfr_init(r34232);
}

double f_dm(double x, double y) {
        mpfr_set_d(r34226, x, MPFR_RNDN);
        ;
        ;
        mpfr_div(r34229, r34227, r34228, MPFR_RNDN);
        mpfr_set_d(r34230, y, MPFR_RNDN);
        mpfr_mul(r34231, r34229, r34230, MPFR_RNDN);
        mpfr_sub(r34232, r34226, r34231, MPFR_RNDN);
        return mpfr_get_d(r34232, MPFR_RNDN);
}

