#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 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_id(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;
}


double f_of(float x, float y, float z, float t, float a) {
        float r54132 = x;
        float r54133 = y;
        float r54134 = r54132 * r54133;
        float r54135 = z;
        float r54136 = 9.0;
        float r54137 = r54135 * r54136;
        float r54138 = t;
        float r54139 = r54137 * r54138;
        float r54140 = r54134 - r54139;
        float r54141 = a;
        float r54142 = 2.0;
        float r54143 = r54141 * r54142;
        float r54144 = r54140 / r54143;
        return r54144;
}

double f_od(double x, double y, double z, double t, double a) {
        double r54145 = x;
        double r54146 = y;
        double r54147 = r54145 * r54146;
        double r54148 = z;
        double r54149 = 9.0;
        double r54150 = r54148 * r54149;
        double r54151 = t;
        double r54152 = r54150 * r54151;
        double r54153 = r54147 - r54152;
        double r54154 = a;
        double r54155 = 2.0;
        double r54156 = r54154 * r54155;
        double r54157 = r54153 / r54156;
        return r54157;
}

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 r54158, r54159, r54160, r54161, r54162, r54163, r54164, r54165, r54166, r54167, r54168, r54169, r54170;

void setup_mpfr_f_im() {
        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_im(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);
}

static mpfr_t r54171, r54172, r54173, r54174, r54175, r54176, r54177, r54178, r54179, r54180, r54181, r54182, r54183;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54171);
        mpfr_init(r54172);
        mpfr_init(r54173);
        mpfr_init(r54174);
        mpfr_init_set_str(r54175, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54176);
        mpfr_init(r54177);
        mpfr_init(r54178);
        mpfr_init(r54179);
        mpfr_init(r54180);
        mpfr_init_set_str(r54181, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54182);
        mpfr_init(r54183);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r54171, x, MPFR_RNDN);
        mpfr_set_d(r54172, y, MPFR_RNDN);
        mpfr_mul(r54173, r54171, r54172, MPFR_RNDN);
        mpfr_set_d(r54174, z, MPFR_RNDN);
        ;
        mpfr_mul(r54176, r54174, r54175, MPFR_RNDN);
        mpfr_set_d(r54177, t, MPFR_RNDN);
        mpfr_mul(r54178, r54176, r54177, MPFR_RNDN);
        mpfr_sub(r54179, r54173, r54178, MPFR_RNDN);
        mpfr_set_d(r54180, a, MPFR_RNDN);
        ;
        mpfr_mul(r54182, r54180, r54181, MPFR_RNDN);
        mpfr_div(r54183, r54179, r54182, MPFR_RNDN);
        return mpfr_get_d(r54183, MPFR_RNDN);
}

static mpfr_t r54184, r54185, r54186, r54187, r54188, r54189, r54190, r54191, r54192, r54193, r54194, r54195, r54196;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54184);
        mpfr_init(r54185);
        mpfr_init(r54186);
        mpfr_init(r54187);
        mpfr_init_set_str(r54188, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54189);
        mpfr_init(r54190);
        mpfr_init(r54191);
        mpfr_init(r54192);
        mpfr_init(r54193);
        mpfr_init_set_str(r54194, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54195);
        mpfr_init(r54196);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r54184, x, MPFR_RNDN);
        mpfr_set_d(r54185, y, MPFR_RNDN);
        mpfr_mul(r54186, r54184, r54185, MPFR_RNDN);
        mpfr_set_d(r54187, z, MPFR_RNDN);
        ;
        mpfr_mul(r54189, r54187, r54188, MPFR_RNDN);
        mpfr_set_d(r54190, t, MPFR_RNDN);
        mpfr_mul(r54191, r54189, r54190, MPFR_RNDN);
        mpfr_sub(r54192, r54186, r54191, MPFR_RNDN);
        mpfr_set_d(r54193, a, MPFR_RNDN);
        ;
        mpfr_mul(r54195, r54193, r54194, MPFR_RNDN);
        mpfr_div(r54196, r54192, r54195, MPFR_RNDN);
        return mpfr_get_d(r54196, MPFR_RNDN);
}

