#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 r54967 = x;
        float r54968 = 2.0;
        float r54969 = r54967 * r54968;
        float r54970 = y;
        float r54971 = 9.0;
        float r54972 = r54970 * r54971;
        float r54973 = z;
        float r54974 = r54972 * r54973;
        float r54975 = t;
        float r54976 = r54974 * r54975;
        float r54977 = r54969 - r54976;
        float r54978 = a;
        float r54979 = 27.0;
        float r54980 = r54978 * r54979;
        float r54981 = b;
        float r54982 = r54980 * r54981;
        float r54983 = r54977 + r54982;
        return r54983;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r54984 = x;
        double r54985 = 2.0;
        double r54986 = r54984 * r54985;
        double r54987 = y;
        double r54988 = 9.0;
        double r54989 = r54987 * r54988;
        double r54990 = z;
        double r54991 = r54989 * r54990;
        double r54992 = t;
        double r54993 = r54991 * r54992;
        double r54994 = r54986 - r54993;
        double r54995 = a;
        double r54996 = 27.0;
        double r54997 = r54995 * r54996;
        double r54998 = b;
        double r54999 = r54997 * r54998;
        double r55000 = r54994 + r54999;
        return r55000;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r55001 = y;
        float r55002 = -6.798242451867544e-115;
        bool r55003 = r55001 <= r55002;
        float r55004 = x;
        float r55005 = 2.0;
        float r55006 = r55004 * r55005;
        float r55007 = 9.0;
        float r55008 = r55001 * r55007;
        float r55009 = z;
        float r55010 = t;
        float r55011 = r55009 * r55010;
        float r55012 = r55008 * r55011;
        float r55013 = r55006 - r55012;
        float r55014 = a;
        float r55015 = 27.0;
        float r55016 = r55014 * r55015;
        float r55017 = b;
        float r55018 = r55016 * r55017;
        float r55019 = r55013 + r55018;
        float r55020 = 4.7969606968471655e-108;
        bool r55021 = r55001 <= r55020;
        float r55022 = r55007 * r55009;
        float r55023 = r55001 * r55022;
        float r55024 = r55023 * r55010;
        float r55025 = r55006 - r55024;
        float r55026 = r55025 + r55018;
        float r55027 = r55021 ? r55026 : r55019;
        float r55028 = r55003 ? r55019 : r55027;
        return r55028;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r55029 = y;
        double r55030 = -6.798242451867544e-115;
        bool r55031 = r55029 <= r55030;
        double r55032 = x;
        double r55033 = 2.0;
        double r55034 = r55032 * r55033;
        double r55035 = 9.0;
        double r55036 = r55029 * r55035;
        double r55037 = z;
        double r55038 = t;
        double r55039 = r55037 * r55038;
        double r55040 = r55036 * r55039;
        double r55041 = r55034 - r55040;
        double r55042 = a;
        double r55043 = 27.0;
        double r55044 = r55042 * r55043;
        double r55045 = b;
        double r55046 = r55044 * r55045;
        double r55047 = r55041 + r55046;
        double r55048 = 4.7969606968471655e-108;
        bool r55049 = r55029 <= r55048;
        double r55050 = r55035 * r55037;
        double r55051 = r55029 * r55050;
        double r55052 = r55051 * r55038;
        double r55053 = r55034 - r55052;
        double r55054 = r55053 + r55046;
        double r55055 = r55049 ? r55054 : r55047;
        double r55056 = r55031 ? r55047 : r55055;
        return r55056;
}

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 r55057, r55058, r55059, r55060, r55061, r55062, r55063, r55064, r55065, r55066, r55067, r55068, r55069, r55070, r55071, r55072, r55073;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55057);
        mpfr_init_set_str(r55058, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55059);
        mpfr_init(r55060);
        mpfr_init_set_str(r55061, "9.0", 10, MPFR_RNDN);
        mpfr_init(r55062);
        mpfr_init(r55063);
        mpfr_init(r55064);
        mpfr_init(r55065);
        mpfr_init(r55066);
        mpfr_init(r55067);
        mpfr_init(r55068);
        mpfr_init_set_str(r55069, "27.0", 10, MPFR_RNDN);
        mpfr_init(r55070);
        mpfr_init(r55071);
        mpfr_init(r55072);
        mpfr_init(r55073);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55057, x, MPFR_RNDN);
        ;
        mpfr_mul(r55059, r55057, r55058, MPFR_RNDN);
        mpfr_set_d(r55060, y, MPFR_RNDN);
        ;
        mpfr_mul(r55062, r55060, r55061, MPFR_RNDN);
        mpfr_set_d(r55063, z, MPFR_RNDN);
        mpfr_mul(r55064, r55062, r55063, MPFR_RNDN);
        mpfr_set_d(r55065, t, MPFR_RNDN);
        mpfr_mul(r55066, r55064, r55065, MPFR_RNDN);
        mpfr_sub(r55067, r55059, r55066, MPFR_RNDN);
        mpfr_set_d(r55068, a, MPFR_RNDN);
        ;
        mpfr_mul(r55070, r55068, r55069, MPFR_RNDN);
        mpfr_set_d(r55071, b, MPFR_RNDN);
        mpfr_mul(r55072, r55070, r55071, MPFR_RNDN);
        mpfr_add(r55073, r55067, r55072, MPFR_RNDN);
        return mpfr_get_d(r55073, MPFR_RNDN);
}

static mpfr_t r55074, r55075, r55076, r55077, r55078, r55079, r55080, r55081, r55082, r55083, r55084, r55085, r55086, r55087, r55088, r55089, r55090, r55091, r55092, r55093, r55094, r55095, r55096, r55097, r55098, r55099, r55100, r55101;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55074);
        mpfr_init_set_str(r55075, "-6.798242451867544e-115", 10, MPFR_RNDN);
        mpfr_init(r55076);
        mpfr_init(r55077);
        mpfr_init_set_str(r55078, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55079);
        mpfr_init_set_str(r55080, "9.0", 10, MPFR_RNDN);
        mpfr_init(r55081);
        mpfr_init(r55082);
        mpfr_init(r55083);
        mpfr_init(r55084);
        mpfr_init(r55085);
        mpfr_init(r55086);
        mpfr_init(r55087);
        mpfr_init_set_str(r55088, "27.0", 10, MPFR_RNDN);
        mpfr_init(r55089);
        mpfr_init(r55090);
        mpfr_init(r55091);
        mpfr_init(r55092);
        mpfr_init_set_str(r55093, "4.7969606968471655e-108", 10, MPFR_RNDN);
        mpfr_init(r55094);
        mpfr_init(r55095);
        mpfr_init(r55096);
        mpfr_init(r55097);
        mpfr_init(r55098);
        mpfr_init(r55099);
        mpfr_init(r55100);
        mpfr_init(r55101);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55074, y, MPFR_RNDN);
        ;
        mpfr_set_si(r55076, mpfr_cmp(r55074, r55075) <= 0, MPFR_RNDN);
        mpfr_set_d(r55077, x, MPFR_RNDN);
        ;
        mpfr_mul(r55079, r55077, r55078, MPFR_RNDN);
        ;
        mpfr_mul(r55081, r55074, r55080, MPFR_RNDN);
        mpfr_set_d(r55082, z, MPFR_RNDN);
        mpfr_set_d(r55083, t, MPFR_RNDN);
        mpfr_mul(r55084, r55082, r55083, MPFR_RNDN);
        mpfr_mul(r55085, r55081, r55084, MPFR_RNDN);
        mpfr_sub(r55086, r55079, r55085, MPFR_RNDN);
        mpfr_set_d(r55087, a, MPFR_RNDN);
        ;
        mpfr_mul(r55089, r55087, r55088, MPFR_RNDN);
        mpfr_set_d(r55090, b, MPFR_RNDN);
        mpfr_mul(r55091, r55089, r55090, MPFR_RNDN);
        mpfr_add(r55092, r55086, r55091, MPFR_RNDN);
        ;
        mpfr_set_si(r55094, mpfr_cmp(r55074, r55093) <= 0, MPFR_RNDN);
        mpfr_mul(r55095, r55080, r55082, MPFR_RNDN);
        mpfr_mul(r55096, r55074, r55095, MPFR_RNDN);
        mpfr_mul(r55097, r55096, r55083, MPFR_RNDN);
        mpfr_sub(r55098, r55079, r55097, MPFR_RNDN);
        mpfr_add(r55099, r55098, r55091, MPFR_RNDN);
        if (mpfr_get_si(r55094, MPFR_RNDN)) { mpfr_set(r55100, r55099, MPFR_RNDN); } else { mpfr_set(r55100, r55092, MPFR_RNDN); };
        if (mpfr_get_si(r55076, MPFR_RNDN)) { mpfr_set(r55101, r55092, MPFR_RNDN); } else { mpfr_set(r55101, r55100, MPFR_RNDN); };
        return mpfr_get_d(r55101, MPFR_RNDN);
}

static mpfr_t r55102, r55103, r55104, r55105, r55106, r55107, r55108, r55109, r55110, r55111, r55112, r55113, r55114, r55115, r55116, r55117, r55118, r55119, r55120, r55121, r55122, r55123, r55124, r55125, r55126, r55127, r55128, r55129;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55102);
        mpfr_init_set_str(r55103, "-6.798242451867544e-115", 10, MPFR_RNDN);
        mpfr_init(r55104);
        mpfr_init(r55105);
        mpfr_init_set_str(r55106, "2.0", 10, MPFR_RNDN);
        mpfr_init(r55107);
        mpfr_init_set_str(r55108, "9.0", 10, MPFR_RNDN);
        mpfr_init(r55109);
        mpfr_init(r55110);
        mpfr_init(r55111);
        mpfr_init(r55112);
        mpfr_init(r55113);
        mpfr_init(r55114);
        mpfr_init(r55115);
        mpfr_init_set_str(r55116, "27.0", 10, MPFR_RNDN);
        mpfr_init(r55117);
        mpfr_init(r55118);
        mpfr_init(r55119);
        mpfr_init(r55120);
        mpfr_init_set_str(r55121, "4.7969606968471655e-108", 10, MPFR_RNDN);
        mpfr_init(r55122);
        mpfr_init(r55123);
        mpfr_init(r55124);
        mpfr_init(r55125);
        mpfr_init(r55126);
        mpfr_init(r55127);
        mpfr_init(r55128);
        mpfr_init(r55129);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r55102, y, MPFR_RNDN);
        ;
        mpfr_set_si(r55104, mpfr_cmp(r55102, r55103) <= 0, MPFR_RNDN);
        mpfr_set_d(r55105, x, MPFR_RNDN);
        ;
        mpfr_mul(r55107, r55105, r55106, MPFR_RNDN);
        ;
        mpfr_mul(r55109, r55102, r55108, MPFR_RNDN);
        mpfr_set_d(r55110, z, MPFR_RNDN);
        mpfr_set_d(r55111, t, MPFR_RNDN);
        mpfr_mul(r55112, r55110, r55111, MPFR_RNDN);
        mpfr_mul(r55113, r55109, r55112, MPFR_RNDN);
        mpfr_sub(r55114, r55107, r55113, MPFR_RNDN);
        mpfr_set_d(r55115, a, MPFR_RNDN);
        ;
        mpfr_mul(r55117, r55115, r55116, MPFR_RNDN);
        mpfr_set_d(r55118, b, MPFR_RNDN);
        mpfr_mul(r55119, r55117, r55118, MPFR_RNDN);
        mpfr_add(r55120, r55114, r55119, MPFR_RNDN);
        ;
        mpfr_set_si(r55122, mpfr_cmp(r55102, r55121) <= 0, MPFR_RNDN);
        mpfr_mul(r55123, r55108, r55110, MPFR_RNDN);
        mpfr_mul(r55124, r55102, r55123, MPFR_RNDN);
        mpfr_mul(r55125, r55124, r55111, MPFR_RNDN);
        mpfr_sub(r55126, r55107, r55125, MPFR_RNDN);
        mpfr_add(r55127, r55126, r55119, MPFR_RNDN);
        if (mpfr_get_si(r55122, MPFR_RNDN)) { mpfr_set(r55128, r55127, MPFR_RNDN); } else { mpfr_set(r55128, r55120, MPFR_RNDN); };
        if (mpfr_get_si(r55104, MPFR_RNDN)) { mpfr_set(r55129, r55120, MPFR_RNDN); } else { mpfr_set(r55129, r55128, MPFR_RNDN); };
        return mpfr_get_d(r55129, MPFR_RNDN);
}

