#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 r54276 = x;
        float r54277 = y;
        float r54278 = r54276 * r54277;
        float r54279 = z;
        float r54280 = 9.0;
        float r54281 = r54279 * r54280;
        float r54282 = t;
        float r54283 = r54281 * r54282;
        float r54284 = r54278 - r54283;
        float r54285 = a;
        float r54286 = 2.0;
        float r54287 = r54285 * r54286;
        float r54288 = r54284 / r54287;
        return r54288;
}

double f_id(double x, double y, double z, double t, double a) {
        double r54289 = x;
        double r54290 = y;
        double r54291 = r54289 * r54290;
        double r54292 = z;
        double r54293 = 9.0;
        double r54294 = r54292 * r54293;
        double r54295 = t;
        double r54296 = r54294 * r54295;
        double r54297 = r54291 - r54296;
        double r54298 = a;
        double r54299 = 2.0;
        double r54300 = r54298 * r54299;
        double r54301 = r54297 / r54300;
        return r54301;
}


double f_of(float x, float y, float z, float t, float a) {
        float r54302 = x;
        float r54303 = y;
        float r54304 = r54302 * r54303;
        float r54305 = z;
        float r54306 = 9.0;
        float r54307 = r54305 * r54306;
        float r54308 = t;
        float r54309 = r54307 * r54308;
        float r54310 = r54304 - r54309;
        float r54311 = a;
        float r54312 = 2.0;
        float r54313 = r54311 * r54312;
        float r54314 = r54310 / r54313;
        return r54314;
}

double f_od(double x, double y, double z, double t, double a) {
        double r54315 = x;
        double r54316 = y;
        double r54317 = r54315 * r54316;
        double r54318 = z;
        double r54319 = 9.0;
        double r54320 = r54318 * r54319;
        double r54321 = t;
        double r54322 = r54320 * r54321;
        double r54323 = r54317 - r54322;
        double r54324 = a;
        double r54325 = 2.0;
        double r54326 = r54324 * r54325;
        double r54327 = r54323 / r54326;
        return r54327;
}

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 r54328, r54329, r54330, r54331, r54332, r54333, r54334, r54335, r54336, r54337, r54338, r54339, r54340;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54328);
        mpfr_init(r54329);
        mpfr_init(r54330);
        mpfr_init(r54331);
        mpfr_init_set_str(r54332, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54333);
        mpfr_init(r54334);
        mpfr_init(r54335);
        mpfr_init(r54336);
        mpfr_init(r54337);
        mpfr_init_set_str(r54338, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54339);
        mpfr_init(r54340);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r54328, x, MPFR_RNDN);
        mpfr_set_d(r54329, y, MPFR_RNDN);
        mpfr_mul(r54330, r54328, r54329, MPFR_RNDN);
        mpfr_set_d(r54331, z, MPFR_RNDN);
        ;
        mpfr_mul(r54333, r54331, r54332, MPFR_RNDN);
        mpfr_set_d(r54334, t, MPFR_RNDN);
        mpfr_mul(r54335, r54333, r54334, MPFR_RNDN);
        mpfr_sub(r54336, r54330, r54335, MPFR_RNDN);
        mpfr_set_d(r54337, a, MPFR_RNDN);
        ;
        mpfr_mul(r54339, r54337, r54338, MPFR_RNDN);
        mpfr_div(r54340, r54336, r54339, MPFR_RNDN);
        return mpfr_get_d(r54340, MPFR_RNDN);
}

static mpfr_t r54341, r54342, r54343, r54344, r54345, r54346, r54347, r54348, r54349, r54350, r54351, r54352, r54353;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54341);
        mpfr_init(r54342);
        mpfr_init(r54343);
        mpfr_init(r54344);
        mpfr_init_set_str(r54345, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54346);
        mpfr_init(r54347);
        mpfr_init(r54348);
        mpfr_init(r54349);
        mpfr_init(r54350);
        mpfr_init_set_str(r54351, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54352);
        mpfr_init(r54353);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r54341, x, MPFR_RNDN);
        mpfr_set_d(r54342, y, MPFR_RNDN);
        mpfr_mul(r54343, r54341, r54342, MPFR_RNDN);
        mpfr_set_d(r54344, z, MPFR_RNDN);
        ;
        mpfr_mul(r54346, r54344, r54345, MPFR_RNDN);
        mpfr_set_d(r54347, t, MPFR_RNDN);
        mpfr_mul(r54348, r54346, r54347, MPFR_RNDN);
        mpfr_sub(r54349, r54343, r54348, MPFR_RNDN);
        mpfr_set_d(r54350, a, MPFR_RNDN);
        ;
        mpfr_mul(r54352, r54350, r54351, MPFR_RNDN);
        mpfr_div(r54353, r54349, r54352, MPFR_RNDN);
        return mpfr_get_d(r54353, MPFR_RNDN);
}

static mpfr_t r54354, r54355, r54356, r54357, r54358, r54359, r54360, r54361, r54362, r54363, r54364, r54365, r54366;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54354);
        mpfr_init(r54355);
        mpfr_init(r54356);
        mpfr_init(r54357);
        mpfr_init_set_str(r54358, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54359);
        mpfr_init(r54360);
        mpfr_init(r54361);
        mpfr_init(r54362);
        mpfr_init(r54363);
        mpfr_init_set_str(r54364, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54365);
        mpfr_init(r54366);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r54354, x, MPFR_RNDN);
        mpfr_set_d(r54355, y, MPFR_RNDN);
        mpfr_mul(r54356, r54354, r54355, MPFR_RNDN);
        mpfr_set_d(r54357, z, MPFR_RNDN);
        ;
        mpfr_mul(r54359, r54357, r54358, MPFR_RNDN);
        mpfr_set_d(r54360, t, MPFR_RNDN);
        mpfr_mul(r54361, r54359, r54360, MPFR_RNDN);
        mpfr_sub(r54362, r54356, r54361, MPFR_RNDN);
        mpfr_set_d(r54363, a, MPFR_RNDN);
        ;
        mpfr_mul(r54365, r54363, r54364, MPFR_RNDN);
        mpfr_div(r54366, r54362, r54365, MPFR_RNDN);
        return mpfr_get_d(r54366, MPFR_RNDN);
}

