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

double f_if(float x, float y, float z, float t, float a) {
        float r54060 = x;
        float r54061 = y;
        float r54062 = r54060 * r54061;
        float r54063 = z;
        float r54064 = 9.0;
        float r54065 = r54063 * r54064;
        float r54066 = t;
        float r54067 = r54065 * r54066;
        float r54068 = r54062 - r54067;
        float r54069 = a;
        float r54070 = 2.0;
        float r54071 = r54069 * r54070;
        float r54072 = r54068 / r54071;
        return r54072;
}

double f_id(double x, double y, double z, double t, double a) {
        double r54073 = x;
        double r54074 = y;
        double r54075 = r54073 * r54074;
        double r54076 = z;
        double r54077 = 9.0;
        double r54078 = r54076 * r54077;
        double r54079 = t;
        double r54080 = r54078 * r54079;
        double r54081 = r54075 - r54080;
        double r54082 = a;
        double r54083 = 2.0;
        double r54084 = r54082 * r54083;
        double r54085 = r54081 / r54084;
        return r54085;
}


double f_of(float x, float y, float z, float t, float a) {
        float r54086 = x;
        float r54087 = y;
        float r54088 = r54086 * r54087;
        float r54089 = z;
        float r54090 = 9.0;
        float r54091 = r54089 * r54090;
        float r54092 = t;
        float r54093 = r54091 * r54092;
        float r54094 = r54088 - r54093;
        float r54095 = a;
        float r54096 = 2.0;
        float r54097 = r54095 * r54096;
        float r54098 = r54094 / r54097;
        return r54098;
}

double f_od(double x, double y, double z, double t, double a) {
        double r54099 = x;
        double r54100 = y;
        double r54101 = r54099 * r54100;
        double r54102 = z;
        double r54103 = 9.0;
        double r54104 = r54102 * r54103;
        double r54105 = t;
        double r54106 = r54104 * r54105;
        double r54107 = r54101 - r54106;
        double r54108 = a;
        double r54109 = 2.0;
        double r54110 = r54108 * r54109;
        double r54111 = r54107 / r54110;
        return r54111;
}

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 r54112, r54113, r54114, r54115, r54116, r54117, r54118, r54119, r54120, r54121, r54122, r54123, r54124;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54112);
        mpfr_init(r54113);
        mpfr_init(r54114);
        mpfr_init(r54115);
        mpfr_init_set_str(r54116, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54117);
        mpfr_init(r54118);
        mpfr_init(r54119);
        mpfr_init(r54120);
        mpfr_init(r54121);
        mpfr_init_set_str(r54122, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54123);
        mpfr_init(r54124);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r54112, x, MPFR_RNDN);
        mpfr_set_d(r54113, y, MPFR_RNDN);
        mpfr_mul(r54114, r54112, r54113, MPFR_RNDN);
        mpfr_set_d(r54115, z, MPFR_RNDN);
        ;
        mpfr_mul(r54117, r54115, r54116, MPFR_RNDN);
        mpfr_set_d(r54118, t, MPFR_RNDN);
        mpfr_mul(r54119, r54117, r54118, MPFR_RNDN);
        mpfr_sub(r54120, r54114, r54119, MPFR_RNDN);
        mpfr_set_d(r54121, a, MPFR_RNDN);
        ;
        mpfr_mul(r54123, r54121, r54122, MPFR_RNDN);
        mpfr_div(r54124, r54120, r54123, MPFR_RNDN);
        return mpfr_get_d(r54124, MPFR_RNDN);
}

static mpfr_t r54125, r54126, r54127, r54128, r54129, r54130, r54131, r54132, r54133, r54134, r54135, r54136, r54137;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54125);
        mpfr_init(r54126);
        mpfr_init(r54127);
        mpfr_init(r54128);
        mpfr_init_set_str(r54129, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54130);
        mpfr_init(r54131);
        mpfr_init(r54132);
        mpfr_init(r54133);
        mpfr_init(r54134);
        mpfr_init_set_str(r54135, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54136);
        mpfr_init(r54137);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r54125, x, MPFR_RNDN);
        mpfr_set_d(r54126, y, MPFR_RNDN);
        mpfr_mul(r54127, r54125, r54126, MPFR_RNDN);
        mpfr_set_d(r54128, z, MPFR_RNDN);
        ;
        mpfr_mul(r54130, r54128, r54129, MPFR_RNDN);
        mpfr_set_d(r54131, t, MPFR_RNDN);
        mpfr_mul(r54132, r54130, r54131, MPFR_RNDN);
        mpfr_sub(r54133, r54127, r54132, MPFR_RNDN);
        mpfr_set_d(r54134, a, MPFR_RNDN);
        ;
        mpfr_mul(r54136, r54134, r54135, MPFR_RNDN);
        mpfr_div(r54137, r54133, r54136, MPFR_RNDN);
        return mpfr_get_d(r54137, MPFR_RNDN);
}

static mpfr_t r54138, r54139, r54140, r54141, r54142, r54143, r54144, r54145, r54146, r54147, r54148, r54149, r54150;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54138);
        mpfr_init(r54139);
        mpfr_init(r54140);
        mpfr_init(r54141);
        mpfr_init_set_str(r54142, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54143);
        mpfr_init(r54144);
        mpfr_init(r54145);
        mpfr_init(r54146);
        mpfr_init(r54147);
        mpfr_init_set_str(r54148, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54149);
        mpfr_init(r54150);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r54138, x, MPFR_RNDN);
        mpfr_set_d(r54139, y, MPFR_RNDN);
        mpfr_mul(r54140, r54138, r54139, MPFR_RNDN);
        mpfr_set_d(r54141, z, MPFR_RNDN);
        ;
        mpfr_mul(r54143, r54141, r54142, MPFR_RNDN);
        mpfr_set_d(r54144, t, MPFR_RNDN);
        mpfr_mul(r54145, r54143, r54144, MPFR_RNDN);
        mpfr_sub(r54146, r54140, r54145, MPFR_RNDN);
        mpfr_set_d(r54147, a, MPFR_RNDN);
        ;
        mpfr_mul(r54149, r54147, r54148, MPFR_RNDN);
        mpfr_div(r54150, r54146, r54149, MPFR_RNDN);
        return mpfr_get_d(r54150, MPFR_RNDN);
}

