#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Diagrams.Solve.Polynomial:quadForm from diagrams-solve-0.1, C";

double f_if(float x, float y) {
        float r34233 = x;
        float r34234 = y;
        float r34235 = 2.0;
        float r34236 = r34234 * r34235;
        float r34237 = r34233 / r34236;
        return r34237;
}

double f_id(double x, double y) {
        double r34238 = x;
        double r34239 = y;
        double r34240 = 2.0;
        double r34241 = r34239 * r34240;
        double r34242 = r34238 / r34241;
        return r34242;
}


double f_of(float x, float y) {
        float r34243 = x;
        float r34244 = y;
        float r34245 = 2.0;
        float r34246 = r34244 * r34245;
        float r34247 = r34243 / r34246;
        return r34247;
}

double f_od(double x, double y) {
        double r34248 = x;
        double r34249 = y;
        double r34250 = 2.0;
        double r34251 = r34249 * r34250;
        double r34252 = r34248 / r34251;
        return r34252;
}

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 r34253, r34254, r34255, r34256, r34257;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34253);
        mpfr_init(r34254);
        mpfr_init_set_str(r34255, "2.0", 10, MPFR_RNDN);
        mpfr_init(r34256);
        mpfr_init(r34257);
}

double f_im(double x, double y) {
        mpfr_set_d(r34253, x, MPFR_RNDN);
        mpfr_set_d(r34254, y, MPFR_RNDN);
        ;
        mpfr_mul(r34256, r34254, r34255, MPFR_RNDN);
        mpfr_div(r34257, r34253, r34256, MPFR_RNDN);
        return mpfr_get_d(r34257, MPFR_RNDN);
}

static mpfr_t r34258, r34259, r34260, r34261, r34262;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34258);
        mpfr_init(r34259);
        mpfr_init_set_str(r34260, "2.0", 10, MPFR_RNDN);
        mpfr_init(r34261);
        mpfr_init(r34262);
}

double f_fm(double x, double y) {
        mpfr_set_d(r34258, x, MPFR_RNDN);
        mpfr_set_d(r34259, y, MPFR_RNDN);
        ;
        mpfr_mul(r34261, r34259, r34260, MPFR_RNDN);
        mpfr_div(r34262, r34258, r34261, MPFR_RNDN);
        return mpfr_get_d(r34262, MPFR_RNDN);
}

static mpfr_t r34263, r34264, r34265, r34266, r34267;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34263);
        mpfr_init(r34264);
        mpfr_init_set_str(r34265, "2.0", 10, MPFR_RNDN);
        mpfr_init(r34266);
        mpfr_init(r34267);
}

double f_dm(double x, double y) {
        mpfr_set_d(r34263, x, MPFR_RNDN);
        mpfr_set_d(r34264, y, MPFR_RNDN);
        ;
        mpfr_mul(r34266, r34264, r34265, MPFR_RNDN);
        mpfr_div(r34267, r34263, r34266, MPFR_RNDN);
        return mpfr_get_d(r34267, MPFR_RNDN);
}

