#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 r34259 = x;
        float r34260 = y;
        float r34261 = r34259 * r34260;
        float r34262 = z;
        float r34263 = t;
        float r34264 = r34262 * r34263;
        float r34265 = 16.0;
        float r34266 = r34264 / r34265;
        float r34267 = r34261 + r34266;
        float r34268 = a;
        float r34269 = b;
        float r34270 = r34268 * r34269;
        float r34271 = 4.0;
        float r34272 = r34270 / r34271;
        float r34273 = r34267 - r34272;
        float r34274 = c;
        float r34275 = r34273 + r34274;
        return r34275;
}

double f_id(double x, double y, double z, double t, double a, double b, double c) {
        double r34276 = x;
        double r34277 = y;
        double r34278 = r34276 * r34277;
        double r34279 = z;
        double r34280 = t;
        double r34281 = r34279 * r34280;
        double r34282 = 16.0;
        double r34283 = r34281 / r34282;
        double r34284 = r34278 + r34283;
        double r34285 = a;
        double r34286 = b;
        double r34287 = r34285 * r34286;
        double r34288 = 4.0;
        double r34289 = r34287 / r34288;
        double r34290 = r34284 - r34289;
        double r34291 = c;
        double r34292 = r34290 + r34291;
        return r34292;
}


double f_of(float x, float y, float z, float t, float a, float b, float c) {
        float r34293 = x;
        float r34294 = y;
        float r34295 = r34293 * r34294;
        float r34296 = z;
        float r34297 = 16.0;
        float r34298 = t;
        float r34299 = r34297 / r34298;
        float r34300 = r34296 / r34299;
        float r34301 = r34295 + r34300;
        float r34302 = a;
        float r34303 = b;
        float r34304 = r34302 * r34303;
        float r34305 = 4.0;
        float r34306 = r34304 / r34305;
        float r34307 = r34301 - r34306;
        float r34308 = c;
        float r34309 = r34307 + r34308;
        return r34309;
}

double f_od(double x, double y, double z, double t, double a, double b, double c) {
        double r34310 = x;
        double r34311 = y;
        double r34312 = r34310 * r34311;
        double r34313 = z;
        double r34314 = 16.0;
        double r34315 = t;
        double r34316 = r34314 / r34315;
        double r34317 = r34313 / r34316;
        double r34318 = r34312 + r34317;
        double r34319 = a;
        double r34320 = b;
        double r34321 = r34319 * r34320;
        double r34322 = 4.0;
        double r34323 = r34321 / r34322;
        double r34324 = r34318 - r34323;
        double r34325 = c;
        double r34326 = r34324 + r34325;
        return r34326;
}

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 r34327, r34328, r34329, r34330, r34331, r34332, r34333, r34334, r34335, r34336, r34337, r34338, r34339, r34340, r34341, r34342, r34343;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34327);
        mpfr_init(r34328);
        mpfr_init(r34329);
        mpfr_init(r34330);
        mpfr_init(r34331);
        mpfr_init(r34332);
        mpfr_init_set_str(r34333, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34334);
        mpfr_init(r34335);
        mpfr_init(r34336);
        mpfr_init(r34337);
        mpfr_init(r34338);
        mpfr_init_set_str(r34339, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34340);
        mpfr_init(r34341);
        mpfr_init(r34342);
        mpfr_init(r34343);
}

double f_im(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34327, x, MPFR_RNDN);
        mpfr_set_d(r34328, y, MPFR_RNDN);
        mpfr_mul(r34329, r34327, r34328, MPFR_RNDN);
        mpfr_set_d(r34330, z, MPFR_RNDN);
        mpfr_set_d(r34331, t, MPFR_RNDN);
        mpfr_mul(r34332, r34330, r34331, MPFR_RNDN);
        ;
        mpfr_div(r34334, r34332, r34333, MPFR_RNDN);
        mpfr_add(r34335, r34329, r34334, MPFR_RNDN);
        mpfr_set_d(r34336, a, MPFR_RNDN);
        mpfr_set_d(r34337, b, MPFR_RNDN);
        mpfr_mul(r34338, r34336, r34337, MPFR_RNDN);
        ;
        mpfr_div(r34340, r34338, r34339, MPFR_RNDN);
        mpfr_sub(r34341, r34335, r34340, MPFR_RNDN);
        mpfr_set_d(r34342, c, MPFR_RNDN);
        mpfr_add(r34343, r34341, r34342, MPFR_RNDN);
        return mpfr_get_d(r34343, MPFR_RNDN);
}

static mpfr_t r34344, r34345, r34346, r34347, r34348, r34349, r34350, r34351, r34352, r34353, r34354, r34355, r34356, r34357, r34358, r34359, r34360;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34344);
        mpfr_init(r34345);
        mpfr_init(r34346);
        mpfr_init(r34347);
        mpfr_init_set_str(r34348, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34349);
        mpfr_init(r34350);
        mpfr_init(r34351);
        mpfr_init(r34352);
        mpfr_init(r34353);
        mpfr_init(r34354);
        mpfr_init(r34355);
        mpfr_init_set_str(r34356, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34357);
        mpfr_init(r34358);
        mpfr_init(r34359);
        mpfr_init(r34360);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34344, x, MPFR_RNDN);
        mpfr_set_d(r34345, y, MPFR_RNDN);
        mpfr_mul(r34346, r34344, r34345, MPFR_RNDN);
        mpfr_set_d(r34347, z, MPFR_RNDN);
        ;
        mpfr_set_d(r34349, t, MPFR_RNDN);
        mpfr_div(r34350, r34348, r34349, MPFR_RNDN);
        mpfr_div(r34351, r34347, r34350, MPFR_RNDN);
        mpfr_add(r34352, r34346, r34351, MPFR_RNDN);
        mpfr_set_d(r34353, a, MPFR_RNDN);
        mpfr_set_d(r34354, b, MPFR_RNDN);
        mpfr_mul(r34355, r34353, r34354, MPFR_RNDN);
        ;
        mpfr_div(r34357, r34355, r34356, MPFR_RNDN);
        mpfr_sub(r34358, r34352, r34357, MPFR_RNDN);
        mpfr_set_d(r34359, c, MPFR_RNDN);
        mpfr_add(r34360, r34358, r34359, MPFR_RNDN);
        return mpfr_get_d(r34360, MPFR_RNDN);
}

static mpfr_t r34361, r34362, r34363, r34364, r34365, r34366, r34367, r34368, r34369, r34370, r34371, r34372, r34373, r34374, r34375, r34376, r34377;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34361);
        mpfr_init(r34362);
        mpfr_init(r34363);
        mpfr_init(r34364);
        mpfr_init_set_str(r34365, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34366);
        mpfr_init(r34367);
        mpfr_init(r34368);
        mpfr_init(r34369);
        mpfr_init(r34370);
        mpfr_init(r34371);
        mpfr_init(r34372);
        mpfr_init_set_str(r34373, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34374);
        mpfr_init(r34375);
        mpfr_init(r34376);
        mpfr_init(r34377);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34361, x, MPFR_RNDN);
        mpfr_set_d(r34362, y, MPFR_RNDN);
        mpfr_mul(r34363, r34361, r34362, MPFR_RNDN);
        mpfr_set_d(r34364, z, MPFR_RNDN);
        ;
        mpfr_set_d(r34366, t, MPFR_RNDN);
        mpfr_div(r34367, r34365, r34366, MPFR_RNDN);
        mpfr_div(r34368, r34364, r34367, MPFR_RNDN);
        mpfr_add(r34369, r34363, r34368, MPFR_RNDN);
        mpfr_set_d(r34370, a, MPFR_RNDN);
        mpfr_set_d(r34371, b, MPFR_RNDN);
        mpfr_mul(r34372, r34370, r34371, MPFR_RNDN);
        ;
        mpfr_div(r34374, r34372, r34373, MPFR_RNDN);
        mpfr_sub(r34375, r34369, r34374, MPFR_RNDN);
        mpfr_set_d(r34376, c, MPFR_RNDN);
        mpfr_add(r34377, r34375, r34376, MPFR_RNDN);
        return mpfr_get_d(r34377, MPFR_RNDN);
}

