#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 r34026 = x;
        float r34027 = y;
        float r34028 = r34026 * r34027;
        float r34029 = z;
        float r34030 = t;
        float r34031 = r34029 * r34030;
        float r34032 = 16.0;
        float r34033 = r34031 / r34032;
        float r34034 = r34028 + r34033;
        float r34035 = a;
        float r34036 = b;
        float r34037 = r34035 * r34036;
        float r34038 = 4.0;
        float r34039 = r34037 / r34038;
        float r34040 = r34034 - r34039;
        float r34041 = c;
        float r34042 = r34040 + r34041;
        return r34042;
}

double f_id(double x, double y, double z, double t, double a, double b, double c) {
        double r34043 = x;
        double r34044 = y;
        double r34045 = r34043 * r34044;
        double r34046 = z;
        double r34047 = t;
        double r34048 = r34046 * r34047;
        double r34049 = 16.0;
        double r34050 = r34048 / r34049;
        double r34051 = r34045 + r34050;
        double r34052 = a;
        double r34053 = b;
        double r34054 = r34052 * r34053;
        double r34055 = 4.0;
        double r34056 = r34054 / r34055;
        double r34057 = r34051 - r34056;
        double r34058 = c;
        double r34059 = r34057 + r34058;
        return r34059;
}


double f_of(float x, float y, float z, float t, float a, float b, float c) {
        float r34060 = x;
        float r34061 = y;
        float r34062 = r34060 * r34061;
        float r34063 = z;
        float r34064 = t;
        float r34065 = r34063 * r34064;
        float r34066 = 16.0;
        float r34067 = r34065 / r34066;
        float r34068 = r34062 + r34067;
        float r34069 = a;
        float r34070 = b;
        float r34071 = r34069 * r34070;
        float r34072 = 4.0;
        float r34073 = r34071 / r34072;
        float r34074 = r34068 - r34073;
        float r34075 = c;
        float r34076 = r34074 + r34075;
        return r34076;
}

double f_od(double x, double y, double z, double t, double a, double b, double c) {
        double r34077 = x;
        double r34078 = y;
        double r34079 = r34077 * r34078;
        double r34080 = z;
        double r34081 = t;
        double r34082 = r34080 * r34081;
        double r34083 = 16.0;
        double r34084 = r34082 / r34083;
        double r34085 = r34079 + r34084;
        double r34086 = a;
        double r34087 = b;
        double r34088 = r34086 * r34087;
        double r34089 = 4.0;
        double r34090 = r34088 / r34089;
        double r34091 = r34085 - r34090;
        double r34092 = c;
        double r34093 = r34091 + r34092;
        return r34093;
}

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 r34094, r34095, r34096, r34097, r34098, r34099, r34100, r34101, r34102, r34103, r34104, r34105, r34106, r34107, r34108, r34109, r34110;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34094);
        mpfr_init(r34095);
        mpfr_init(r34096);
        mpfr_init(r34097);
        mpfr_init(r34098);
        mpfr_init(r34099);
        mpfr_init_set_str(r34100, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34101);
        mpfr_init(r34102);
        mpfr_init(r34103);
        mpfr_init(r34104);
        mpfr_init(r34105);
        mpfr_init_set_str(r34106, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34107);
        mpfr_init(r34108);
        mpfr_init(r34109);
        mpfr_init(r34110);
}

double f_im(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34094, x, MPFR_RNDN);
        mpfr_set_d(r34095, y, MPFR_RNDN);
        mpfr_mul(r34096, r34094, r34095, MPFR_RNDN);
        mpfr_set_d(r34097, z, MPFR_RNDN);
        mpfr_set_d(r34098, t, MPFR_RNDN);
        mpfr_mul(r34099, r34097, r34098, MPFR_RNDN);
        ;
        mpfr_div(r34101, r34099, r34100, MPFR_RNDN);
        mpfr_add(r34102, r34096, r34101, MPFR_RNDN);
        mpfr_set_d(r34103, a, MPFR_RNDN);
        mpfr_set_d(r34104, b, MPFR_RNDN);
        mpfr_mul(r34105, r34103, r34104, MPFR_RNDN);
        ;
        mpfr_div(r34107, r34105, r34106, MPFR_RNDN);
        mpfr_sub(r34108, r34102, r34107, MPFR_RNDN);
        mpfr_set_d(r34109, c, MPFR_RNDN);
        mpfr_add(r34110, r34108, r34109, MPFR_RNDN);
        return mpfr_get_d(r34110, MPFR_RNDN);
}

static mpfr_t r34111, r34112, r34113, r34114, r34115, r34116, r34117, r34118, r34119, r34120, r34121, r34122, r34123, r34124, r34125, r34126, r34127;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34111);
        mpfr_init(r34112);
        mpfr_init(r34113);
        mpfr_init(r34114);
        mpfr_init(r34115);
        mpfr_init(r34116);
        mpfr_init_set_str(r34117, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34118);
        mpfr_init(r34119);
        mpfr_init(r34120);
        mpfr_init(r34121);
        mpfr_init(r34122);
        mpfr_init_set_str(r34123, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34124);
        mpfr_init(r34125);
        mpfr_init(r34126);
        mpfr_init(r34127);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34111, x, MPFR_RNDN);
        mpfr_set_d(r34112, y, MPFR_RNDN);
        mpfr_mul(r34113, r34111, r34112, MPFR_RNDN);
        mpfr_set_d(r34114, z, MPFR_RNDN);
        mpfr_set_d(r34115, t, MPFR_RNDN);
        mpfr_mul(r34116, r34114, r34115, MPFR_RNDN);
        ;
        mpfr_div(r34118, r34116, r34117, MPFR_RNDN);
        mpfr_add(r34119, r34113, r34118, MPFR_RNDN);
        mpfr_set_d(r34120, a, MPFR_RNDN);
        mpfr_set_d(r34121, b, MPFR_RNDN);
        mpfr_mul(r34122, r34120, r34121, MPFR_RNDN);
        ;
        mpfr_div(r34124, r34122, r34123, MPFR_RNDN);
        mpfr_sub(r34125, r34119, r34124, MPFR_RNDN);
        mpfr_set_d(r34126, c, MPFR_RNDN);
        mpfr_add(r34127, r34125, r34126, MPFR_RNDN);
        return mpfr_get_d(r34127, MPFR_RNDN);
}

static mpfr_t r34128, r34129, r34130, r34131, r34132, r34133, r34134, r34135, r34136, r34137, r34138, r34139, r34140, r34141, r34142, r34143, r34144;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34128);
        mpfr_init(r34129);
        mpfr_init(r34130);
        mpfr_init(r34131);
        mpfr_init(r34132);
        mpfr_init(r34133);
        mpfr_init_set_str(r34134, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34135);
        mpfr_init(r34136);
        mpfr_init(r34137);
        mpfr_init(r34138);
        mpfr_init(r34139);
        mpfr_init_set_str(r34140, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34141);
        mpfr_init(r34142);
        mpfr_init(r34143);
        mpfr_init(r34144);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34128, x, MPFR_RNDN);
        mpfr_set_d(r34129, y, MPFR_RNDN);
        mpfr_mul(r34130, r34128, r34129, MPFR_RNDN);
        mpfr_set_d(r34131, z, MPFR_RNDN);
        mpfr_set_d(r34132, t, MPFR_RNDN);
        mpfr_mul(r34133, r34131, r34132, MPFR_RNDN);
        ;
        mpfr_div(r34135, r34133, r34134, MPFR_RNDN);
        mpfr_add(r34136, r34130, r34135, MPFR_RNDN);
        mpfr_set_d(r34137, a, MPFR_RNDN);
        mpfr_set_d(r34138, b, MPFR_RNDN);
        mpfr_mul(r34139, r34137, r34138, MPFR_RNDN);
        ;
        mpfr_div(r34141, r34139, r34140, MPFR_RNDN);
        mpfr_sub(r34142, r34136, r34141, MPFR_RNDN);
        mpfr_set_d(r34143, c, MPFR_RNDN);
        mpfr_add(r34144, r34142, r34143, MPFR_RNDN);
        return mpfr_get_d(r34144, MPFR_RNDN);
}

