#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 r55067 = x;
        float r55068 = y;
        float r55069 = 3.0;
        float r55070 = r55068 * r55069;
        float r55071 = r55067 / r55070;
        return r55071;
}

double f_id(double x, double y) {
        double r55072 = x;
        double r55073 = y;
        double r55074 = 3.0;
        double r55075 = r55073 * r55074;
        double r55076 = r55072 / r55075;
        return r55076;
}


double f_of(float x, float y) {
        float r55077 = x;
        float r55078 = y;
        float r55079 = 3.0;
        float r55080 = r55078 * r55079;
        float r55081 = r55077 / r55080;
        return r55081;
}

double f_od(double x, double y) {
        double r55082 = x;
        double r55083 = y;
        double r55084 = 3.0;
        double r55085 = r55083 * r55084;
        double r55086 = r55082 / r55085;
        return r55086;
}

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 r55087, r55088, r55089, r55090, r55091;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55087);
        mpfr_init(r55088);
        mpfr_init_set_str(r55089, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55090);
        mpfr_init(r55091);
}

double f_im(double x, double y) {
        mpfr_set_d(r55087, x, MPFR_RNDN);
        mpfr_set_d(r55088, y, MPFR_RNDN);
        ;
        mpfr_mul(r55090, r55088, r55089, MPFR_RNDN);
        mpfr_div(r55091, r55087, r55090, MPFR_RNDN);
        return mpfr_get_d(r55091, MPFR_RNDN);
}

static mpfr_t r55092, r55093, r55094, r55095, r55096;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55092);
        mpfr_init(r55093);
        mpfr_init_set_str(r55094, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55095);
        mpfr_init(r55096);
}

double f_fm(double x, double y) {
        mpfr_set_d(r55092, x, MPFR_RNDN);
        mpfr_set_d(r55093, y, MPFR_RNDN);
        ;
        mpfr_mul(r55095, r55093, r55094, MPFR_RNDN);
        mpfr_div(r55096, r55092, r55095, MPFR_RNDN);
        return mpfr_get_d(r55096, MPFR_RNDN);
}

static mpfr_t r55097, r55098, r55099, r55100, r55101;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55097);
        mpfr_init(r55098);
        mpfr_init_set_str(r55099, "3.0", 10, MPFR_RNDN);
        mpfr_init(r55100);
        mpfr_init(r55101);
}

double f_dm(double x, double y) {
        mpfr_set_d(r55097, x, MPFR_RNDN);
        mpfr_set_d(r55098, y, MPFR_RNDN);
        ;
        mpfr_mul(r55100, r55098, r55099, MPFR_RNDN);
        mpfr_div(r55101, r55097, r55100, MPFR_RNDN);
        return mpfr_get_d(r55101, MPFR_RNDN);
}

