#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 r53451 = 1.0;
        float r53452 = 2.0;
        float r53453 = r53451 / r53452;
        float r53454 = x;
        float r53455 = y;
        float r53456 = r53454 + r53455;
        float r53457 = r53453 * r53456;
        return r53457;
}

double f_id(double x, double y) {
        double r53458 = 1.0;
        double r53459 = 2.0;
        double r53460 = r53458 / r53459;
        double r53461 = x;
        double r53462 = y;
        double r53463 = r53461 + r53462;
        double r53464 = r53460 * r53463;
        return r53464;
}


double f_of(float x, float y) {
        float r53465 = 1.0;
        float r53466 = 2.0;
        float r53467 = r53465 / r53466;
        float r53468 = x;
        float r53469 = y;
        float r53470 = r53468 + r53469;
        float r53471 = r53467 * r53470;
        return r53471;
}

double f_od(double x, double y) {
        double r53472 = 1.0;
        double r53473 = 2.0;
        double r53474 = r53472 / r53473;
        double r53475 = x;
        double r53476 = y;
        double r53477 = r53475 + r53476;
        double r53478 = r53474 * r53477;
        return r53478;
}

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 r53479, r53480, r53481, r53482, r53483, r53484, r53485;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r53479, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53480, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53481);
        mpfr_init(r53482);
        mpfr_init(r53483);
        mpfr_init(r53484);
        mpfr_init(r53485);
}

double f_im(double x, double y) {
        ;
        ;
        mpfr_div(r53481, r53479, r53480, MPFR_RNDN);
        mpfr_set_d(r53482, x, MPFR_RNDN);
        mpfr_set_d(r53483, y, MPFR_RNDN);
        mpfr_add(r53484, r53482, r53483, MPFR_RNDN);
        mpfr_mul(r53485, r53481, r53484, MPFR_RNDN);
        return mpfr_get_d(r53485, MPFR_RNDN);
}

static mpfr_t r53486, r53487, r53488, r53489, r53490, r53491, r53492;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r53486, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53487, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53488);
        mpfr_init(r53489);
        mpfr_init(r53490);
        mpfr_init(r53491);
        mpfr_init(r53492);
}

double f_fm(double x, double y) {
        ;
        ;
        mpfr_div(r53488, r53486, r53487, MPFR_RNDN);
        mpfr_set_d(r53489, x, MPFR_RNDN);
        mpfr_set_d(r53490, y, MPFR_RNDN);
        mpfr_add(r53491, r53489, r53490, MPFR_RNDN);
        mpfr_mul(r53492, r53488, r53491, MPFR_RNDN);
        return mpfr_get_d(r53492, MPFR_RNDN);
}

static mpfr_t r53493, r53494, r53495, r53496, r53497, r53498, r53499;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r53493, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53494, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53495);
        mpfr_init(r53496);
        mpfr_init(r53497);
        mpfr_init(r53498);
        mpfr_init(r53499);
}

double f_dm(double x, double y) {
        ;
        ;
        mpfr_div(r53495, r53493, r53494, MPFR_RNDN);
        mpfr_set_d(r53496, x, MPFR_RNDN);
        mpfr_set_d(r53497, y, MPFR_RNDN);
        mpfr_add(r53498, r53496, r53497, MPFR_RNDN);
        mpfr_mul(r53499, r53495, r53498, MPFR_RNDN);
        return mpfr_get_d(r53499, MPFR_RNDN);
}

