#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 r54883 = x;
        float r54884 = y;
        float r54885 = 3.0;
        float r54886 = r54884 * r54885;
        float r54887 = r54883 / r54886;
        return r54887;
}

double f_id(double x, double y) {
        double r54888 = x;
        double r54889 = y;
        double r54890 = 3.0;
        double r54891 = r54889 * r54890;
        double r54892 = r54888 / r54891;
        return r54892;
}


double f_of(float x, float y) {
        float r54893 = x;
        float r54894 = y;
        float r54895 = 3.0;
        float r54896 = r54894 * r54895;
        float r54897 = r54893 / r54896;
        return r54897;
}

double f_od(double x, double y) {
        double r54898 = x;
        double r54899 = y;
        double r54900 = 3.0;
        double r54901 = r54899 * r54900;
        double r54902 = r54898 / r54901;
        return r54902;
}

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 r54903, r54904, r54905, r54906, r54907;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54903);
        mpfr_init(r54904);
        mpfr_init_set_str(r54905, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54906);
        mpfr_init(r54907);
}

double f_im(double x, double y) {
        mpfr_set_d(r54903, x, MPFR_RNDN);
        mpfr_set_d(r54904, y, MPFR_RNDN);
        ;
        mpfr_mul(r54906, r54904, r54905, MPFR_RNDN);
        mpfr_div(r54907, r54903, r54906, MPFR_RNDN);
        return mpfr_get_d(r54907, MPFR_RNDN);
}

static mpfr_t r54908, r54909, r54910, r54911, r54912;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54908);
        mpfr_init(r54909);
        mpfr_init_set_str(r54910, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54911);
        mpfr_init(r54912);
}

double f_fm(double x, double y) {
        mpfr_set_d(r54908, x, MPFR_RNDN);
        mpfr_set_d(r54909, y, MPFR_RNDN);
        ;
        mpfr_mul(r54911, r54909, r54910, MPFR_RNDN);
        mpfr_div(r54912, r54908, r54911, MPFR_RNDN);
        return mpfr_get_d(r54912, MPFR_RNDN);
}

static mpfr_t r54913, r54914, r54915, r54916, r54917;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54913);
        mpfr_init(r54914);
        mpfr_init_set_str(r54915, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54916);
        mpfr_init(r54917);
}

double f_dm(double x, double y) {
        mpfr_set_d(r54913, x, MPFR_RNDN);
        mpfr_set_d(r54914, y, MPFR_RNDN);
        ;
        mpfr_mul(r54916, r54914, r54915, MPFR_RNDN);
        mpfr_div(r54917, r54913, r54916, MPFR_RNDN);
        return mpfr_get_d(r54917, MPFR_RNDN);
}

