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

double f_if(float x, float y, float z, float t) {
        float r54367 = x;
        float r54368 = y;
        float r54369 = z;
        float r54370 = 3.0;
        float r54371 = r54369 * r54370;
        float r54372 = r54368 / r54371;
        float r54373 = r54367 - r54372;
        float r54374 = t;
        float r54375 = r54371 * r54368;
        float r54376 = r54374 / r54375;
        float r54377 = r54373 + r54376;
        return r54377;
}

double f_id(double x, double y, double z, double t) {
        double r54378 = x;
        double r54379 = y;
        double r54380 = z;
        double r54381 = 3.0;
        double r54382 = r54380 * r54381;
        double r54383 = r54379 / r54382;
        double r54384 = r54378 - r54383;
        double r54385 = t;
        double r54386 = r54382 * r54379;
        double r54387 = r54385 / r54386;
        double r54388 = r54384 + r54387;
        return r54388;
}


double f_of(float x, float y, float z, float t) {
        float r54389 = x;
        float r54390 = y;
        float r54391 = z;
        float r54392 = 3.0;
        float r54393 = r54391 * r54392;
        float r54394 = r54390 / r54393;
        float r54395 = r54389 - r54394;
        float r54396 = t;
        float r54397 = r54396 / r54391;
        float r54398 = r54397 / r54392;
        float r54399 = r54398 / r54390;
        float r54400 = r54395 + r54399;
        return r54400;
}

double f_od(double x, double y, double z, double t) {
        double r54401 = x;
        double r54402 = y;
        double r54403 = z;
        double r54404 = 3.0;
        double r54405 = r54403 * r54404;
        double r54406 = r54402 / r54405;
        double r54407 = r54401 - r54406;
        double r54408 = t;
        double r54409 = r54408 / r54403;
        double r54410 = r54409 / r54404;
        double r54411 = r54410 / r54402;
        double r54412 = r54407 + r54411;
        return r54412;
}

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 r54413, r54414, r54415, r54416, r54417, r54418, r54419, r54420, r54421, r54422, r54423;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54413);
        mpfr_init(r54414);
        mpfr_init(r54415);
        mpfr_init_set_str(r54416, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54417);
        mpfr_init(r54418);
        mpfr_init(r54419);
        mpfr_init(r54420);
        mpfr_init(r54421);
        mpfr_init(r54422);
        mpfr_init(r54423);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r54413, x, MPFR_RNDN);
        mpfr_set_d(r54414, y, MPFR_RNDN);
        mpfr_set_d(r54415, z, MPFR_RNDN);
        ;
        mpfr_mul(r54417, r54415, r54416, MPFR_RNDN);
        mpfr_div(r54418, r54414, r54417, MPFR_RNDN);
        mpfr_sub(r54419, r54413, r54418, MPFR_RNDN);
        mpfr_set_d(r54420, t, MPFR_RNDN);
        mpfr_mul(r54421, r54417, r54414, MPFR_RNDN);
        mpfr_div(r54422, r54420, r54421, MPFR_RNDN);
        mpfr_add(r54423, r54419, r54422, MPFR_RNDN);
        return mpfr_get_d(r54423, MPFR_RNDN);
}

static mpfr_t r54424, r54425, r54426, r54427, r54428, r54429, r54430, r54431, r54432, r54433, r54434, r54435;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54424);
        mpfr_init(r54425);
        mpfr_init(r54426);
        mpfr_init_set_str(r54427, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54428);
        mpfr_init(r54429);
        mpfr_init(r54430);
        mpfr_init(r54431);
        mpfr_init(r54432);
        mpfr_init(r54433);
        mpfr_init(r54434);
        mpfr_init(r54435);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r54424, x, MPFR_RNDN);
        mpfr_set_d(r54425, y, MPFR_RNDN);
        mpfr_set_d(r54426, z, MPFR_RNDN);
        ;
        mpfr_mul(r54428, r54426, r54427, MPFR_RNDN);
        mpfr_div(r54429, r54425, r54428, MPFR_RNDN);
        mpfr_sub(r54430, r54424, r54429, MPFR_RNDN);
        mpfr_set_d(r54431, t, MPFR_RNDN);
        mpfr_div(r54432, r54431, r54426, MPFR_RNDN);
        mpfr_div(r54433, r54432, r54427, MPFR_RNDN);
        mpfr_div(r54434, r54433, r54425, MPFR_RNDN);
        mpfr_add(r54435, r54430, r54434, MPFR_RNDN);
        return mpfr_get_d(r54435, MPFR_RNDN);
}

static mpfr_t r54436, r54437, r54438, r54439, r54440, r54441, r54442, r54443, r54444, r54445, r54446, r54447;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54436);
        mpfr_init(r54437);
        mpfr_init(r54438);
        mpfr_init_set_str(r54439, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54440);
        mpfr_init(r54441);
        mpfr_init(r54442);
        mpfr_init(r54443);
        mpfr_init(r54444);
        mpfr_init(r54445);
        mpfr_init(r54446);
        mpfr_init(r54447);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r54436, x, MPFR_RNDN);
        mpfr_set_d(r54437, y, MPFR_RNDN);
        mpfr_set_d(r54438, z, MPFR_RNDN);
        ;
        mpfr_mul(r54440, r54438, r54439, MPFR_RNDN);
        mpfr_div(r54441, r54437, r54440, MPFR_RNDN);
        mpfr_sub(r54442, r54436, r54441, MPFR_RNDN);
        mpfr_set_d(r54443, t, MPFR_RNDN);
        mpfr_div(r54444, r54443, r54438, MPFR_RNDN);
        mpfr_div(r54445, r54444, r54439, MPFR_RNDN);
        mpfr_div(r54446, r54445, r54437, MPFR_RNDN);
        mpfr_add(r54447, r54442, r54446, MPFR_RNDN);
        return mpfr_get_d(r54447, MPFR_RNDN);
}

