#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 r53661 = x;
        float r53662 = 3.0;
        float r53663 = r53661 * r53662;
        float r53664 = y;
        float r53665 = r53663 * r53664;
        float r53666 = z;
        float r53667 = r53665 - r53666;
        return r53667;
}

double f_id(double x, double y, double z) {
        double r53668 = x;
        double r53669 = 3.0;
        double r53670 = r53668 * r53669;
        double r53671 = y;
        double r53672 = r53670 * r53671;
        double r53673 = z;
        double r53674 = r53672 - r53673;
        return r53674;
}


double f_of(float x, float y, float z) {
        float r53675 = 3.0;
        float r53676 = y;
        float r53677 = x;
        float r53678 = r53676 * r53677;
        float r53679 = r53675 * r53678;
        float r53680 = z;
        float r53681 = r53679 - r53680;
        return r53681;
}

double f_od(double x, double y, double z) {
        double r53682 = 3.0;
        double r53683 = y;
        double r53684 = x;
        double r53685 = r53683 * r53684;
        double r53686 = r53682 * r53685;
        double r53687 = z;
        double r53688 = r53686 - r53687;
        return r53688;
}

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 r53689, r53690, r53691, r53692, r53693, r53694, r53695;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r53689);
        mpfr_init_set_str(r53690, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53691);
        mpfr_init(r53692);
        mpfr_init(r53693);
        mpfr_init(r53694);
        mpfr_init(r53695);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r53689, x, MPFR_RNDN);
        ;
        mpfr_mul(r53691, r53689, r53690, MPFR_RNDN);
        mpfr_set_d(r53692, y, MPFR_RNDN);
        mpfr_mul(r53693, r53691, r53692, MPFR_RNDN);
        mpfr_set_d(r53694, z, MPFR_RNDN);
        mpfr_sub(r53695, r53693, r53694, MPFR_RNDN);
        return mpfr_get_d(r53695, MPFR_RNDN);
}

static mpfr_t r53696, r53697, r53698, r53699, r53700, r53701, r53702;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r53696, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53697);
        mpfr_init(r53698);
        mpfr_init(r53699);
        mpfr_init(r53700);
        mpfr_init(r53701);
        mpfr_init(r53702);
}

double f_fm(double x, double y, double z) {
        ;
        mpfr_set_d(r53697, y, MPFR_RNDN);
        mpfr_set_d(r53698, x, MPFR_RNDN);
        mpfr_mul(r53699, r53697, r53698, MPFR_RNDN);
        mpfr_mul(r53700, r53696, r53699, MPFR_RNDN);
        mpfr_set_d(r53701, z, MPFR_RNDN);
        mpfr_sub(r53702, r53700, r53701, MPFR_RNDN);
        return mpfr_get_d(r53702, MPFR_RNDN);
}

static mpfr_t r53703, r53704, r53705, r53706, r53707, r53708, r53709;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r53703, "3.0", 10, MPFR_RNDN);
        mpfr_init(r53704);
        mpfr_init(r53705);
        mpfr_init(r53706);
        mpfr_init(r53707);
        mpfr_init(r53708);
        mpfr_init(r53709);
}

double f_dm(double x, double y, double z) {
        ;
        mpfr_set_d(r53704, y, MPFR_RNDN);
        mpfr_set_d(r53705, x, MPFR_RNDN);
        mpfr_mul(r53706, r53704, r53705, MPFR_RNDN);
        mpfr_mul(r53707, r53703, r53706, MPFR_RNDN);
        mpfr_set_d(r53708, z, MPFR_RNDN);
        mpfr_sub(r53709, r53707, r53708, MPFR_RNDN);
        return mpfr_get_d(r53709, MPFR_RNDN);
}

