#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 r55102 = x;
        float r55103 = 3.0;
        float r55104 = r55102 * r55103;
        float r55105 = y;
        float r55106 = r55104 * r55105;
        float r55107 = z;
        float r55108 = r55106 - r55107;
        return r55108;
}

double f_id(double x, double y, double z) {
        double r55109 = x;
        double r55110 = 3.0;
        double r55111 = r55109 * r55110;
        double r55112 = y;
        double r55113 = r55111 * r55112;
        double r55114 = z;
        double r55115 = r55113 - r55114;
        return r55115;
}


double f_of(float x, float y, float z) {
        float r55116 = 3.0;
        float r55117 = y;
        float r55118 = x;
        float r55119 = r55117 * r55118;
        float r55120 = r55116 * r55119;
        float r55121 = z;
        float r55122 = r55120 - r55121;
        return r55122;
}

double f_od(double x, double y, double z) {
        double r55123 = 3.0;
        double r55124 = y;
        double r55125 = x;
        double r55126 = r55124 * r55125;
        double r55127 = r55123 * r55126;
        double r55128 = z;
        double r55129 = r55127 - r55128;
        return r55129;
}

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 r55130, r55131, r55132, r55133, r55134, r55135, r55136;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55130);
        mpfr_init_set_str(r55131, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55132);
        mpfr_init(r55133);
        mpfr_init(r55134);
        mpfr_init(r55135);
        mpfr_init(r55136);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r55130, x, MPFR_RNDN);
        ;
        mpfr_mul(r55132, r55130, r55131, MPFR_RNDN);
        mpfr_set_d(r55133, y, MPFR_RNDN);
        mpfr_mul(r55134, r55132, r55133, MPFR_RNDN);
        mpfr_set_d(r55135, z, MPFR_RNDN);
        mpfr_sub(r55136, r55134, r55135, MPFR_RNDN);
        return mpfr_get_d(r55136, MPFR_RNDN);
}

static mpfr_t r55137, r55138, r55139, r55140, r55141, r55142, r55143;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55137, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55138);
        mpfr_init(r55139);
        mpfr_init(r55140);
        mpfr_init(r55141);
        mpfr_init(r55142);
        mpfr_init(r55143);
}

double f_fm(double x, double y, double z) {
        ;
        mpfr_set_d(r55138, y, MPFR_RNDN);
        mpfr_set_d(r55139, x, MPFR_RNDN);
        mpfr_mul(r55140, r55138, r55139, MPFR_RNDN);
        mpfr_mul(r55141, r55137, r55140, MPFR_RNDN);
        mpfr_set_d(r55142, z, MPFR_RNDN);
        mpfr_sub(r55143, r55141, r55142, MPFR_RNDN);
        return mpfr_get_d(r55143, MPFR_RNDN);
}

static mpfr_t r55144, r55145, r55146, r55147, r55148, r55149, r55150;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r55144, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55145);
        mpfr_init(r55146);
        mpfr_init(r55147);
        mpfr_init(r55148);
        mpfr_init(r55149);
        mpfr_init(r55150);
}

double f_dm(double x, double y, double z) {
        ;
        mpfr_set_d(r55145, y, MPFR_RNDN);
        mpfr_set_d(r55146, x, MPFR_RNDN);
        mpfr_mul(r55147, r55145, r55146, MPFR_RNDN);
        mpfr_mul(r55148, r55144, r55147, MPFR_RNDN);
        mpfr_set_d(r55149, z, MPFR_RNDN);
        mpfr_sub(r55150, r55148, r55149, MPFR_RNDN);
        return mpfr_get_d(r55150, MPFR_RNDN);
}

