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

double f_if(float x, float y, float z, float t) {
        float r52057 = 1.0f;
        float r52058 = 8.0f;
        float r52059 = r52057 / r52058;
        float r52060 = x;
        float r52061 = r52059 * r52060;
        float r52062 = y;
        float r52063 = z;
        float r52064 = r52062 * r52063;
        float r52065 = 2.0f;
        float r52066 = r52064 / r52065;
        float r52067 = r52061 - r52066;
        float r52068 = t;
        float r52069 = r52067 + r52068;
        return r52069;
}

double f_id(double x, double y, double z, double t) {
        double r52070 = 1.0;
        double r52071 = 8.0;
        double r52072 = r52070 / r52071;
        double r52073 = x;
        double r52074 = r52072 * r52073;
        double r52075 = y;
        double r52076 = z;
        double r52077 = r52075 * r52076;
        double r52078 = 2.0;
        double r52079 = r52077 / r52078;
        double r52080 = r52074 - r52079;
        double r52081 = t;
        double r52082 = r52080 + r52081;
        return r52082;
}


double f_of(float x, float y, float z, float t) {
        float r52083 = 1.0f;
        float r52084 = 8.0f;
        float r52085 = r52083 / r52084;
        float r52086 = x;
        float r52087 = r52085 * r52086;
        float r52088 = y;
        float r52089 = z;
        float r52090 = r52088 * r52089;
        float r52091 = 2.0f;
        float r52092 = r52090 / r52091;
        float r52093 = r52087 - r52092;
        float r52094 = t;
        float r52095 = r52093 + r52094;
        return r52095;
}

double f_od(double x, double y, double z, double t) {
        double r52096 = 1.0;
        double r52097 = 8.0;
        double r52098 = r52096 / r52097;
        double r52099 = x;
        double r52100 = r52098 * r52099;
        double r52101 = y;
        double r52102 = z;
        double r52103 = r52101 * r52102;
        double r52104 = 2.0;
        double r52105 = r52103 / r52104;
        double r52106 = r52100 - r52105;
        double r52107 = t;
        double r52108 = r52106 + r52107;
        return r52108;
}

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 r52109, r52110, r52111, r52112, r52113, r52114, r52115, r52116, r52117, r52118, r52119, r52120, r52121;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r52109, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r52110, "8.0", 10, MPFR_RNDN);
        mpfr_init(r52111);
        mpfr_init(r52112);
        mpfr_init(r52113);
        mpfr_init(r52114);
        mpfr_init(r52115);
        mpfr_init(r52116);
        mpfr_init_set_str(r52117, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52118);
        mpfr_init(r52119);
        mpfr_init(r52120);
        mpfr_init(r52121);
}

double f_im(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r52111, r52109, r52110, MPFR_RNDN);
        mpfr_set_d(r52112, x, MPFR_RNDN);
        mpfr_mul(r52113, r52111, r52112, MPFR_RNDN);
        mpfr_set_d(r52114, y, MPFR_RNDN);
        mpfr_set_d(r52115, z, MPFR_RNDN);
        mpfr_mul(r52116, r52114, r52115, MPFR_RNDN);
        ;
        mpfr_div(r52118, r52116, r52117, MPFR_RNDN);
        mpfr_sub(r52119, r52113, r52118, MPFR_RNDN);
        mpfr_set_d(r52120, t, MPFR_RNDN);
        mpfr_add(r52121, r52119, r52120, MPFR_RNDN);
        return mpfr_get_d(r52121, MPFR_RNDN);
}

static mpfr_t r52122, r52123, r52124, r52125, r52126, r52127, r52128, r52129, r52130, r52131, r52132, r52133, r52134;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r52122, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r52123, "8.0", 10, MPFR_RNDN);
        mpfr_init(r52124);
        mpfr_init(r52125);
        mpfr_init(r52126);
        mpfr_init(r52127);
        mpfr_init(r52128);
        mpfr_init(r52129);
        mpfr_init_set_str(r52130, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52131);
        mpfr_init(r52132);
        mpfr_init(r52133);
        mpfr_init(r52134);
}

double f_fm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r52124, r52122, r52123, MPFR_RNDN);
        mpfr_set_d(r52125, x, MPFR_RNDN);
        mpfr_mul(r52126, r52124, r52125, MPFR_RNDN);
        mpfr_set_d(r52127, y, MPFR_RNDN);
        mpfr_set_d(r52128, z, MPFR_RNDN);
        mpfr_mul(r52129, r52127, r52128, MPFR_RNDN);
        ;
        mpfr_div(r52131, r52129, r52130, MPFR_RNDN);
        mpfr_sub(r52132, r52126, r52131, MPFR_RNDN);
        mpfr_set_d(r52133, t, MPFR_RNDN);
        mpfr_add(r52134, r52132, r52133, MPFR_RNDN);
        return mpfr_get_d(r52134, MPFR_RNDN);
}

static mpfr_t r52135, r52136, r52137, r52138, r52139, r52140, r52141, r52142, r52143, r52144, r52145, r52146, r52147;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r52135, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r52136, "8.0", 10, MPFR_RNDN);
        mpfr_init(r52137);
        mpfr_init(r52138);
        mpfr_init(r52139);
        mpfr_init(r52140);
        mpfr_init(r52141);
        mpfr_init(r52142);
        mpfr_init_set_str(r52143, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52144);
        mpfr_init(r52145);
        mpfr_init(r52146);
        mpfr_init(r52147);
}

double f_dm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r52137, r52135, r52136, MPFR_RNDN);
        mpfr_set_d(r52138, x, MPFR_RNDN);
        mpfr_mul(r52139, r52137, r52138, MPFR_RNDN);
        mpfr_set_d(r52140, y, MPFR_RNDN);
        mpfr_set_d(r52141, z, MPFR_RNDN);
        mpfr_mul(r52142, r52140, r52141, MPFR_RNDN);
        ;
        mpfr_div(r52144, r52142, r52143, MPFR_RNDN);
        mpfr_sub(r52145, r52139, r52144, MPFR_RNDN);
        mpfr_set_d(r52146, t, MPFR_RNDN);
        mpfr_add(r52147, r52145, r52146, MPFR_RNDN);
        return mpfr_get_d(r52147, MPFR_RNDN);
}

