#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 r34373 = x;
        float r34374 = 3.0;
        float r34375 = 8.0;
        float r34376 = r34374 / r34375;
        float r34377 = y;
        float r34378 = r34376 * r34377;
        float r34379 = r34373 - r34378;
        return r34379;
}

double f_id(double x, double y) {
        double r34380 = x;
        double r34381 = 3.0;
        double r34382 = 8.0;
        double r34383 = r34381 / r34382;
        double r34384 = y;
        double r34385 = r34383 * r34384;
        double r34386 = r34380 - r34385;
        return r34386;
}


double f_of(float x, float y) {
        float r34387 = x;
        float r34388 = 3.0;
        float r34389 = 8.0;
        float r34390 = r34388 / r34389;
        float r34391 = y;
        float r34392 = r34390 * r34391;
        float r34393 = r34387 - r34392;
        return r34393;
}

double f_od(double x, double y) {
        double r34394 = x;
        double r34395 = 3.0;
        double r34396 = 8.0;
        double r34397 = r34395 / r34396;
        double r34398 = y;
        double r34399 = r34397 * r34398;
        double r34400 = r34394 - r34399;
        return r34400;
}

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 r34401, r34402, r34403, r34404, r34405, r34406, r34407;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r34401);
        mpfr_init_set_str(r34402, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34403, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34404);
        mpfr_init(r34405);
        mpfr_init(r34406);
        mpfr_init(r34407);
}

double f_im(double x, double y) {
        mpfr_set_d(r34401, x, MPFR_RNDN);
        ;
        ;
        mpfr_div(r34404, r34402, r34403, MPFR_RNDN);
        mpfr_set_d(r34405, y, MPFR_RNDN);
        mpfr_mul(r34406, r34404, r34405, MPFR_RNDN);
        mpfr_sub(r34407, r34401, r34406, MPFR_RNDN);
        return mpfr_get_d(r34407, MPFR_RNDN);
}

static mpfr_t r34408, r34409, r34410, r34411, r34412, r34413, r34414;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r34408);
        mpfr_init_set_str(r34409, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34410, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34411);
        mpfr_init(r34412);
        mpfr_init(r34413);
        mpfr_init(r34414);
}

double f_fm(double x, double y) {
        mpfr_set_d(r34408, x, MPFR_RNDN);
        ;
        ;
        mpfr_div(r34411, r34409, r34410, MPFR_RNDN);
        mpfr_set_d(r34412, y, MPFR_RNDN);
        mpfr_mul(r34413, r34411, r34412, MPFR_RNDN);
        mpfr_sub(r34414, r34408, r34413, MPFR_RNDN);
        return mpfr_get_d(r34414, MPFR_RNDN);
}

static mpfr_t r34415, r34416, r34417, r34418, r34419, r34420, r34421;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r34415);
        mpfr_init_set_str(r34416, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34417, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34418);
        mpfr_init(r34419);
        mpfr_init(r34420);
        mpfr_init(r34421);
}

double f_dm(double x, double y) {
        mpfr_set_d(r34415, x, MPFR_RNDN);
        ;
        ;
        mpfr_div(r34418, r34416, r34417, MPFR_RNDN);
        mpfr_set_d(r34419, y, MPFR_RNDN);
        mpfr_mul(r34420, r34418, r34419, MPFR_RNDN);
        mpfr_sub(r34421, r34415, r34420, MPFR_RNDN);
        return mpfr_get_d(r34421, MPFR_RNDN);
}

