#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 r54918 = x;
        float r54919 = 3.0;
        float r54920 = r54918 * r54919;
        float r54921 = y;
        float r54922 = r54920 * r54921;
        float r54923 = z;
        float r54924 = r54922 - r54923;
        return r54924;
}

double f_id(double x, double y, double z) {
        double r54925 = x;
        double r54926 = 3.0;
        double r54927 = r54925 * r54926;
        double r54928 = y;
        double r54929 = r54927 * r54928;
        double r54930 = z;
        double r54931 = r54929 - r54930;
        return r54931;
}


double f_of(float x, float y, float z) {
        float r54932 = 3.0;
        float r54933 = y;
        float r54934 = x;
        float r54935 = r54933 * r54934;
        float r54936 = r54932 * r54935;
        float r54937 = z;
        float r54938 = r54936 - r54937;
        return r54938;
}

double f_od(double x, double y, double z) {
        double r54939 = 3.0;
        double r54940 = y;
        double r54941 = x;
        double r54942 = r54940 * r54941;
        double r54943 = r54939 * r54942;
        double r54944 = z;
        double r54945 = r54943 - r54944;
        return r54945;
}

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 r54946, r54947, r54948, r54949, r54950, r54951, r54952;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54946);
        mpfr_init_set_str(r54947, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54948);
        mpfr_init(r54949);
        mpfr_init(r54950);
        mpfr_init(r54951);
        mpfr_init(r54952);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r54946, x, MPFR_RNDN);
        ;
        mpfr_mul(r54948, r54946, r54947, MPFR_RNDN);
        mpfr_set_d(r54949, y, MPFR_RNDN);
        mpfr_mul(r54950, r54948, r54949, MPFR_RNDN);
        mpfr_set_d(r54951, z, MPFR_RNDN);
        mpfr_sub(r54952, r54950, r54951, MPFR_RNDN);
        return mpfr_get_d(r54952, MPFR_RNDN);
}

static mpfr_t r54953, r54954, r54955, r54956, r54957, r54958, r54959;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54953, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54954);
        mpfr_init(r54955);
        mpfr_init(r54956);
        mpfr_init(r54957);
        mpfr_init(r54958);
        mpfr_init(r54959);
}

double f_fm(double x, double y, double z) {
        ;
        mpfr_set_d(r54954, y, MPFR_RNDN);
        mpfr_set_d(r54955, x, MPFR_RNDN);
        mpfr_mul(r54956, r54954, r54955, MPFR_RNDN);
        mpfr_mul(r54957, r54953, r54956, MPFR_RNDN);
        mpfr_set_d(r54958, z, MPFR_RNDN);
        mpfr_sub(r54959, r54957, r54958, MPFR_RNDN);
        return mpfr_get_d(r54959, MPFR_RNDN);
}

static mpfr_t r54960, r54961, r54962, r54963, r54964, r54965, r54966;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54960, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54961);
        mpfr_init(r54962);
        mpfr_init(r54963);
        mpfr_init(r54964);
        mpfr_init(r54965);
        mpfr_init(r54966);
}

double f_dm(double x, double y, double z) {
        ;
        mpfr_set_d(r54961, y, MPFR_RNDN);
        mpfr_set_d(r54962, x, MPFR_RNDN);
        mpfr_mul(r54963, r54961, r54962, MPFR_RNDN);
        mpfr_mul(r54964, r54960, r54963, MPFR_RNDN);
        mpfr_set_d(r54965, z, MPFR_RNDN);
        mpfr_sub(r54966, r54964, r54965, MPFR_RNDN);
        return mpfr_get_d(r54966, MPFR_RNDN);
}

