#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 r53075 = 1.0f;
        float r53076 = 2.0f;
        float r53077 = r53075 / r53076;
        float r53078 = x;
        float r53079 = y;
        float r53080 = r53078 + r53079;
        float r53081 = r53077 * r53080;
        return r53081;
}

double f_id(double x, double y) {
        double r53082 = 1.0;
        double r53083 = 2.0;
        double r53084 = r53082 / r53083;
        double r53085 = x;
        double r53086 = y;
        double r53087 = r53085 + r53086;
        double r53088 = r53084 * r53087;
        return r53088;
}


double f_of(float x, float y) {
        float r53089 = 1.0f;
        float r53090 = 2.0f;
        float r53091 = r53089 / r53090;
        float r53092 = x;
        float r53093 = y;
        float r53094 = r53092 + r53093;
        float r53095 = r53091 * r53094;
        return r53095;
}

double f_od(double x, double y) {
        double r53096 = 1.0;
        double r53097 = 2.0;
        double r53098 = r53096 / r53097;
        double r53099 = x;
        double r53100 = y;
        double r53101 = r53099 + r53100;
        double r53102 = r53098 * r53101;
        return r53102;
}

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 r53103, r53104, r53105, r53106, r53107, r53108, r53109;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r53103, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53104, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53105);
        mpfr_init(r53106);
        mpfr_init(r53107);
        mpfr_init(r53108);
        mpfr_init(r53109);
}

double f_im(double x, double y) {
        ;
        ;
        mpfr_div(r53105, r53103, r53104, MPFR_RNDN);
        mpfr_set_d(r53106, x, MPFR_RNDN);
        mpfr_set_d(r53107, y, MPFR_RNDN);
        mpfr_add(r53108, r53106, r53107, MPFR_RNDN);
        mpfr_mul(r53109, r53105, r53108, MPFR_RNDN);
        return mpfr_get_d(r53109, MPFR_RNDN);
}

static mpfr_t r53110, r53111, r53112, r53113, r53114, r53115, r53116;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r53110, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53111, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53112);
        mpfr_init(r53113);
        mpfr_init(r53114);
        mpfr_init(r53115);
        mpfr_init(r53116);
}

double f_fm(double x, double y) {
        ;
        ;
        mpfr_div(r53112, r53110, r53111, MPFR_RNDN);
        mpfr_set_d(r53113, x, MPFR_RNDN);
        mpfr_set_d(r53114, y, MPFR_RNDN);
        mpfr_add(r53115, r53113, r53114, MPFR_RNDN);
        mpfr_mul(r53116, r53112, r53115, MPFR_RNDN);
        return mpfr_get_d(r53116, MPFR_RNDN);
}

static mpfr_t r53117, r53118, r53119, r53120, r53121, r53122, r53123;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r53117, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r53118, "2.0", 10, MPFR_RNDN);
        mpfr_init(r53119);
        mpfr_init(r53120);
        mpfr_init(r53121);
        mpfr_init(r53122);
        mpfr_init(r53123);
}

double f_dm(double x, double y) {
        ;
        ;
        mpfr_div(r53119, r53117, r53118, MPFR_RNDN);
        mpfr_set_d(r53120, x, MPFR_RNDN);
        mpfr_set_d(r53121, y, MPFR_RNDN);
        mpfr_add(r53122, r53120, r53121, MPFR_RNDN);
        mpfr_mul(r53123, r53119, r53122, MPFR_RNDN);
        return mpfr_get_d(r53123, MPFR_RNDN);
}

