#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 r54774 = x;
        float r54775 = 3.0;
        float r54776 = r54774 * r54775;
        float r54777 = y;
        float r54778 = r54776 * r54777;
        float r54779 = z;
        float r54780 = r54778 - r54779;
        return r54780;
}

double f_id(double x, double y, double z) {
        double r54781 = x;
        double r54782 = 3.0;
        double r54783 = r54781 * r54782;
        double r54784 = y;
        double r54785 = r54783 * r54784;
        double r54786 = z;
        double r54787 = r54785 - r54786;
        return r54787;
}


double f_of(float x, float y, float z) {
        float r54788 = 3.0;
        float r54789 = y;
        float r54790 = x;
        float r54791 = r54789 * r54790;
        float r54792 = r54788 * r54791;
        float r54793 = z;
        float r54794 = r54792 - r54793;
        return r54794;
}

double f_od(double x, double y, double z) {
        double r54795 = 3.0;
        double r54796 = y;
        double r54797 = x;
        double r54798 = r54796 * r54797;
        double r54799 = r54795 * r54798;
        double r54800 = z;
        double r54801 = r54799 - r54800;
        return r54801;
}

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 r54802, r54803, r54804, r54805, r54806, r54807, r54808;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54802);
        mpfr_init_set_str(r54803, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54804);
        mpfr_init(r54805);
        mpfr_init(r54806);
        mpfr_init(r54807);
        mpfr_init(r54808);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r54802, x, MPFR_RNDN);
        ;
        mpfr_mul(r54804, r54802, r54803, MPFR_RNDN);
        mpfr_set_d(r54805, y, MPFR_RNDN);
        mpfr_mul(r54806, r54804, r54805, MPFR_RNDN);
        mpfr_set_d(r54807, z, MPFR_RNDN);
        mpfr_sub(r54808, r54806, r54807, MPFR_RNDN);
        return mpfr_get_d(r54808, MPFR_RNDN);
}

static mpfr_t r54809, r54810, r54811, r54812, r54813, r54814, r54815;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54809, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54810);
        mpfr_init(r54811);
        mpfr_init(r54812);
        mpfr_init(r54813);
        mpfr_init(r54814);
        mpfr_init(r54815);
}

double f_fm(double x, double y, double z) {
        ;
        mpfr_set_d(r54810, y, MPFR_RNDN);
        mpfr_set_d(r54811, x, MPFR_RNDN);
        mpfr_mul(r54812, r54810, r54811, MPFR_RNDN);
        mpfr_mul(r54813, r54809, r54812, MPFR_RNDN);
        mpfr_set_d(r54814, z, MPFR_RNDN);
        mpfr_sub(r54815, r54813, r54814, MPFR_RNDN);
        return mpfr_get_d(r54815, MPFR_RNDN);
}

static mpfr_t r54816, r54817, r54818, r54819, r54820, r54821, r54822;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54816, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54817);
        mpfr_init(r54818);
        mpfr_init(r54819);
        mpfr_init(r54820);
        mpfr_init(r54821);
        mpfr_init(r54822);
}

double f_dm(double x, double y, double z) {
        ;
        mpfr_set_d(r54817, y, MPFR_RNDN);
        mpfr_set_d(r54818, x, MPFR_RNDN);
        mpfr_mul(r54819, r54817, r54818, MPFR_RNDN);
        mpfr_mul(r54820, r54816, r54819, MPFR_RNDN);
        mpfr_set_d(r54821, z, MPFR_RNDN);
        mpfr_sub(r54822, r54820, r54821, MPFR_RNDN);
        return mpfr_get_d(r54822, MPFR_RNDN);
}

