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

double f_if(float x, float y) {
        float r34842 = x;
        float r34843 = 3.0;
        float r34844 = 8.0;
        float r34845 = r34843 / r34844;
        float r34846 = y;
        float r34847 = r34845 * r34846;
        float r34848 = r34842 - r34847;
        return r34848;
}

double f_id(double x, double y) {
        double r34849 = x;
        double r34850 = 3.0;
        double r34851 = 8.0;
        double r34852 = r34850 / r34851;
        double r34853 = y;
        double r34854 = r34852 * r34853;
        double r34855 = r34849 - r34854;
        return r34855;
}


double f_of(float x, float y) {
        float r34856 = x;
        float r34857 = 3.0;
        float r34858 = 8.0;
        float r34859 = r34857 / r34858;
        float r34860 = y;
        float r34861 = r34859 * r34860;
        float r34862 = r34856 - r34861;
        return r34862;
}

double f_od(double x, double y) {
        double r34863 = x;
        double r34864 = 3.0;
        double r34865 = 8.0;
        double r34866 = r34864 / r34865;
        double r34867 = y;
        double r34868 = r34866 * r34867;
        double r34869 = r34863 - r34868;
        return r34869;
}

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 r34870, r34871, r34872, r34873, r34874, r34875, r34876;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r34870);
        mpfr_init_set_str(r34871, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34872, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34873);
        mpfr_init(r34874);
        mpfr_init(r34875);
        mpfr_init(r34876);
}

double f_im(double x, double y) {
        mpfr_set_d(r34870, x, MPFR_RNDN);
        ;
        ;
        mpfr_div(r34873, r34871, r34872, MPFR_RNDN);
        mpfr_set_d(r34874, y, MPFR_RNDN);
        mpfr_mul(r34875, r34873, r34874, MPFR_RNDN);
        mpfr_sub(r34876, r34870, r34875, MPFR_RNDN);
        return mpfr_get_d(r34876, MPFR_RNDN);
}

static mpfr_t r34877, r34878, r34879, r34880, r34881, r34882, r34883;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r34877);
        mpfr_init_set_str(r34878, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34879, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34880);
        mpfr_init(r34881);
        mpfr_init(r34882);
        mpfr_init(r34883);
}

double f_fm(double x, double y) {
        mpfr_set_d(r34877, x, MPFR_RNDN);
        ;
        ;
        mpfr_div(r34880, r34878, r34879, MPFR_RNDN);
        mpfr_set_d(r34881, y, MPFR_RNDN);
        mpfr_mul(r34882, r34880, r34881, MPFR_RNDN);
        mpfr_sub(r34883, r34877, r34882, MPFR_RNDN);
        return mpfr_get_d(r34883, MPFR_RNDN);
}

static mpfr_t r34884, r34885, r34886, r34887, r34888, r34889, r34890;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r34884);
        mpfr_init_set_str(r34885, "3.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r34886, "8.0", 10, MPFR_RNDN);
        mpfr_init(r34887);
        mpfr_init(r34888);
        mpfr_init(r34889);
        mpfr_init(r34890);
}

double f_dm(double x, double y) {
        mpfr_set_d(r34884, x, MPFR_RNDN);
        ;
        ;
        mpfr_div(r34887, r34885, r34886, MPFR_RNDN);
        mpfr_set_d(r34888, y, MPFR_RNDN);
        mpfr_mul(r34889, r34887, r34888, MPFR_RNDN);
        mpfr_sub(r34890, r34884, r34889, MPFR_RNDN);
        return mpfr_get_d(r34890, MPFR_RNDN);
}

