#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 r34507 = x;
        float r34508 = y;
        float r34509 = r34507 * r34508;
        float r34510 = z;
        float r34511 = t;
        float r34512 = r34510 * r34511;
        float r34513 = 16.0;
        float r34514 = r34512 / r34513;
        float r34515 = r34509 + r34514;
        float r34516 = a;
        float r34517 = b;
        float r34518 = r34516 * r34517;
        float r34519 = 4.0;
        float r34520 = r34518 / r34519;
        float r34521 = r34515 - r34520;
        float r34522 = c;
        float r34523 = r34521 + r34522;
        return r34523;
}

double f_id(double x, double y, double z, double t, double a, double b, double c) {
        double r34524 = x;
        double r34525 = y;
        double r34526 = r34524 * r34525;
        double r34527 = z;
        double r34528 = t;
        double r34529 = r34527 * r34528;
        double r34530 = 16.0;
        double r34531 = r34529 / r34530;
        double r34532 = r34526 + r34531;
        double r34533 = a;
        double r34534 = b;
        double r34535 = r34533 * r34534;
        double r34536 = 4.0;
        double r34537 = r34535 / r34536;
        double r34538 = r34532 - r34537;
        double r34539 = c;
        double r34540 = r34538 + r34539;
        return r34540;
}


double f_of(float x, float y, float z, float t, float a, float b, float c) {
        float r34541 = x;
        float r34542 = y;
        float r34543 = r34541 * r34542;
        float r34544 = z;
        float r34545 = t;
        float r34546 = r34544 * r34545;
        float r34547 = 16.0;
        float r34548 = r34546 / r34547;
        float r34549 = r34543 + r34548;
        float r34550 = a;
        float r34551 = b;
        float r34552 = r34550 * r34551;
        float r34553 = 4.0;
        float r34554 = r34552 / r34553;
        float r34555 = r34549 - r34554;
        float r34556 = c;
        float r34557 = r34555 + r34556;
        return r34557;
}

double f_od(double x, double y, double z, double t, double a, double b, double c) {
        double r34558 = x;
        double r34559 = y;
        double r34560 = r34558 * r34559;
        double r34561 = z;
        double r34562 = t;
        double r34563 = r34561 * r34562;
        double r34564 = 16.0;
        double r34565 = r34563 / r34564;
        double r34566 = r34560 + r34565;
        double r34567 = a;
        double r34568 = b;
        double r34569 = r34567 * r34568;
        double r34570 = 4.0;
        double r34571 = r34569 / r34570;
        double r34572 = r34566 - r34571;
        double r34573 = c;
        double r34574 = r34572 + r34573;
        return r34574;
}

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 r34575, r34576, r34577, r34578, r34579, r34580, r34581, r34582, r34583, r34584, r34585, r34586, r34587, r34588, r34589, r34590, r34591;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34575);
        mpfr_init(r34576);
        mpfr_init(r34577);
        mpfr_init(r34578);
        mpfr_init(r34579);
        mpfr_init(r34580);
        mpfr_init_set_str(r34581, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34582);
        mpfr_init(r34583);
        mpfr_init(r34584);
        mpfr_init(r34585);
        mpfr_init(r34586);
        mpfr_init_set_str(r34587, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34588);
        mpfr_init(r34589);
        mpfr_init(r34590);
        mpfr_init(r34591);
}

double f_im(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34575, x, MPFR_RNDN);
        mpfr_set_d(r34576, y, MPFR_RNDN);
        mpfr_mul(r34577, r34575, r34576, MPFR_RNDN);
        mpfr_set_d(r34578, z, MPFR_RNDN);
        mpfr_set_d(r34579, t, MPFR_RNDN);
        mpfr_mul(r34580, r34578, r34579, MPFR_RNDN);
        ;
        mpfr_div(r34582, r34580, r34581, MPFR_RNDN);
        mpfr_add(r34583, r34577, r34582, MPFR_RNDN);
        mpfr_set_d(r34584, a, MPFR_RNDN);
        mpfr_set_d(r34585, b, MPFR_RNDN);
        mpfr_mul(r34586, r34584, r34585, MPFR_RNDN);
        ;
        mpfr_div(r34588, r34586, r34587, MPFR_RNDN);
        mpfr_sub(r34589, r34583, r34588, MPFR_RNDN);
        mpfr_set_d(r34590, c, MPFR_RNDN);
        mpfr_add(r34591, r34589, r34590, MPFR_RNDN);
        return mpfr_get_d(r34591, MPFR_RNDN);
}

static mpfr_t r34592, r34593, r34594, r34595, r34596, r34597, r34598, r34599, r34600, r34601, r34602, r34603, r34604, r34605, r34606, r34607, r34608;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34592);
        mpfr_init(r34593);
        mpfr_init(r34594);
        mpfr_init(r34595);
        mpfr_init(r34596);
        mpfr_init(r34597);
        mpfr_init_set_str(r34598, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34599);
        mpfr_init(r34600);
        mpfr_init(r34601);
        mpfr_init(r34602);
        mpfr_init(r34603);
        mpfr_init_set_str(r34604, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34605);
        mpfr_init(r34606);
        mpfr_init(r34607);
        mpfr_init(r34608);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34592, x, MPFR_RNDN);
        mpfr_set_d(r34593, y, MPFR_RNDN);
        mpfr_mul(r34594, r34592, r34593, MPFR_RNDN);
        mpfr_set_d(r34595, z, MPFR_RNDN);
        mpfr_set_d(r34596, t, MPFR_RNDN);
        mpfr_mul(r34597, r34595, r34596, MPFR_RNDN);
        ;
        mpfr_div(r34599, r34597, r34598, MPFR_RNDN);
        mpfr_add(r34600, r34594, r34599, MPFR_RNDN);
        mpfr_set_d(r34601, a, MPFR_RNDN);
        mpfr_set_d(r34602, b, MPFR_RNDN);
        mpfr_mul(r34603, r34601, r34602, MPFR_RNDN);
        ;
        mpfr_div(r34605, r34603, r34604, MPFR_RNDN);
        mpfr_sub(r34606, r34600, r34605, MPFR_RNDN);
        mpfr_set_d(r34607, c, MPFR_RNDN);
        mpfr_add(r34608, r34606, r34607, MPFR_RNDN);
        return mpfr_get_d(r34608, MPFR_RNDN);
}

static mpfr_t r34609, r34610, r34611, r34612, r34613, r34614, r34615, r34616, r34617, r34618, r34619, r34620, r34621, r34622, r34623, r34624, r34625;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34609);
        mpfr_init(r34610);
        mpfr_init(r34611);
        mpfr_init(r34612);
        mpfr_init(r34613);
        mpfr_init(r34614);
        mpfr_init_set_str(r34615, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34616);
        mpfr_init(r34617);
        mpfr_init(r34618);
        mpfr_init(r34619);
        mpfr_init(r34620);
        mpfr_init_set_str(r34621, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34622);
        mpfr_init(r34623);
        mpfr_init(r34624);
        mpfr_init(r34625);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34609, x, MPFR_RNDN);
        mpfr_set_d(r34610, y, MPFR_RNDN);
        mpfr_mul(r34611, r34609, r34610, MPFR_RNDN);
        mpfr_set_d(r34612, z, MPFR_RNDN);
        mpfr_set_d(r34613, t, MPFR_RNDN);
        mpfr_mul(r34614, r34612, r34613, MPFR_RNDN);
        ;
        mpfr_div(r34616, r34614, r34615, MPFR_RNDN);
        mpfr_add(r34617, r34611, r34616, MPFR_RNDN);
        mpfr_set_d(r34618, a, MPFR_RNDN);
        mpfr_set_d(r34619, b, MPFR_RNDN);
        mpfr_mul(r34620, r34618, r34619, MPFR_RNDN);
        ;
        mpfr_div(r34622, r34620, r34621, MPFR_RNDN);
        mpfr_sub(r34623, r34617, r34622, MPFR_RNDN);
        mpfr_set_d(r34624, c, MPFR_RNDN);
        mpfr_add(r34625, r34623, r34624, MPFR_RNDN);
        return mpfr_get_d(r34625, MPFR_RNDN);
}

