#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, B";

double f_if(float x, float y, float z) {
        float r53616 = x;
        float r53617 = 3.0f;
        float r53618 = r53616 * r53617;
        float r53619 = y;
        float r53620 = r53618 * r53619;
        float r53621 = z;
        float r53622 = r53620 - r53621;
        return r53622;
}

double f_id(double x, double y, double z) {
        double r53623 = x;
        double r53624 = 3.0;
        double r53625 = r53623 * r53624;
        double r53626 = y;
        double r53627 = r53625 * r53626;
        double r53628 = z;
        double r53629 = r53627 - r53628;
        return r53629;
}


double f_of(float x, float y, float z) {
        float r53630 = 3.0f;
        float r53631 = y;
        float r53632 = x;
        float r53633 = r53631 * r53632;
        float r53634 = r53630 * r53633;
        float r53635 = z;
        float r53636 = r53634 - r53635;
        return r53636;
}

double f_od(double x, double y, double z) {
        double r53637 = 3.0;
        double r53638 = y;
        double r53639 = x;
        double r53640 = r53638 * r53639;
        double r53641 = r53637 * r53640;
        double r53642 = z;
        double r53643 = r53641 - r53642;
        return r53643;
}

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 r53644, r53645, r53646, r53647, r53648, r53649, r53650;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r53644);
        mpfr_init_set_str(r53645, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53646);
        mpfr_init(r53647);
        mpfr_init(r53648);
        mpfr_init(r53649);
        mpfr_init(r53650);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r53644, x, MPFR_RNDN);
        ;
        mpfr_mul(r53646, r53644, r53645, MPFR_RNDN);
        mpfr_set_d(r53647, y, MPFR_RNDN);
        mpfr_mul(r53648, r53646, r53647, MPFR_RNDN);
        mpfr_set_d(r53649, z, MPFR_RNDN);
        mpfr_sub(r53650, r53648, r53649, MPFR_RNDN);
        return mpfr_get_d(r53650, MPFR_RNDN);
}

static mpfr_t r53651, r53652, r53653, r53654, r53655, r53656, r53657;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r53651, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53652);
        mpfr_init(r53653);
        mpfr_init(r53654);
        mpfr_init(r53655);
        mpfr_init(r53656);
        mpfr_init(r53657);
}

double f_fm(double x, double y, double z) {
        ;
        mpfr_set_d(r53652, y, MPFR_RNDN);
        mpfr_set_d(r53653, x, MPFR_RNDN);
        mpfr_mul(r53654, r53652, r53653, MPFR_RNDN);
        mpfr_mul(r53655, r53651, r53654, MPFR_RNDN);
        mpfr_set_d(r53656, z, MPFR_RNDN);
        mpfr_sub(r53657, r53655, r53656, MPFR_RNDN);
        return mpfr_get_d(r53657, MPFR_RNDN);
}

static mpfr_t r53658, r53659, r53660, r53661, r53662, r53663, r53664;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r53658, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53659);
        mpfr_init(r53660);
        mpfr_init(r53661);
        mpfr_init(r53662);
        mpfr_init(r53663);
        mpfr_init(r53664);
}

double f_dm(double x, double y, double z) {
        ;
        mpfr_set_d(r53659, y, MPFR_RNDN);
        mpfr_set_d(r53660, x, MPFR_RNDN);
        mpfr_mul(r53661, r53659, r53660, MPFR_RNDN);
        mpfr_mul(r53662, r53658, r53661, MPFR_RNDN);
        mpfr_set_d(r53663, z, MPFR_RNDN);
        mpfr_sub(r53664, r53662, r53663, MPFR_RNDN);
        return mpfr_get_d(r53664, MPFR_RNDN);
}

