#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, F";

double f_if(float x, float y) {
        float r34387 = x;
        float r34388 = 27.0;
        float r34389 = r34387 * r34388;
        float r34390 = y;
        float r34391 = r34389 * r34390;
        return r34391;
}

double f_id(double x, double y) {
        double r34392 = x;
        double r34393 = 27.0;
        double r34394 = r34392 * r34393;
        double r34395 = y;
        double r34396 = r34394 * r34395;
        return r34396;
}


double f_of(float x, float y) {
        float r34397 = x;
        float r34398 = 27.0;
        float r34399 = y;
        float r34400 = r34398 * r34399;
        float r34401 = r34397 * r34400;
        return r34401;
}

double f_od(double x, double y) {
        double r34402 = x;
        double r34403 = 27.0;
        double r34404 = y;
        double r34405 = r34403 * r34404;
        double r34406 = r34402 * r34405;
        return r34406;
}

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 r34407, r34408, r34409, r34410, r34411;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34407);
        mpfr_init_set_str(r34408, "27.0", 10, MPFR_RNDN);
        mpfr_init(r34409);
        mpfr_init(r34410);
        mpfr_init(r34411);
}

double f_im(double x, double y) {
        mpfr_set_d(r34407, x, MPFR_RNDN);
        ;
        mpfr_mul(r34409, r34407, r34408, MPFR_RNDN);
        mpfr_set_d(r34410, y, MPFR_RNDN);
        mpfr_mul(r34411, r34409, r34410, MPFR_RNDN);
        return mpfr_get_d(r34411, MPFR_RNDN);
}

static mpfr_t r34412, r34413, r34414, r34415, r34416;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34412);
        mpfr_init_set_str(r34413, "27.0", 10, MPFR_RNDN);
        mpfr_init(r34414);
        mpfr_init(r34415);
        mpfr_init(r34416);
}

double f_fm(double x, double y) {
        mpfr_set_d(r34412, x, MPFR_RNDN);
        ;
        mpfr_set_d(r34414, y, MPFR_RNDN);
        mpfr_mul(r34415, r34413, r34414, MPFR_RNDN);
        mpfr_mul(r34416, r34412, r34415, MPFR_RNDN);
        return mpfr_get_d(r34416, MPFR_RNDN);
}

static mpfr_t r34417, r34418, r34419, r34420, r34421;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34417);
        mpfr_init_set_str(r34418, "27.0", 10, MPFR_RNDN);
        mpfr_init(r34419);
        mpfr_init(r34420);
        mpfr_init(r34421);
}

double f_dm(double x, double y) {
        mpfr_set_d(r34417, x, MPFR_RNDN);
        ;
        mpfr_set_d(r34419, y, MPFR_RNDN);
        mpfr_mul(r34420, r34418, r34419, MPFR_RNDN);
        mpfr_mul(r34421, r34417, r34420, MPFR_RNDN);
        return mpfr_get_d(r34421, MPFR_RNDN);
}

