#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 r34143 = x;
        float r34144 = y;
        float r34145 = r34143 * r34144;
        float r34146 = z;
        float r34147 = t;
        float r34148 = r34146 * r34147;
        float r34149 = 16.0;
        float r34150 = r34148 / r34149;
        float r34151 = r34145 + r34150;
        float r34152 = a;
        float r34153 = b;
        float r34154 = r34152 * r34153;
        float r34155 = 4.0;
        float r34156 = r34154 / r34155;
        float r34157 = r34151 - r34156;
        float r34158 = c;
        float r34159 = r34157 + r34158;
        return r34159;
}

double f_id(double x, double y, double z, double t, double a, double b, double c) {
        double r34160 = x;
        double r34161 = y;
        double r34162 = r34160 * r34161;
        double r34163 = z;
        double r34164 = t;
        double r34165 = r34163 * r34164;
        double r34166 = 16.0;
        double r34167 = r34165 / r34166;
        double r34168 = r34162 + r34167;
        double r34169 = a;
        double r34170 = b;
        double r34171 = r34169 * r34170;
        double r34172 = 4.0;
        double r34173 = r34171 / r34172;
        double r34174 = r34168 - r34173;
        double r34175 = c;
        double r34176 = r34174 + r34175;
        return r34176;
}


double f_of(float x, float y, float z, float t, float a, float b, float c) {
        float r34177 = c;
        float r34178 = y;
        float r34179 = x;
        float r34180 = r34178 * r34179;
        float r34181 = r34177 + r34180;
        float r34182 = a;
        float r34183 = 4.0;
        float r34184 = r34182 / r34183;
        float r34185 = b;
        float r34186 = r34184 * r34185;
        float r34187 = r34181 - r34186;
        float r34188 = z;
        float r34189 = t;
        float r34190 = 0.0625;
        float r34191 = r34189 * r34190;
        float r34192 = r34188 * r34191;
        float r34193 = r34187 + r34192;
        return r34193;
}

double f_od(double x, double y, double z, double t, double a, double b, double c) {
        double r34194 = c;
        double r34195 = y;
        double r34196 = x;
        double r34197 = r34195 * r34196;
        double r34198 = r34194 + r34197;
        double r34199 = a;
        double r34200 = 4.0;
        double r34201 = r34199 / r34200;
        double r34202 = b;
        double r34203 = r34201 * r34202;
        double r34204 = r34198 - r34203;
        double r34205 = z;
        double r34206 = t;
        double r34207 = 0.0625;
        double r34208 = r34206 * r34207;
        double r34209 = r34205 * r34208;
        double r34210 = r34204 + r34209;
        return r34210;
}

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 r34211, r34212, r34213, r34214, r34215, r34216, r34217, r34218, r34219, r34220, r34221, r34222, r34223, r34224, r34225, r34226, r34227;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34211);
        mpfr_init(r34212);
        mpfr_init(r34213);
        mpfr_init(r34214);
        mpfr_init(r34215);
        mpfr_init(r34216);
        mpfr_init_set_str(r34217, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34218);
        mpfr_init(r34219);
        mpfr_init(r34220);
        mpfr_init(r34221);
        mpfr_init(r34222);
        mpfr_init_set_str(r34223, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34224);
        mpfr_init(r34225);
        mpfr_init(r34226);
        mpfr_init(r34227);
}

double f_im(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34211, x, MPFR_RNDN);
        mpfr_set_d(r34212, y, MPFR_RNDN);
        mpfr_mul(r34213, r34211, r34212, MPFR_RNDN);
        mpfr_set_d(r34214, z, MPFR_RNDN);
        mpfr_set_d(r34215, t, MPFR_RNDN);
        mpfr_mul(r34216, r34214, r34215, MPFR_RNDN);
        ;
        mpfr_div(r34218, r34216, r34217, MPFR_RNDN);
        mpfr_add(r34219, r34213, r34218, MPFR_RNDN);
        mpfr_set_d(r34220, a, MPFR_RNDN);
        mpfr_set_d(r34221, b, MPFR_RNDN);
        mpfr_mul(r34222, r34220, r34221, MPFR_RNDN);
        ;
        mpfr_div(r34224, r34222, r34223, MPFR_RNDN);
        mpfr_sub(r34225, r34219, r34224, MPFR_RNDN);
        mpfr_set_d(r34226, c, MPFR_RNDN);
        mpfr_add(r34227, r34225, r34226, MPFR_RNDN);
        return mpfr_get_d(r34227, MPFR_RNDN);
}

static mpfr_t r34228, r34229, r34230, r34231, r34232, r34233, r34234, r34235, r34236, r34237, r34238, r34239, r34240, r34241, r34242, r34243, r34244;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34228);
        mpfr_init(r34229);
        mpfr_init(r34230);
        mpfr_init(r34231);
        mpfr_init(r34232);
        mpfr_init(r34233);
        mpfr_init_set_str(r34234, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34235);
        mpfr_init(r34236);
        mpfr_init(r34237);
        mpfr_init(r34238);
        mpfr_init(r34239);
        mpfr_init(r34240);
        mpfr_init_set_str(r34241, "0.0625", 10, MPFR_RNDN);
        mpfr_init(r34242);
        mpfr_init(r34243);
        mpfr_init(r34244);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34228, c, MPFR_RNDN);
        mpfr_set_d(r34229, y, MPFR_RNDN);
        mpfr_set_d(r34230, x, MPFR_RNDN);
        mpfr_mul(r34231, r34229, r34230, MPFR_RNDN);
        mpfr_add(r34232, r34228, r34231, MPFR_RNDN);
        mpfr_set_d(r34233, a, MPFR_RNDN);
        ;
        mpfr_div(r34235, r34233, r34234, MPFR_RNDN);
        mpfr_set_d(r34236, b, MPFR_RNDN);
        mpfr_mul(r34237, r34235, r34236, MPFR_RNDN);
        mpfr_sub(r34238, r34232, r34237, MPFR_RNDN);
        mpfr_set_d(r34239, z, MPFR_RNDN);
        mpfr_set_d(r34240, t, MPFR_RNDN);
        ;
        mpfr_mul(r34242, r34240, r34241, MPFR_RNDN);
        mpfr_mul(r34243, r34239, r34242, MPFR_RNDN);
        mpfr_add(r34244, r34238, r34243, MPFR_RNDN);
        return mpfr_get_d(r34244, MPFR_RNDN);
}

static mpfr_t r34245, r34246, r34247, r34248, r34249, r34250, r34251, r34252, r34253, r34254, r34255, r34256, r34257, r34258, r34259, r34260, r34261;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34245);
        mpfr_init(r34246);
        mpfr_init(r34247);
        mpfr_init(r34248);
        mpfr_init(r34249);
        mpfr_init(r34250);
        mpfr_init_set_str(r34251, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34252);
        mpfr_init(r34253);
        mpfr_init(r34254);
        mpfr_init(r34255);
        mpfr_init(r34256);
        mpfr_init(r34257);
        mpfr_init_set_str(r34258, "0.0625", 10, MPFR_RNDN);
        mpfr_init(r34259);
        mpfr_init(r34260);
        mpfr_init(r34261);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34245, c, MPFR_RNDN);
        mpfr_set_d(r34246, y, MPFR_RNDN);
        mpfr_set_d(r34247, x, MPFR_RNDN);
        mpfr_mul(r34248, r34246, r34247, MPFR_RNDN);
        mpfr_add(r34249, r34245, r34248, MPFR_RNDN);
        mpfr_set_d(r34250, a, MPFR_RNDN);
        ;
        mpfr_div(r34252, r34250, r34251, MPFR_RNDN);
        mpfr_set_d(r34253, b, MPFR_RNDN);
        mpfr_mul(r34254, r34252, r34253, MPFR_RNDN);
        mpfr_sub(r34255, r34249, r34254, MPFR_RNDN);
        mpfr_set_d(r34256, z, MPFR_RNDN);
        mpfr_set_d(r34257, t, MPFR_RNDN);
        ;
        mpfr_mul(r34259, r34257, r34258, MPFR_RNDN);
        mpfr_mul(r34260, r34256, r34259, MPFR_RNDN);
        mpfr_add(r34261, r34255, r34260, MPFR_RNDN);
        return mpfr_get_d(r34261, MPFR_RNDN);
}

