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

double f_if(float x, float y, float z, float t) {
        float r53969 = 1.0;
        float r53970 = 8.0;
        float r53971 = r53969 / r53970;
        float r53972 = x;
        float r53973 = r53971 * r53972;
        float r53974 = y;
        float r53975 = z;
        float r53976 = r53974 * r53975;
        float r53977 = 2.0;
        float r53978 = r53976 / r53977;
        float r53979 = r53973 - r53978;
        float r53980 = t;
        float r53981 = r53979 + r53980;
        return r53981;
}

double f_id(double x, double y, double z, double t) {
        double r53982 = 1.0;
        double r53983 = 8.0;
        double r53984 = r53982 / r53983;
        double r53985 = x;
        double r53986 = r53984 * r53985;
        double r53987 = y;
        double r53988 = z;
        double r53989 = r53987 * r53988;
        double r53990 = 2.0;
        double r53991 = r53989 / r53990;
        double r53992 = r53986 - r53991;
        double r53993 = t;
        double r53994 = r53992 + r53993;
        return r53994;
}


double f_of(float x, float y, float z, float t) {
        float r53995 = 1.0;
        float r53996 = 8.0;
        float r53997 = r53995 / r53996;
        float r53998 = x;
        float r53999 = r53997 * r53998;
        float r54000 = y;
        float r54001 = z;
        float r54002 = r54000 * r54001;
        float r54003 = 2.0;
        float r54004 = r54002 / r54003;
        float r54005 = r53999 - r54004;
        float r54006 = t;
        float r54007 = r54005 + r54006;
        return r54007;
}

double f_od(double x, double y, double z, double t) {
        double r54008 = 1.0;
        double r54009 = 8.0;
        double r54010 = r54008 / r54009;
        double r54011 = x;
        double r54012 = r54010 * r54011;
        double r54013 = y;
        double r54014 = z;
        double r54015 = r54013 * r54014;
        double r54016 = 2.0;
        double r54017 = r54015 / r54016;
        double r54018 = r54012 - r54017;
        double r54019 = t;
        double r54020 = r54018 + r54019;
        return r54020;
}

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 r54021, r54022, r54023, r54024, r54025, r54026, r54027, r54028, r54029, r54030, r54031, r54032, r54033;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(656);
        mpfr_init_set_str(r54021, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54022, "8.0", 10, MPFR_RNDN);
        mpfr_init(r54023);
        mpfr_init(r54024);
        mpfr_init(r54025);
        mpfr_init(r54026);
        mpfr_init(r54027);
        mpfr_init(r54028);
        mpfr_init_set_str(r54029, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54030);
        mpfr_init(r54031);
        mpfr_init(r54032);
        mpfr_init(r54033);
}

double f_im(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r54023, r54021, r54022, MPFR_RNDN);
        mpfr_set_d(r54024, x, MPFR_RNDN);
        mpfr_mul(r54025, r54023, r54024, MPFR_RNDN);
        mpfr_set_d(r54026, y, MPFR_RNDN);
        mpfr_set_d(r54027, z, MPFR_RNDN);
        mpfr_mul(r54028, r54026, r54027, MPFR_RNDN);
        ;
        mpfr_div(r54030, r54028, r54029, MPFR_RNDN);
        mpfr_sub(r54031, r54025, r54030, MPFR_RNDN);
        mpfr_set_d(r54032, t, MPFR_RNDN);
        mpfr_add(r54033, r54031, r54032, MPFR_RNDN);
        return mpfr_get_d(r54033, MPFR_RNDN);
}

static mpfr_t r54034, r54035, r54036, r54037, r54038, r54039, r54040, r54041, r54042, r54043, r54044, r54045, r54046;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(656);
        mpfr_init_set_str(r54034, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54035, "8.0", 10, MPFR_RNDN);
        mpfr_init(r54036);
        mpfr_init(r54037);
        mpfr_init(r54038);
        mpfr_init(r54039);
        mpfr_init(r54040);
        mpfr_init(r54041);
        mpfr_init_set_str(r54042, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54043);
        mpfr_init(r54044);
        mpfr_init(r54045);
        mpfr_init(r54046);
}

double f_fm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r54036, r54034, r54035, MPFR_RNDN);
        mpfr_set_d(r54037, x, MPFR_RNDN);
        mpfr_mul(r54038, r54036, r54037, MPFR_RNDN);
        mpfr_set_d(r54039, y, MPFR_RNDN);
        mpfr_set_d(r54040, z, MPFR_RNDN);
        mpfr_mul(r54041, r54039, r54040, MPFR_RNDN);
        ;
        mpfr_div(r54043, r54041, r54042, MPFR_RNDN);
        mpfr_sub(r54044, r54038, r54043, MPFR_RNDN);
        mpfr_set_d(r54045, t, MPFR_RNDN);
        mpfr_add(r54046, r54044, r54045, MPFR_RNDN);
        return mpfr_get_d(r54046, MPFR_RNDN);
}

static mpfr_t r54047, r54048, r54049, r54050, r54051, r54052, r54053, r54054, r54055, r54056, r54057, r54058, r54059;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(656);
        mpfr_init_set_str(r54047, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54048, "8.0", 10, MPFR_RNDN);
        mpfr_init(r54049);
        mpfr_init(r54050);
        mpfr_init(r54051);
        mpfr_init(r54052);
        mpfr_init(r54053);
        mpfr_init(r54054);
        mpfr_init_set_str(r54055, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54056);
        mpfr_init(r54057);
        mpfr_init(r54058);
        mpfr_init(r54059);
}

double f_dm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r54049, r54047, r54048, MPFR_RNDN);
        mpfr_set_d(r54050, x, MPFR_RNDN);
        mpfr_mul(r54051, r54049, r54050, MPFR_RNDN);
        mpfr_set_d(r54052, y, MPFR_RNDN);
        mpfr_set_d(r54053, z, MPFR_RNDN);
        mpfr_mul(r54054, r54052, r54053, MPFR_RNDN);
        ;
        mpfr_div(r54056, r54054, r54055, MPFR_RNDN);
        mpfr_sub(r54057, r54051, r54056, MPFR_RNDN);
        mpfr_set_d(r54058, t, MPFR_RNDN);
        mpfr_add(r54059, r54057, r54058, MPFR_RNDN);
        return mpfr_get_d(r54059, MPFR_RNDN);
}

