#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 r34527 = x;
        float r34528 = y;
        float r34529 = r34527 * r34528;
        float r34530 = z;
        float r34531 = t;
        float r34532 = r34530 * r34531;
        float r34533 = 16.0;
        float r34534 = r34532 / r34533;
        float r34535 = r34529 + r34534;
        float r34536 = a;
        float r34537 = b;
        float r34538 = r34536 * r34537;
        float r34539 = 4.0;
        float r34540 = r34538 / r34539;
        float r34541 = r34535 - r34540;
        float r34542 = c;
        float r34543 = r34541 + r34542;
        return r34543;
}

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


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

double f_od(double x, double y, double z, double t, double a, double b, double c) {
        double r34578 = x;
        double r34579 = y;
        double r34580 = r34578 * r34579;
        double r34581 = z;
        double r34582 = t;
        double r34583 = r34581 * r34582;
        double r34584 = 16.0;
        double r34585 = r34583 / r34584;
        double r34586 = r34580 + r34585;
        double r34587 = a;
        double r34588 = b;
        double r34589 = r34587 * r34588;
        double r34590 = 4.0;
        double r34591 = r34589 / r34590;
        double r34592 = r34586 - r34591;
        double r34593 = c;
        double r34594 = r34592 + r34593;
        return r34594;
}

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 r34595, r34596, r34597, r34598, r34599, r34600, r34601, r34602, r34603, r34604, r34605, r34606, r34607, r34608, r34609, r34610, r34611;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34595);
        mpfr_init(r34596);
        mpfr_init(r34597);
        mpfr_init(r34598);
        mpfr_init(r34599);
        mpfr_init(r34600);
        mpfr_init_set_str(r34601, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34602);
        mpfr_init(r34603);
        mpfr_init(r34604);
        mpfr_init(r34605);
        mpfr_init(r34606);
        mpfr_init_set_str(r34607, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34608);
        mpfr_init(r34609);
        mpfr_init(r34610);
        mpfr_init(r34611);
}

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

static mpfr_t r34612, r34613, r34614, r34615, r34616, r34617, r34618, r34619, r34620, r34621, r34622, r34623, r34624, r34625, r34626, r34627, r34628;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34612);
        mpfr_init(r34613);
        mpfr_init(r34614);
        mpfr_init(r34615);
        mpfr_init(r34616);
        mpfr_init(r34617);
        mpfr_init_set_str(r34618, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34619);
        mpfr_init(r34620);
        mpfr_init(r34621);
        mpfr_init(r34622);
        mpfr_init(r34623);
        mpfr_init_set_str(r34624, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34625);
        mpfr_init(r34626);
        mpfr_init(r34627);
        mpfr_init(r34628);
}

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

static mpfr_t r34629, r34630, r34631, r34632, r34633, r34634, r34635, r34636, r34637, r34638, r34639, r34640, r34641, r34642, r34643, r34644, r34645;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34629);
        mpfr_init(r34630);
        mpfr_init(r34631);
        mpfr_init(r34632);
        mpfr_init(r34633);
        mpfr_init(r34634);
        mpfr_init_set_str(r34635, "16.0", 10, MPFR_RNDN);
        mpfr_init(r34636);
        mpfr_init(r34637);
        mpfr_init(r34638);
        mpfr_init(r34639);
        mpfr_init(r34640);
        mpfr_init_set_str(r34641, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34642);
        mpfr_init(r34643);
        mpfr_init(r34644);
        mpfr_init(r34645);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c) {
        mpfr_set_d(r34629, x, MPFR_RNDN);
        mpfr_set_d(r34630, y, MPFR_RNDN);
        mpfr_mul(r34631, r34629, r34630, MPFR_RNDN);
        mpfr_set_d(r34632, z, MPFR_RNDN);
        mpfr_set_d(r34633, t, MPFR_RNDN);
        mpfr_mul(r34634, r34632, r34633, MPFR_RNDN);
        ;
        mpfr_div(r34636, r34634, r34635, MPFR_RNDN);
        mpfr_add(r34637, r34631, r34636, MPFR_RNDN);
        mpfr_set_d(r34638, a, MPFR_RNDN);
        mpfr_set_d(r34639, b, MPFR_RNDN);
        mpfr_mul(r34640, r34638, r34639, MPFR_RNDN);
        ;
        mpfr_div(r34642, r34640, r34641, MPFR_RNDN);
        mpfr_sub(r34643, r34637, r34642, MPFR_RNDN);
        mpfr_set_d(r34644, c, MPFR_RNDN);
        mpfr_add(r34645, r34643, r34644, MPFR_RNDN);
        return mpfr_get_d(r34645, MPFR_RNDN);
}

