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

double f_if(float x, float y, float z) {
        float r34444 = x;
        float r34445 = y;
        float r34446 = r34444 * r34445;
        float r34447 = 2.0;
        float r34448 = r34446 / r34447;
        float r34449 = z;
        float r34450 = 8.0;
        float r34451 = r34449 / r34450;
        float r34452 = r34448 - r34451;
        return r34452;
}

double f_id(double x, double y, double z) {
        double r34453 = x;
        double r34454 = y;
        double r34455 = r34453 * r34454;
        double r34456 = 2.0;
        double r34457 = r34455 / r34456;
        double r34458 = z;
        double r34459 = 8.0;
        double r34460 = r34458 / r34459;
        double r34461 = r34457 - r34460;
        return r34461;
}


double f_of(float x, float y, float z) {
        float r34462 = x;
        float r34463 = y;
        float r34464 = r34462 * r34463;
        float r34465 = 2.0;
        float r34466 = r34464 / r34465;
        float r34467 = z;
        float r34468 = 8.0;
        float r34469 = r34467 / r34468;
        float r34470 = r34466 - r34469;
        return r34470;
}

double f_od(double x, double y, double z) {
        double r34471 = x;
        double r34472 = y;
        double r34473 = r34471 * r34472;
        double r34474 = 2.0;
        double r34475 = r34473 / r34474;
        double r34476 = z;
        double r34477 = 8.0;
        double r34478 = r34476 / r34477;
        double r34479 = r34475 - r34478;
        return r34479;
}

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 r34480, r34481, r34482, r34483, r34484, r34485, r34486, r34487, r34488;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34480);
        mpfr_init(r34481);
        mpfr_init(r34482);
        mpfr_init_set_str(r34483, "2.0", 10, MPFR_RNDN);
        mpfr_init(r34484);
        mpfr_init(r34485);
        mpfr_init_set_str(r34486, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34487);
        mpfr_init(r34488);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r34480, x, MPFR_RNDN);
        mpfr_set_d(r34481, y, MPFR_RNDN);
        mpfr_mul(r34482, r34480, r34481, MPFR_RNDN);
        ;
        mpfr_div(r34484, r34482, r34483, MPFR_RNDN);
        mpfr_set_d(r34485, z, MPFR_RNDN);
        ;
        mpfr_div(r34487, r34485, r34486, MPFR_RNDN);
        mpfr_sub(r34488, r34484, r34487, MPFR_RNDN);
        return mpfr_get_d(r34488, MPFR_RNDN);
}

static mpfr_t r34489, r34490, r34491, r34492, r34493, r34494, r34495, r34496, r34497;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34489);
        mpfr_init(r34490);
        mpfr_init(r34491);
        mpfr_init_set_str(r34492, "2.0", 10, MPFR_RNDN);
        mpfr_init(r34493);
        mpfr_init(r34494);
        mpfr_init_set_str(r34495, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34496);
        mpfr_init(r34497);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r34489, x, MPFR_RNDN);
        mpfr_set_d(r34490, y, MPFR_RNDN);
        mpfr_mul(r34491, r34489, r34490, MPFR_RNDN);
        ;
        mpfr_div(r34493, r34491, r34492, MPFR_RNDN);
        mpfr_set_d(r34494, z, MPFR_RNDN);
        ;
        mpfr_div(r34496, r34494, r34495, MPFR_RNDN);
        mpfr_sub(r34497, r34493, r34496, MPFR_RNDN);
        return mpfr_get_d(r34497, MPFR_RNDN);
}

static mpfr_t r34498, r34499, r34500, r34501, r34502, r34503, r34504, r34505, r34506;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34498);
        mpfr_init(r34499);
        mpfr_init(r34500);
        mpfr_init_set_str(r34501, "2.0", 10, MPFR_RNDN);
        mpfr_init(r34502);
        mpfr_init(r34503);
        mpfr_init_set_str(r34504, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34505);
        mpfr_init(r34506);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r34498, x, MPFR_RNDN);
        mpfr_set_d(r34499, y, MPFR_RNDN);
        mpfr_mul(r34500, r34498, r34499, MPFR_RNDN);
        ;
        mpfr_div(r34502, r34500, r34501, MPFR_RNDN);
        mpfr_set_d(r34503, z, MPFR_RNDN);
        ;
        mpfr_div(r34505, r34503, r34504, MPFR_RNDN);
        mpfr_sub(r34506, r34502, r34505, MPFR_RNDN);
        return mpfr_get_d(r34506, MPFR_RNDN);
}

