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

double f_if(float x, float y, float z, float t, float a, float b, float c) {
        float r51938 = x;
        float r51939 = y;
        float r51940 = r51938 * r51939;
        float r51941 = z;
        float r51942 = t;
        float r51943 = r51941 * r51942;
        float r51944 = 16.0f;
        float r51945 = r51943 / r51944;
        float r51946 = r51940 + r51945;
        float r51947 = a;
        float r51948 = b;
        float r51949 = r51947 * r51948;
        float r51950 = 4.0f;
        float r51951 = r51949 / r51950;
        float r51952 = r51946 - r51951;
        float r51953 = c;
        float r51954 = r51952 + r51953;
        return r51954;
}

double f_id(double x, double y, double z, double t, double a, double b, double c) {
        double r51955 = x;
        double r51956 = y;
        double r51957 = r51955 * r51956;
        double r51958 = z;
        double r51959 = t;
        double r51960 = r51958 * r51959;
        double r51961 = 16.0;
        double r51962 = r51960 / r51961;
        double r51963 = r51957 + r51962;
        double r51964 = a;
        double r51965 = b;
        double r51966 = r51964 * r51965;
        double r51967 = 4.0;
        double r51968 = r51966 / r51967;
        double r51969 = r51963 - r51968;
        double r51970 = c;
        double r51971 = r51969 + r51970;
        return r51971;
}


double f_of(float x, float y, float z, float t, float a, float b, float c) {
        float r51972 = x;
        float r51973 = y;
        float r51974 = r51972 * r51973;
        float r51975 = z;
        float r51976 = t;
        float r51977 = r51975 * r51976;
        float r51978 = 16.0f;
        float r51979 = r51977 / r51978;
        float r51980 = r51974 + r51979;
        float r51981 = a;
        float r51982 = b;
        float r51983 = r51981 * r51982;
        float r51984 = 4.0f;
        float r51985 = r51983 / r51984;
        float r51986 = r51980 - r51985;
        float r51987 = c;
        float r51988 = r51986 + r51987;
        return r51988;
}

double f_od(double x, double y, double z, double t, double a, double b, double c) {
        double r51989 = x;
        double r51990 = y;
        double r51991 = r51989 * r51990;
        double r51992 = z;
        double r51993 = t;
        double r51994 = r51992 * r51993;
        double r51995 = 16.0;
        double r51996 = r51994 / r51995;
        double r51997 = r51991 + r51996;
        double r51998 = a;
        double r51999 = b;
        double r52000 = r51998 * r51999;
        double r52001 = 4.0;
        double r52002 = r52000 / r52001;
        double r52003 = r51997 - r52002;
        double r52004 = c;
        double r52005 = r52003 + r52004;
        return r52005;
}

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 r52006, r52007, r52008, r52009, r52010, r52011, r52012, r52013, r52014, r52015, r52016, r52017, r52018, r52019, r52020, r52021, r52022;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r52006);
        mpfr_init(r52007);
        mpfr_init(r52008);
        mpfr_init(r52009);
        mpfr_init(r52010);
        mpfr_init(r52011);
        mpfr_init_set_str(r52012, "16.0", 10, MPFR_RNDN);
        mpfr_init(r52013);
        mpfr_init(r52014);
        mpfr_init(r52015);
        mpfr_init(r52016);
        mpfr_init(r52017);
        mpfr_init_set_str(r52018, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52019);
        mpfr_init(r52020);
        mpfr_init(r52021);
        mpfr_init(r52022);
}

double f_im(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r52006, x, MPFR_RNDN);
        mpfr_set_d(r52007, y, MPFR_RNDN);
        mpfr_mul(r52008, r52006, r52007, MPFR_RNDN);
        mpfr_set_d(r52009, z, MPFR_RNDN);
        mpfr_set_d(r52010, t, MPFR_RNDN);
        mpfr_mul(r52011, r52009, r52010, MPFR_RNDN);
        ;
        mpfr_div(r52013, r52011, r52012, MPFR_RNDN);
        mpfr_add(r52014, r52008, r52013, MPFR_RNDN);
        mpfr_set_d(r52015, a, MPFR_RNDN);
        mpfr_set_d(r52016, b, MPFR_RNDN);
        mpfr_mul(r52017, r52015, r52016, MPFR_RNDN);
        ;
        mpfr_div(r52019, r52017, r52018, MPFR_RNDN);
        mpfr_sub(r52020, r52014, r52019, MPFR_RNDN);
        mpfr_set_d(r52021, c, MPFR_RNDN);
        mpfr_add(r52022, r52020, r52021, MPFR_RNDN);
        return mpfr_get_d(r52022, MPFR_RNDN);
}

static mpfr_t r52023, r52024, r52025, r52026, r52027, r52028, r52029, r52030, r52031, r52032, r52033, r52034, r52035, r52036, r52037, r52038, r52039;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r52023);
        mpfr_init(r52024);
        mpfr_init(r52025);
        mpfr_init(r52026);
        mpfr_init(r52027);
        mpfr_init(r52028);
        mpfr_init_set_str(r52029, "16.0", 10, MPFR_RNDN);
        mpfr_init(r52030);
        mpfr_init(r52031);
        mpfr_init(r52032);
        mpfr_init(r52033);
        mpfr_init(r52034);
        mpfr_init_set_str(r52035, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52036);
        mpfr_init(r52037);
        mpfr_init(r52038);
        mpfr_init(r52039);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r52023, x, MPFR_RNDN);
        mpfr_set_d(r52024, y, MPFR_RNDN);
        mpfr_mul(r52025, r52023, r52024, MPFR_RNDN);
        mpfr_set_d(r52026, z, MPFR_RNDN);
        mpfr_set_d(r52027, t, MPFR_RNDN);
        mpfr_mul(r52028, r52026, r52027, MPFR_RNDN);
        ;
        mpfr_div(r52030, r52028, r52029, MPFR_RNDN);
        mpfr_add(r52031, r52025, r52030, MPFR_RNDN);
        mpfr_set_d(r52032, a, MPFR_RNDN);
        mpfr_set_d(r52033, b, MPFR_RNDN);
        mpfr_mul(r52034, r52032, r52033, MPFR_RNDN);
        ;
        mpfr_div(r52036, r52034, r52035, MPFR_RNDN);
        mpfr_sub(r52037, r52031, r52036, MPFR_RNDN);
        mpfr_set_d(r52038, c, MPFR_RNDN);
        mpfr_add(r52039, r52037, r52038, MPFR_RNDN);
        return mpfr_get_d(r52039, MPFR_RNDN);
}

static mpfr_t r52040, r52041, r52042, r52043, r52044, r52045, r52046, r52047, r52048, r52049, r52050, r52051, r52052, r52053, r52054, r52055, r52056;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r52040);
        mpfr_init(r52041);
        mpfr_init(r52042);
        mpfr_init(r52043);
        mpfr_init(r52044);
        mpfr_init(r52045);
        mpfr_init_set_str(r52046, "16.0", 10, MPFR_RNDN);
        mpfr_init(r52047);
        mpfr_init(r52048);
        mpfr_init(r52049);
        mpfr_init(r52050);
        mpfr_init(r52051);
        mpfr_init_set_str(r52052, "4.0", 10, MPFR_RNDN);
        mpfr_init(r52053);
        mpfr_init(r52054);
        mpfr_init(r52055);
        mpfr_init(r52056);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r52040, x, MPFR_RNDN);
        mpfr_set_d(r52041, y, MPFR_RNDN);
        mpfr_mul(r52042, r52040, r52041, MPFR_RNDN);
        mpfr_set_d(r52043, z, MPFR_RNDN);
        mpfr_set_d(r52044, t, MPFR_RNDN);
        mpfr_mul(r52045, r52043, r52044, MPFR_RNDN);
        ;
        mpfr_div(r52047, r52045, r52046, MPFR_RNDN);
        mpfr_add(r52048, r52042, r52047, MPFR_RNDN);
        mpfr_set_d(r52049, a, MPFR_RNDN);
        mpfr_set_d(r52050, b, MPFR_RNDN);
        mpfr_mul(r52051, r52049, r52050, MPFR_RNDN);
        ;
        mpfr_div(r52053, r52051, r52052, MPFR_RNDN);
        mpfr_sub(r52054, r52048, r52053, MPFR_RNDN);
        mpfr_set_d(r52055, c, MPFR_RNDN);
        mpfr_add(r52056, r52054, r52055, MPFR_RNDN);
        return mpfr_get_d(r52056, MPFR_RNDN);
}

