#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 r54801 = x;
        float r54802 = y;
        float r54803 = 3.0;
        float r54804 = r54802 * r54803;
        float r54805 = r54801 / r54804;
        return r54805;
}

double f_id(double x, double y) {
        double r54806 = x;
        double r54807 = y;
        double r54808 = 3.0;
        double r54809 = r54807 * r54808;
        double r54810 = r54806 / r54809;
        return r54810;
}


double f_of(float x, float y) {
        float r54811 = x;
        float r54812 = y;
        float r54813 = 3.0;
        float r54814 = r54812 * r54813;
        float r54815 = r54811 / r54814;
        return r54815;
}

double f_od(double x, double y) {
        double r54816 = x;
        double r54817 = y;
        double r54818 = 3.0;
        double r54819 = r54817 * r54818;
        double r54820 = r54816 / r54819;
        return r54820;
}

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 r54821, r54822, r54823, r54824, r54825;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54821);
        mpfr_init(r54822);
        mpfr_init_set_str(r54823, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54824);
        mpfr_init(r54825);
}

double f_im(double x, double y) {
        mpfr_set_d(r54821, x, MPFR_RNDN);
        mpfr_set_d(r54822, y, MPFR_RNDN);
        ;
        mpfr_mul(r54824, r54822, r54823, MPFR_RNDN);
        mpfr_div(r54825, r54821, r54824, MPFR_RNDN);
        return mpfr_get_d(r54825, MPFR_RNDN);
}

static mpfr_t r54826, r54827, r54828, r54829, r54830;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54826);
        mpfr_init(r54827);
        mpfr_init_set_str(r54828, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54829);
        mpfr_init(r54830);
}

double f_fm(double x, double y) {
        mpfr_set_d(r54826, x, MPFR_RNDN);
        mpfr_set_d(r54827, y, MPFR_RNDN);
        ;
        mpfr_mul(r54829, r54827, r54828, MPFR_RNDN);
        mpfr_div(r54830, r54826, r54829, MPFR_RNDN);
        return mpfr_get_d(r54830, MPFR_RNDN);
}

static mpfr_t r54831, r54832, r54833, r54834, r54835;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54831);
        mpfr_init(r54832);
        mpfr_init_set_str(r54833, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54834);
        mpfr_init(r54835);
}

double f_dm(double x, double y) {
        mpfr_set_d(r54831, x, MPFR_RNDN);
        mpfr_set_d(r54832, y, MPFR_RNDN);
        ;
        mpfr_mul(r54834, r54832, r54833, MPFR_RNDN);
        mpfr_div(r54835, r54831, r54834, MPFR_RNDN);
        return mpfr_get_d(r54835, MPFR_RNDN);
}

