#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 r34065 = x;
        float r34066 = y;
        float r34067 = r34065 * r34066;
        float r34068 = z;
        float r34069 = t;
        float r34070 = r34068 * r34069;
        float r34071 = 16.0;
        float r34072 = r34070 / r34071;
        float r34073 = r34067 + r34072;
        float r34074 = a;
        float r34075 = b;
        float r34076 = r34074 * r34075;
        float r34077 = 4.0;
        float r34078 = r34076 / r34077;
        float r34079 = r34073 - r34078;
        float r34080 = c;
        float r34081 = r34079 + r34080;
        return r34081;
}

double f_id(double x, double y, double z, double t, double a, double b, double c) {
        double r34082 = x;
        double r34083 = y;
        double r34084 = r34082 * r34083;
        double r34085 = z;
        double r34086 = t;
        double r34087 = r34085 * r34086;
        double r34088 = 16.0;
        double r34089 = r34087 / r34088;
        double r34090 = r34084 + r34089;
        double r34091 = a;
        double r34092 = b;
        double r34093 = r34091 * r34092;
        double r34094 = 4.0;
        double r34095 = r34093 / r34094;
        double r34096 = r34090 - r34095;
        double r34097 = c;
        double r34098 = r34096 + r34097;
        return r34098;
}


double f_of(float x, float y, float z, float t, float a, float b, float c) {
        float r34099 = c;
        float r34100 = y;
        float r34101 = x;
        float r34102 = r34100 * r34101;
        float r34103 = r34099 + r34102;
        float r34104 = a;
        float r34105 = 4.0;
        float r34106 = r34104 / r34105;
        float r34107 = b;
        float r34108 = r34106 * r34107;
        float r34109 = r34103 - r34108;
        float r34110 = z;
        float r34111 = t;
        float r34112 = 0.0625;
        float r34113 = r34111 * r34112;
        float r34114 = r34110 * r34113;
        float r34115 = r34109 + r34114;
        return r34115;
}

double f_od(double x, double y, double z, double t, double a, double b, double c) {
        double r34116 = c;
        double r34117 = y;
        double r34118 = x;
        double r34119 = r34117 * r34118;
        double r34120 = r34116 + r34119;
        double r34121 = a;
        double r34122 = 4.0;
        double r34123 = r34121 / r34122;
        double r34124 = b;
        double r34125 = r34123 * r34124;
        double r34126 = r34120 - r34125;
        double r34127 = z;
        double r34128 = t;
        double r34129 = 0.0625;
        double r34130 = r34128 * r34129;
        double r34131 = r34127 * r34130;
        double r34132 = r34126 + r34131;
        return r34132;
}

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 r34133, r34134, r34135, r34136, r34137, r34138, r34139, r34140, r34141, r34142, r34143, r34144, r34145, r34146, r34147, r34148, r34149;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34133);
        mpfr_init(r34134);
        mpfr_init(r34135);
        mpfr_init(r34136);
        mpfr_init(r34137);
        mpfr_init(r34138);
        mpfr_init_set_str(r34139, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34140);
        mpfr_init(r34141);
        mpfr_init(r34142);
        mpfr_init(r34143);
        mpfr_init(r34144);
        mpfr_init_set_str(r34145, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34146);
        mpfr_init(r34147);
        mpfr_init(r34148);
        mpfr_init(r34149);
}

double f_im(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34133, x, MPFR_RNDN);
        mpfr_set_d(r34134, y, MPFR_RNDN);
        mpfr_mul(r34135, r34133, r34134, MPFR_RNDN);
        mpfr_set_d(r34136, z, MPFR_RNDN);
        mpfr_set_d(r34137, t, MPFR_RNDN);
        mpfr_mul(r34138, r34136, r34137, MPFR_RNDN);
        ;
        mpfr_div(r34140, r34138, r34139, MPFR_RNDN);
        mpfr_add(r34141, r34135, r34140, MPFR_RNDN);
        mpfr_set_d(r34142, a, MPFR_RNDN);
        mpfr_set_d(r34143, b, MPFR_RNDN);
        mpfr_mul(r34144, r34142, r34143, MPFR_RNDN);
        ;
        mpfr_div(r34146, r34144, r34145, MPFR_RNDN);
        mpfr_sub(r34147, r34141, r34146, MPFR_RNDN);
        mpfr_set_d(r34148, c, MPFR_RNDN);
        mpfr_add(r34149, r34147, r34148, MPFR_RNDN);
        return mpfr_get_d(r34149, MPFR_RNDN);
}

static mpfr_t r34150, r34151, r34152, r34153, r34154, r34155, r34156, r34157, r34158, r34159, r34160, r34161, r34162, r34163, r34164, r34165, r34166;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34150);
        mpfr_init(r34151);
        mpfr_init(r34152);
        mpfr_init(r34153);
        mpfr_init(r34154);
        mpfr_init(r34155);
        mpfr_init_set_str(r34156, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34157);
        mpfr_init(r34158);
        mpfr_init(r34159);
        mpfr_init(r34160);
        mpfr_init(r34161);
        mpfr_init(r34162);
        mpfr_init_set_str(r34163, "0.0625", 10, MPFR_RNDN);
        mpfr_init(r34164);
        mpfr_init(r34165);
        mpfr_init(r34166);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34150, c, MPFR_RNDN);
        mpfr_set_d(r34151, y, MPFR_RNDN);
        mpfr_set_d(r34152, x, MPFR_RNDN);
        mpfr_mul(r34153, r34151, r34152, MPFR_RNDN);
        mpfr_add(r34154, r34150, r34153, MPFR_RNDN);
        mpfr_set_d(r34155, a, MPFR_RNDN);
        ;
        mpfr_div(r34157, r34155, r34156, MPFR_RNDN);
        mpfr_set_d(r34158, b, MPFR_RNDN);
        mpfr_mul(r34159, r34157, r34158, MPFR_RNDN);
        mpfr_sub(r34160, r34154, r34159, MPFR_RNDN);
        mpfr_set_d(r34161, z, MPFR_RNDN);
        mpfr_set_d(r34162, t, MPFR_RNDN);
        ;
        mpfr_mul(r34164, r34162, r34163, MPFR_RNDN);
        mpfr_mul(r34165, r34161, r34164, MPFR_RNDN);
        mpfr_add(r34166, r34160, r34165, MPFR_RNDN);
        return mpfr_get_d(r34166, MPFR_RNDN);
}

static mpfr_t r34167, r34168, r34169, r34170, r34171, r34172, r34173, r34174, r34175, r34176, r34177, r34178, r34179, r34180, r34181, r34182, r34183;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34167);
        mpfr_init(r34168);
        mpfr_init(r34169);
        mpfr_init(r34170);
        mpfr_init(r34171);
        mpfr_init(r34172);
        mpfr_init_set_str(r34173, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34174);
        mpfr_init(r34175);
        mpfr_init(r34176);
        mpfr_init(r34177);
        mpfr_init(r34178);
        mpfr_init(r34179);
        mpfr_init_set_str(r34180, "0.0625", 10, MPFR_RNDN);
        mpfr_init(r34181);
        mpfr_init(r34182);
        mpfr_init(r34183);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34167, c, MPFR_RNDN);
        mpfr_set_d(r34168, y, MPFR_RNDN);
        mpfr_set_d(r34169, x, MPFR_RNDN);
        mpfr_mul(r34170, r34168, r34169, MPFR_RNDN);
        mpfr_add(r34171, r34167, r34170, MPFR_RNDN);
        mpfr_set_d(r34172, a, MPFR_RNDN);
        ;
        mpfr_div(r34174, r34172, r34173, MPFR_RNDN);
        mpfr_set_d(r34175, b, MPFR_RNDN);
        mpfr_mul(r34176, r34174, r34175, MPFR_RNDN);
        mpfr_sub(r34177, r34171, r34176, MPFR_RNDN);
        mpfr_set_d(r34178, z, MPFR_RNDN);
        mpfr_set_d(r34179, t, MPFR_RNDN);
        ;
        mpfr_mul(r34181, r34179, r34180, MPFR_RNDN);
        mpfr_mul(r34182, r34178, r34181, MPFR_RNDN);
        mpfr_add(r34183, r34177, r34182, MPFR_RNDN);
        return mpfr_get_d(r34183, MPFR_RNDN);
}

