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

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

double f_if(float x, float y) {
        float r51840 = x;
        float r51841 = y;
        float r51842 = 4.0f;
        float r51843 = r51841 / r51842;
        float r51844 = r51840 - r51843;
        return r51844;
}

double f_id(double x, double y) {
        double r51845 = x;
        double r51846 = y;
        double r51847 = 4.0;
        double r51848 = r51846 / r51847;
        double r51849 = r51845 - r51848;
        return r51849;
}


double f_of(float x, float y) {
        float r51850 = x;
        float r51851 = y;
        float r51852 = 4.0f;
        float r51853 = r51851 / r51852;
        float r51854 = r51850 - r51853;
        return r51854;
}

double f_od(double x, double y) {
        double r51855 = x;
        double r51856 = y;
        double r51857 = 4.0;
        double r51858 = r51856 / r51857;
        double r51859 = r51855 - r51858;
        return r51859;
}

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 r51860, r51861, r51862, r51863, r51864;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r51860);
        mpfr_init(r51861);
        mpfr_init_set_str(r51862, "4.0", 10, MPFR_RNDN);
        mpfr_init(r51863);
        mpfr_init(r51864);
}

double f_im(double x, double y) {
        mpfr_set_d(r51860, x, MPFR_RNDN);
        mpfr_set_d(r51861, y, MPFR_RNDN);
        ;
        mpfr_div(r51863, r51861, r51862, MPFR_RNDN);
        mpfr_sub(r51864, r51860, r51863, MPFR_RNDN);
        return mpfr_get_d(r51864, MPFR_RNDN);
}

static mpfr_t r51865, r51866, r51867, r51868, r51869;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r51865);
        mpfr_init(r51866);
        mpfr_init_set_str(r51867, "4.0", 10, MPFR_RNDN);
        mpfr_init(r51868);
        mpfr_init(r51869);
}

double f_fm(double x, double y) {
        mpfr_set_d(r51865, x, MPFR_RNDN);
        mpfr_set_d(r51866, y, MPFR_RNDN);
        ;
        mpfr_div(r51868, r51866, r51867, MPFR_RNDN);
        mpfr_sub(r51869, r51865, r51868, MPFR_RNDN);
        return mpfr_get_d(r51869, MPFR_RNDN);
}

static mpfr_t r51870, r51871, r51872, r51873, r51874;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r51870);
        mpfr_init(r51871);
        mpfr_init_set_str(r51872, "4.0", 10, MPFR_RNDN);
        mpfr_init(r51873);
        mpfr_init(r51874);
}

double f_dm(double x, double y) {
        mpfr_set_d(r51870, x, MPFR_RNDN);
        mpfr_set_d(r51871, y, MPFR_RNDN);
        ;
        mpfr_div(r51873, r51871, r51872, MPFR_RNDN);
        mpfr_sub(r51874, r51870, r51873, MPFR_RNDN);
        return mpfr_get_d(r51874, MPFR_RNDN);
}

