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

double f_if(float x, float y) {
        float r54975 = x;
        float r54976 = y;
        float r54977 = 3.0;
        float r54978 = r54976 * r54977;
        float r54979 = r54975 / r54978;
        return r54979;
}

double f_id(double x, double y) {
        double r54980 = x;
        double r54981 = y;
        double r54982 = 3.0;
        double r54983 = r54981 * r54982;
        double r54984 = r54980 / r54983;
        return r54984;
}


double f_of(float x, float y) {
        float r54985 = x;
        float r54986 = y;
        float r54987 = 3.0;
        float r54988 = r54986 * r54987;
        float r54989 = r54985 / r54988;
        return r54989;
}

double f_od(double x, double y) {
        double r54990 = x;
        double r54991 = y;
        double r54992 = 3.0;
        double r54993 = r54991 * r54992;
        double r54994 = r54990 / r54993;
        return r54994;
}

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 r54995, r54996, r54997, r54998, r54999;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54995);
        mpfr_init(r54996);
        mpfr_init_set_str(r54997, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54998);
        mpfr_init(r54999);
}

double f_im(double x, double y) {
        mpfr_set_d(r54995, x, MPFR_RNDN);
        mpfr_set_d(r54996, y, MPFR_RNDN);
        ;
        mpfr_mul(r54998, r54996, r54997, MPFR_RNDN);
        mpfr_div(r54999, r54995, r54998, MPFR_RNDN);
        return mpfr_get_d(r54999, MPFR_RNDN);
}

static mpfr_t r55000, r55001, r55002, r55003, r55004;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55000);
        mpfr_init(r55001);
        mpfr_init_set_str(r55002, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55003);
        mpfr_init(r55004);
}

double f_fm(double x, double y) {
        mpfr_set_d(r55000, x, MPFR_RNDN);
        mpfr_set_d(r55001, y, MPFR_RNDN);
        ;
        mpfr_mul(r55003, r55001, r55002, MPFR_RNDN);
        mpfr_div(r55004, r55000, r55003, MPFR_RNDN);
        return mpfr_get_d(r55004, MPFR_RNDN);
}

static mpfr_t r55005, r55006, r55007, r55008, r55009;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55005);
        mpfr_init(r55006);
        mpfr_init_set_str(r55007, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55008);
        mpfr_init(r55009);
}

double f_dm(double x, double y) {
        mpfr_set_d(r55005, x, MPFR_RNDN);
        mpfr_set_d(r55006, y, MPFR_RNDN);
        ;
        mpfr_mul(r55008, r55006, r55007, MPFR_RNDN);
        mpfr_div(r55009, r55005, r55008, MPFR_RNDN);
        return mpfr_get_d(r55009, MPFR_RNDN);
}

