#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 r34254 = x;
        float r34255 = y;
        float r34256 = r34254 * r34255;
        float r34257 = z;
        float r34258 = t;
        float r34259 = r34257 * r34258;
        float r34260 = 16.0;
        float r34261 = r34259 / r34260;
        float r34262 = r34256 + r34261;
        float r34263 = a;
        float r34264 = b;
        float r34265 = r34263 * r34264;
        float r34266 = 4.0;
        float r34267 = r34265 / r34266;
        float r34268 = r34262 - r34267;
        float r34269 = c;
        float r34270 = r34268 + r34269;
        return r34270;
}

double f_id(double x, double y, double z, double t, double a, double b, double c) {
        double r34271 = x;
        double r34272 = y;
        double r34273 = r34271 * r34272;
        double r34274 = z;
        double r34275 = t;
        double r34276 = r34274 * r34275;
        double r34277 = 16.0;
        double r34278 = r34276 / r34277;
        double r34279 = r34273 + r34278;
        double r34280 = a;
        double r34281 = b;
        double r34282 = r34280 * r34281;
        double r34283 = 4.0;
        double r34284 = r34282 / r34283;
        double r34285 = r34279 - r34284;
        double r34286 = c;
        double r34287 = r34285 + r34286;
        return r34287;
}


double f_of(float x, float y, float z, float t, float a, float b, float c) {
        float r34288 = c;
        float r34289 = y;
        float r34290 = x;
        float r34291 = r34289 * r34290;
        float r34292 = r34288 + r34291;
        float r34293 = a;
        float r34294 = 4.0;
        float r34295 = r34293 / r34294;
        float r34296 = b;
        float r34297 = r34295 * r34296;
        float r34298 = r34292 - r34297;
        float r34299 = z;
        float r34300 = t;
        float r34301 = 0.0625;
        float r34302 = r34300 * r34301;
        float r34303 = r34299 * r34302;
        float r34304 = r34298 + r34303;
        return r34304;
}

double f_od(double x, double y, double z, double t, double a, double b, double c) {
        double r34305 = c;
        double r34306 = y;
        double r34307 = x;
        double r34308 = r34306 * r34307;
        double r34309 = r34305 + r34308;
        double r34310 = a;
        double r34311 = 4.0;
        double r34312 = r34310 / r34311;
        double r34313 = b;
        double r34314 = r34312 * r34313;
        double r34315 = r34309 - r34314;
        double r34316 = z;
        double r34317 = t;
        double r34318 = 0.0625;
        double r34319 = r34317 * r34318;
        double r34320 = r34316 * r34319;
        double r34321 = r34315 + r34320;
        return r34321;
}

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 r34322, r34323, r34324, r34325, r34326, r34327, r34328, r34329, r34330, r34331, r34332, r34333, r34334, r34335, r34336, r34337, r34338;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34322);
        mpfr_init(r34323);
        mpfr_init(r34324);
        mpfr_init(r34325);
        mpfr_init(r34326);
        mpfr_init(r34327);
        mpfr_init_set_str(r34328, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34329);
        mpfr_init(r34330);
        mpfr_init(r34331);
        mpfr_init(r34332);
        mpfr_init(r34333);
        mpfr_init_set_str(r34334, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34335);
        mpfr_init(r34336);
        mpfr_init(r34337);
        mpfr_init(r34338);
}

double f_im(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34322, x, MPFR_RNDN);
        mpfr_set_d(r34323, y, MPFR_RNDN);
        mpfr_mul(r34324, r34322, r34323, MPFR_RNDN);
        mpfr_set_d(r34325, z, MPFR_RNDN);
        mpfr_set_d(r34326, t, MPFR_RNDN);
        mpfr_mul(r34327, r34325, r34326, MPFR_RNDN);
        ;
        mpfr_div(r34329, r34327, r34328, MPFR_RNDN);
        mpfr_add(r34330, r34324, r34329, MPFR_RNDN);
        mpfr_set_d(r34331, a, MPFR_RNDN);
        mpfr_set_d(r34332, b, MPFR_RNDN);
        mpfr_mul(r34333, r34331, r34332, MPFR_RNDN);
        ;
        mpfr_div(r34335, r34333, r34334, MPFR_RNDN);
        mpfr_sub(r34336, r34330, r34335, MPFR_RNDN);
        mpfr_set_d(r34337, c, MPFR_RNDN);
        mpfr_add(r34338, r34336, r34337, MPFR_RNDN);
        return mpfr_get_d(r34338, MPFR_RNDN);
}

static mpfr_t r34339, r34340, r34341, r34342, r34343, r34344, r34345, r34346, r34347, r34348, r34349, r34350, r34351, r34352, r34353, r34354, r34355;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34339);
        mpfr_init(r34340);
        mpfr_init(r34341);
        mpfr_init(r34342);
        mpfr_init(r34343);
        mpfr_init(r34344);
        mpfr_init_set_str(r34345, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34346);
        mpfr_init(r34347);
        mpfr_init(r34348);
        mpfr_init(r34349);
        mpfr_init(r34350);
        mpfr_init(r34351);
        mpfr_init_set_str(r34352, "0.0625", 10, MPFR_RNDN);
        mpfr_init(r34353);
        mpfr_init(r34354);
        mpfr_init(r34355);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34339, c, MPFR_RNDN);
        mpfr_set_d(r34340, y, MPFR_RNDN);
        mpfr_set_d(r34341, x, MPFR_RNDN);
        mpfr_mul(r34342, r34340, r34341, MPFR_RNDN);
        mpfr_add(r34343, r34339, r34342, MPFR_RNDN);
        mpfr_set_d(r34344, a, MPFR_RNDN);
        ;
        mpfr_div(r34346, r34344, r34345, MPFR_RNDN);
        mpfr_set_d(r34347, b, MPFR_RNDN);
        mpfr_mul(r34348, r34346, r34347, MPFR_RNDN);
        mpfr_sub(r34349, r34343, r34348, MPFR_RNDN);
        mpfr_set_d(r34350, z, MPFR_RNDN);
        mpfr_set_d(r34351, t, MPFR_RNDN);
        ;
        mpfr_mul(r34353, r34351, r34352, MPFR_RNDN);
        mpfr_mul(r34354, r34350, r34353, MPFR_RNDN);
        mpfr_add(r34355, r34349, r34354, MPFR_RNDN);
        return mpfr_get_d(r34355, MPFR_RNDN);
}

static mpfr_t r34356, r34357, r34358, r34359, r34360, r34361, r34362, r34363, r34364, r34365, r34366, r34367, r34368, r34369, r34370, r34371, r34372;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34356);
        mpfr_init(r34357);
        mpfr_init(r34358);
        mpfr_init(r34359);
        mpfr_init(r34360);
        mpfr_init(r34361);
        mpfr_init_set_str(r34362, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34363);
        mpfr_init(r34364);
        mpfr_init(r34365);
        mpfr_init(r34366);
        mpfr_init(r34367);
        mpfr_init(r34368);
        mpfr_init_set_str(r34369, "0.0625", 10, MPFR_RNDN);
        mpfr_init(r34370);
        mpfr_init(r34371);
        mpfr_init(r34372);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34356, c, MPFR_RNDN);
        mpfr_set_d(r34357, y, MPFR_RNDN);
        mpfr_set_d(r34358, x, MPFR_RNDN);
        mpfr_mul(r34359, r34357, r34358, MPFR_RNDN);
        mpfr_add(r34360, r34356, r34359, MPFR_RNDN);
        mpfr_set_d(r34361, a, MPFR_RNDN);
        ;
        mpfr_div(r34363, r34361, r34362, MPFR_RNDN);
        mpfr_set_d(r34364, b, MPFR_RNDN);
        mpfr_mul(r34365, r34363, r34364, MPFR_RNDN);
        mpfr_sub(r34366, r34360, r34365, MPFR_RNDN);
        mpfr_set_d(r34367, z, MPFR_RNDN);
        mpfr_set_d(r34368, t, MPFR_RNDN);
        ;
        mpfr_mul(r34370, r34368, r34369, MPFR_RNDN);
        mpfr_mul(r34371, r34367, r34370, MPFR_RNDN);
        mpfr_add(r34372, r34366, r34371, MPFR_RNDN);
        return mpfr_get_d(r34372, MPFR_RNDN);
}

