#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 r54080 = x;
        float r54081 = y;
        float r54082 = r54080 * r54081;
        float r54083 = z;
        float r54084 = 9.0;
        float r54085 = r54083 * r54084;
        float r54086 = t;
        float r54087 = r54085 * r54086;
        float r54088 = r54082 - r54087;
        float r54089 = a;
        float r54090 = 2.0;
        float r54091 = r54089 * r54090;
        float r54092 = r54088 / r54091;
        return r54092;
}

double f_id(double x, double y, double z, double t, double a) {
        double r54093 = x;
        double r54094 = y;
        double r54095 = r54093 * r54094;
        double r54096 = z;
        double r54097 = 9.0;
        double r54098 = r54096 * r54097;
        double r54099 = t;
        double r54100 = r54098 * r54099;
        double r54101 = r54095 - r54100;
        double r54102 = a;
        double r54103 = 2.0;
        double r54104 = r54102 * r54103;
        double r54105 = r54101 / r54104;
        return r54105;
}


double f_of(float x, float y, float z, float t, float a) {
        float r54106 = x;
        float r54107 = y;
        float r54108 = r54106 * r54107;
        float r54109 = z;
        float r54110 = 9.0;
        float r54111 = r54109 * r54110;
        float r54112 = t;
        float r54113 = r54111 * r54112;
        float r54114 = r54108 - r54113;
        float r54115 = a;
        float r54116 = 2.0;
        float r54117 = r54115 * r54116;
        float r54118 = r54114 / r54117;
        return r54118;
}

double f_od(double x, double y, double z, double t, double a) {
        double r54119 = x;
        double r54120 = y;
        double r54121 = r54119 * r54120;
        double r54122 = z;
        double r54123 = 9.0;
        double r54124 = r54122 * r54123;
        double r54125 = t;
        double r54126 = r54124 * r54125;
        double r54127 = r54121 - r54126;
        double r54128 = a;
        double r54129 = 2.0;
        double r54130 = r54128 * r54129;
        double r54131 = r54127 / r54130;
        return r54131;
}

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 r54132, r54133, r54134, r54135, r54136, r54137, r54138, r54139, r54140, r54141, r54142, r54143, r54144;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54132);
        mpfr_init(r54133);
        mpfr_init(r54134);
        mpfr_init(r54135);
        mpfr_init_set_str(r54136, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54137);
        mpfr_init(r54138);
        mpfr_init(r54139);
        mpfr_init(r54140);
        mpfr_init(r54141);
        mpfr_init_set_str(r54142, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54143);
        mpfr_init(r54144);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r54132, x, MPFR_RNDN);
        mpfr_set_d(r54133, y, MPFR_RNDN);
        mpfr_mul(r54134, r54132, r54133, MPFR_RNDN);
        mpfr_set_d(r54135, z, MPFR_RNDN);
        ;
        mpfr_mul(r54137, r54135, r54136, MPFR_RNDN);
        mpfr_set_d(r54138, t, MPFR_RNDN);
        mpfr_mul(r54139, r54137, r54138, MPFR_RNDN);
        mpfr_sub(r54140, r54134, r54139, MPFR_RNDN);
        mpfr_set_d(r54141, a, MPFR_RNDN);
        ;
        mpfr_mul(r54143, r54141, r54142, MPFR_RNDN);
        mpfr_div(r54144, r54140, r54143, MPFR_RNDN);
        return mpfr_get_d(r54144, MPFR_RNDN);
}

static mpfr_t r54145, r54146, r54147, r54148, r54149, r54150, r54151, r54152, r54153, r54154, r54155, r54156, r54157;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54145);
        mpfr_init(r54146);
        mpfr_init(r54147);
        mpfr_init(r54148);
        mpfr_init_set_str(r54149, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54150);
        mpfr_init(r54151);
        mpfr_init(r54152);
        mpfr_init(r54153);
        mpfr_init(r54154);
        mpfr_init_set_str(r54155, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54156);
        mpfr_init(r54157);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r54145, x, MPFR_RNDN);
        mpfr_set_d(r54146, y, MPFR_RNDN);
        mpfr_mul(r54147, r54145, r54146, MPFR_RNDN);
        mpfr_set_d(r54148, z, MPFR_RNDN);
        ;
        mpfr_mul(r54150, r54148, r54149, MPFR_RNDN);
        mpfr_set_d(r54151, t, MPFR_RNDN);
        mpfr_mul(r54152, r54150, r54151, MPFR_RNDN);
        mpfr_sub(r54153, r54147, r54152, MPFR_RNDN);
        mpfr_set_d(r54154, a, MPFR_RNDN);
        ;
        mpfr_mul(r54156, r54154, r54155, MPFR_RNDN);
        mpfr_div(r54157, r54153, r54156, MPFR_RNDN);
        return mpfr_get_d(r54157, MPFR_RNDN);
}

static mpfr_t r54158, r54159, r54160, r54161, r54162, r54163, r54164, r54165, r54166, r54167, r54168, r54169, r54170;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54158);
        mpfr_init(r54159);
        mpfr_init(r54160);
        mpfr_init(r54161);
        mpfr_init_set_str(r54162, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54163);
        mpfr_init(r54164);
        mpfr_init(r54165);
        mpfr_init(r54166);
        mpfr_init(r54167);
        mpfr_init_set_str(r54168, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54169);
        mpfr_init(r54170);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r54158, x, MPFR_RNDN);
        mpfr_set_d(r54159, y, MPFR_RNDN);
        mpfr_mul(r54160, r54158, r54159, MPFR_RNDN);
        mpfr_set_d(r54161, z, MPFR_RNDN);
        ;
        mpfr_mul(r54163, r54161, r54162, MPFR_RNDN);
        mpfr_set_d(r54164, t, MPFR_RNDN);
        mpfr_mul(r54165, r54163, r54164, MPFR_RNDN);
        mpfr_sub(r54166, r54160, r54165, MPFR_RNDN);
        mpfr_set_d(r54167, a, MPFR_RNDN);
        ;
        mpfr_mul(r54169, r54167, r54168, MPFR_RNDN);
        mpfr_div(r54170, r54166, r54169, MPFR_RNDN);
        return mpfr_get_d(r54170, MPFR_RNDN);
}

