#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 r34191 = x;
        float r34192 = y;
        float r34193 = r34191 * r34192;
        float r34194 = 2.0;
        float r34195 = r34193 / r34194;
        float r34196 = z;
        float r34197 = 8.0;
        float r34198 = r34196 / r34197;
        float r34199 = r34195 - r34198;
        return r34199;
}

double f_id(double x, double y, double z) {
        double r34200 = x;
        double r34201 = y;
        double r34202 = r34200 * r34201;
        double r34203 = 2.0;
        double r34204 = r34202 / r34203;
        double r34205 = z;
        double r34206 = 8.0;
        double r34207 = r34205 / r34206;
        double r34208 = r34204 - r34207;
        return r34208;
}


double f_of(float x, float y, float z) {
        float r34209 = x;
        float r34210 = y;
        float r34211 = r34209 * r34210;
        float r34212 = 2.0;
        float r34213 = r34211 / r34212;
        float r34214 = z;
        float r34215 = 8.0;
        float r34216 = r34214 / r34215;
        float r34217 = r34213 - r34216;
        return r34217;
}

double f_od(double x, double y, double z) {
        double r34218 = x;
        double r34219 = y;
        double r34220 = r34218 * r34219;
        double r34221 = 2.0;
        double r34222 = r34220 / r34221;
        double r34223 = z;
        double r34224 = 8.0;
        double r34225 = r34223 / r34224;
        double r34226 = r34222 - r34225;
        return r34226;
}

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 r34227, r34228, r34229, r34230, r34231, r34232, r34233, r34234, r34235;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34227);
        mpfr_init(r34228);
        mpfr_init(r34229);
        mpfr_init_set_str(r34230, "2.0", 10, MPFR_RNDN);
        mpfr_init(r34231);
        mpfr_init(r34232);
        mpfr_init_set_str(r34233, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34234);
        mpfr_init(r34235);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r34227, x, MPFR_RNDN);
        mpfr_set_d(r34228, y, MPFR_RNDN);
        mpfr_mul(r34229, r34227, r34228, MPFR_RNDN);
        ;
        mpfr_div(r34231, r34229, r34230, MPFR_RNDN);
        mpfr_set_d(r34232, z, MPFR_RNDN);
        ;
        mpfr_div(r34234, r34232, r34233, MPFR_RNDN);
        mpfr_sub(r34235, r34231, r34234, MPFR_RNDN);
        return mpfr_get_d(r34235, MPFR_RNDN);
}

static mpfr_t r34236, r34237, r34238, r34239, r34240, r34241, r34242, r34243, r34244;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34236);
        mpfr_init(r34237);
        mpfr_init(r34238);
        mpfr_init_set_str(r34239, "2.0", 10, MPFR_RNDN);
        mpfr_init(r34240);
        mpfr_init(r34241);
        mpfr_init_set_str(r34242, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34243);
        mpfr_init(r34244);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r34236, x, MPFR_RNDN);
        mpfr_set_d(r34237, y, MPFR_RNDN);
        mpfr_mul(r34238, r34236, r34237, MPFR_RNDN);
        ;
        mpfr_div(r34240, r34238, r34239, MPFR_RNDN);
        mpfr_set_d(r34241, z, MPFR_RNDN);
        ;
        mpfr_div(r34243, r34241, r34242, MPFR_RNDN);
        mpfr_sub(r34244, r34240, r34243, MPFR_RNDN);
        return mpfr_get_d(r34244, MPFR_RNDN);
}

static mpfr_t r34245, r34246, r34247, r34248, r34249, r34250, r34251, r34252, r34253;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34245);
        mpfr_init(r34246);
        mpfr_init(r34247);
        mpfr_init_set_str(r34248, "2.0", 10, MPFR_RNDN);
        mpfr_init(r34249);
        mpfr_init(r34250);
        mpfr_init_set_str(r34251, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34252);
        mpfr_init(r34253);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r34245, x, MPFR_RNDN);
        mpfr_set_d(r34246, y, MPFR_RNDN);
        mpfr_mul(r34247, r34245, r34246, MPFR_RNDN);
        ;
        mpfr_div(r34249, r34247, r34248, MPFR_RNDN);
        mpfr_set_d(r34250, z, MPFR_RNDN);
        ;
        mpfr_div(r34252, r34250, r34251, MPFR_RNDN);
        mpfr_sub(r34253, r34249, r34252, MPFR_RNDN);
        return mpfr_get_d(r34253, MPFR_RNDN);
}

