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

double f_if(float x, float y) {
        float r54448 = 1.0;
        float r54449 = 2.0;
        float r54450 = r54448 / r54449;
        float r54451 = x;
        float r54452 = y;
        float r54453 = r54451 + r54452;
        float r54454 = r54450 * r54453;
        return r54454;
}

double f_id(double x, double y) {
        double r54455 = 1.0;
        double r54456 = 2.0;
        double r54457 = r54455 / r54456;
        double r54458 = x;
        double r54459 = y;
        double r54460 = r54458 + r54459;
        double r54461 = r54457 * r54460;
        return r54461;
}


double f_of(float x, float y) {
        float r54462 = 1.0;
        float r54463 = 2.0;
        float r54464 = r54462 / r54463;
        float r54465 = x;
        float r54466 = y;
        float r54467 = r54465 + r54466;
        float r54468 = r54464 * r54467;
        return r54468;
}

double f_od(double x, double y) {
        double r54469 = 1.0;
        double r54470 = 2.0;
        double r54471 = r54469 / r54470;
        double r54472 = x;
        double r54473 = y;
        double r54474 = r54472 + r54473;
        double r54475 = r54471 * r54474;
        return r54475;
}

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 r54476, r54477, r54478, r54479, r54480, r54481, r54482;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54476, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54477, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54478);
        mpfr_init(r54479);
        mpfr_init(r54480);
        mpfr_init(r54481);
        mpfr_init(r54482);
}

double f_im(double x, double y) {
        ;
        ;
        mpfr_div(r54478, r54476, r54477, MPFR_RNDN);
        mpfr_set_d(r54479, x, MPFR_RNDN);
        mpfr_set_d(r54480, y, MPFR_RNDN);
        mpfr_add(r54481, r54479, r54480, MPFR_RNDN);
        mpfr_mul(r54482, r54478, r54481, MPFR_RNDN);
        return mpfr_get_d(r54482, MPFR_RNDN);
}

static mpfr_t r54483, r54484, r54485, r54486, r54487, r54488, r54489;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54483, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54484, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54485);
        mpfr_init(r54486);
        mpfr_init(r54487);
        mpfr_init(r54488);
        mpfr_init(r54489);
}

double f_fm(double x, double y) {
        ;
        ;
        mpfr_div(r54485, r54483, r54484, MPFR_RNDN);
        mpfr_set_d(r54486, x, MPFR_RNDN);
        mpfr_set_d(r54487, y, MPFR_RNDN);
        mpfr_add(r54488, r54486, r54487, MPFR_RNDN);
        mpfr_mul(r54489, r54485, r54488, MPFR_RNDN);
        return mpfr_get_d(r54489, MPFR_RNDN);
}

static mpfr_t r54490, r54491, r54492, r54493, r54494, r54495, r54496;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54490, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54491, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54492);
        mpfr_init(r54493);
        mpfr_init(r54494);
        mpfr_init(r54495);
        mpfr_init(r54496);
}

double f_dm(double x, double y) {
        ;
        ;
        mpfr_div(r54492, r54490, r54491, MPFR_RNDN);
        mpfr_set_d(r54493, x, MPFR_RNDN);
        mpfr_set_d(r54494, y, MPFR_RNDN);
        mpfr_add(r54495, r54493, r54494, MPFR_RNDN);
        mpfr_mul(r54496, r54492, r54495, MPFR_RNDN);
        return mpfr_get_d(r54496, MPFR_RNDN);
}

