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

double f_if(float x, float y, float z, float t, float a, float b) {
        float r55059 = x;
        float r55060 = 2.0;
        float r55061 = r55059 * r55060;
        float r55062 = y;
        float r55063 = 9.0;
        float r55064 = r55062 * r55063;
        float r55065 = z;
        float r55066 = r55064 * r55065;
        float r55067 = t;
        float r55068 = r55066 * r55067;
        float r55069 = r55061 - r55068;
        float r55070 = a;
        float r55071 = 27.0;
        float r55072 = r55070 * r55071;
        float r55073 = b;
        float r55074 = r55072 * r55073;
        float r55075 = r55069 + r55074;
        return r55075;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r55076 = x;
        double r55077 = 2.0;
        double r55078 = r55076 * r55077;
        double r55079 = y;
        double r55080 = 9.0;
        double r55081 = r55079 * r55080;
        double r55082 = z;
        double r55083 = r55081 * r55082;
        double r55084 = t;
        double r55085 = r55083 * r55084;
        double r55086 = r55078 - r55085;
        double r55087 = a;
        double r55088 = 27.0;
        double r55089 = r55087 * r55088;
        double r55090 = b;
        double r55091 = r55089 * r55090;
        double r55092 = r55086 + r55091;
        return r55092;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r55093 = z;
        float r55094 = -5.0071510977473634e+140;
        bool r55095 = r55093 <= r55094;
        float r55096 = x;
        float r55097 = 2.0;
        float r55098 = r55096 * r55097;
        float r55099 = y;
        float r55100 = 9.0;
        float r55101 = r55099 * r55100;
        float r55102 = t;
        float r55103 = r55093 * r55102;
        float r55104 = r55101 * r55103;
        float r55105 = r55098 - r55104;
        float r55106 = a;
        float r55107 = 27.0;
        float r55108 = r55106 * r55107;
        float r55109 = b;
        float r55110 = r55108 * r55109;
        float r55111 = r55105 + r55110;
        float r55112 = r55095 ? r55111 : r55111;
        return r55112;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r55113 = z;
        double r55114 = -5.0071510977473634e+140;
        bool r55115 = r55113 <= r55114;
        double r55116 = x;
        double r55117 = 2.0;
        double r55118 = r55116 * r55117;
        double r55119 = y;
        double r55120 = 9.0;
        double r55121 = r55119 * r55120;
        double r55122 = t;
        double r55123 = r55113 * r55122;
        double r55124 = r55121 * r55123;
        double r55125 = r55118 - r55124;
        double r55126 = a;
        double r55127 = 27.0;
        double r55128 = r55126 * r55127;
        double r55129 = b;
        double r55130 = r55128 * r55129;
        double r55131 = r55125 + r55130;
        double r55132 = r55115 ? r55131 : r55131;
        return r55132;
}

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 r55133, r55134, r55135, r55136, r55137, r55138, r55139, r55140, r55141, r55142, r55143, r55144, r55145, r55146, r55147, r55148, r55149;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55133);
        mpfr_init_set_str(r55134, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55135);
        mpfr_init(r55136);
        mpfr_init_set_str(r55137, "9.0", 10, MPFR_RNDN);
        mpfr_init(r55138);
        mpfr_init(r55139);
        mpfr_init(r55140);
        mpfr_init(r55141);
        mpfr_init(r55142);
        mpfr_init(r55143);
        mpfr_init(r55144);
        mpfr_init_set_str(r55145, "27.0", 10, MPFR_RNDN);
        mpfr_init(r55146);
        mpfr_init(r55147);
        mpfr_init(r55148);
        mpfr_init(r55149);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55133, x, MPFR_RNDN);
        ;
        mpfr_mul(r55135, r55133, r55134, MPFR_RNDN);
        mpfr_set_d(r55136, y, MPFR_RNDN);
        ;
        mpfr_mul(r55138, r55136, r55137, MPFR_RNDN);
        mpfr_set_d(r55139, z, MPFR_RNDN);
        mpfr_mul(r55140, r55138, r55139, MPFR_RNDN);
        mpfr_set_d(r55141, t, MPFR_RNDN);
        mpfr_mul(r55142, r55140, r55141, MPFR_RNDN);
        mpfr_sub(r55143, r55135, r55142, MPFR_RNDN);
        mpfr_set_d(r55144, a, MPFR_RNDN);
        ;
        mpfr_mul(r55146, r55144, r55145, MPFR_RNDN);
        mpfr_set_d(r55147, b, MPFR_RNDN);
        mpfr_mul(r55148, r55146, r55147, MPFR_RNDN);
        mpfr_add(r55149, r55143, r55148, MPFR_RNDN);
        return mpfr_get_d(r55149, MPFR_RNDN);
}

static mpfr_t r55150, r55151, r55152, r55153, r55154, r55155, r55156, r55157, r55158, r55159, r55160, r55161, r55162, r55163, r55164, r55165, r55166, r55167, r55168, r55169;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55150);
        mpfr_init_set_str(r55151, "-5.0071510977473634e+140", 10, MPFR_RNDN);
        mpfr_init(r55152);
        mpfr_init(r55153);
        mpfr_init_set_str(r55154, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55155);
        mpfr_init(r55156);
        mpfr_init_set_str(r55157, "9.0", 10, MPFR_RNDN);
        mpfr_init(r55158);
        mpfr_init(r55159);
        mpfr_init(r55160);
        mpfr_init(r55161);
        mpfr_init(r55162);
        mpfr_init(r55163);
        mpfr_init_set_str(r55164, "27.0", 10, MPFR_RNDN);
        mpfr_init(r55165);
        mpfr_init(r55166);
        mpfr_init(r55167);
        mpfr_init(r55168);
        mpfr_init(r55169);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55150, z, MPFR_RNDN);
        ;
        mpfr_set_si(r55152, mpfr_cmp(r55150, r55151) <= 0, MPFR_RNDN);
        mpfr_set_d(r55153, x, MPFR_RNDN);
        ;
        mpfr_mul(r55155, r55153, r55154, MPFR_RNDN);
        mpfr_set_d(r55156, y, MPFR_RNDN);
        ;
        mpfr_mul(r55158, r55156, r55157, MPFR_RNDN);
        mpfr_set_d(r55159, t, MPFR_RNDN);
        mpfr_mul(r55160, r55150, r55159, MPFR_RNDN);
        mpfr_mul(r55161, r55158, r55160, MPFR_RNDN);
        mpfr_sub(r55162, r55155, r55161, MPFR_RNDN);
        mpfr_set_d(r55163, a, MPFR_RNDN);
        ;
        mpfr_mul(r55165, r55163, r55164, MPFR_RNDN);
        mpfr_set_d(r55166, b, MPFR_RNDN);
        mpfr_mul(r55167, r55165, r55166, MPFR_RNDN);
        mpfr_add(r55168, r55162, r55167, MPFR_RNDN);
        if (mpfr_get_si(r55152, MPFR_RNDN)) { mpfr_set(r55169, r55168, MPFR_RNDN); } else { mpfr_set(r55169, r55168, MPFR_RNDN); };
        return mpfr_get_d(r55169, MPFR_RNDN);
}

static mpfr_t r55170, r55171, r55172, r55173, r55174, r55175, r55176, r55177, r55178, r55179, r55180, r55181, r55182, r55183, r55184, r55185, r55186, r55187, r55188, r55189;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55170);
        mpfr_init_set_str(r55171, "-5.0071510977473634e+140", 10, MPFR_RNDN);
        mpfr_init(r55172);
        mpfr_init(r55173);
        mpfr_init_set_str(r55174, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55175);
        mpfr_init(r55176);
        mpfr_init_set_str(r55177, "9.0", 10, MPFR_RNDN);
        mpfr_init(r55178);
        mpfr_init(r55179);
        mpfr_init(r55180);
        mpfr_init(r55181);
        mpfr_init(r55182);
        mpfr_init(r55183);
        mpfr_init_set_str(r55184, "27.0", 10, MPFR_RNDN);
        mpfr_init(r55185);
        mpfr_init(r55186);
        mpfr_init(r55187);
        mpfr_init(r55188);
        mpfr_init(r55189);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55170, z, MPFR_RNDN);
        ;
        mpfr_set_si(r55172, mpfr_cmp(r55170, r55171) <= 0, MPFR_RNDN);
        mpfr_set_d(r55173, x, MPFR_RNDN);
        ;
        mpfr_mul(r55175, r55173, r55174, MPFR_RNDN);
        mpfr_set_d(r55176, y, MPFR_RNDN);
        ;
        mpfr_mul(r55178, r55176, r55177, MPFR_RNDN);
        mpfr_set_d(r55179, t, MPFR_RNDN);
        mpfr_mul(r55180, r55170, r55179, MPFR_RNDN);
        mpfr_mul(r55181, r55178, r55180, MPFR_RNDN);
        mpfr_sub(r55182, r55175, r55181, MPFR_RNDN);
        mpfr_set_d(r55183, a, MPFR_RNDN);
        ;
        mpfr_mul(r55185, r55183, r55184, MPFR_RNDN);
        mpfr_set_d(r55186, b, MPFR_RNDN);
        mpfr_mul(r55187, r55185, r55186, MPFR_RNDN);
        mpfr_add(r55188, r55182, r55187, MPFR_RNDN);
        if (mpfr_get_si(r55172, MPFR_RNDN)) { mpfr_set(r55189, r55188, MPFR_RNDN); } else { mpfr_set(r55189, r55188, MPFR_RNDN); };
        return mpfr_get_d(r55189, MPFR_RNDN);
}

