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

double f_if(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r34864 = x;
        float r34865 = 18.0;
        float r34866 = r34864 * r34865;
        float r34867 = y;
        float r34868 = r34866 * r34867;
        float r34869 = z;
        float r34870 = r34868 * r34869;
        float r34871 = t;
        float r34872 = r34870 * r34871;
        float r34873 = a;
        float r34874 = 4.0;
        float r34875 = r34873 * r34874;
        float r34876 = r34875 * r34871;
        float r34877 = r34872 - r34876;
        float r34878 = b;
        float r34879 = c;
        float r34880 = r34878 * r34879;
        float r34881 = r34877 + r34880;
        float r34882 = r34864 * r34874;
        float r34883 = i;
        float r34884 = r34882 * r34883;
        float r34885 = r34881 - r34884;
        float r34886 = j;
        float r34887 = 27.0;
        float r34888 = r34886 * r34887;
        float r34889 = k;
        float r34890 = r34888 * r34889;
        float r34891 = r34885 - r34890;
        return r34891;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r34892 = x;
        double r34893 = 18.0;
        double r34894 = r34892 * r34893;
        double r34895 = y;
        double r34896 = r34894 * r34895;
        double r34897 = z;
        double r34898 = r34896 * r34897;
        double r34899 = t;
        double r34900 = r34898 * r34899;
        double r34901 = a;
        double r34902 = 4.0;
        double r34903 = r34901 * r34902;
        double r34904 = r34903 * r34899;
        double r34905 = r34900 - r34904;
        double r34906 = b;
        double r34907 = c;
        double r34908 = r34906 * r34907;
        double r34909 = r34905 + r34908;
        double r34910 = r34892 * r34902;
        double r34911 = i;
        double r34912 = r34910 * r34911;
        double r34913 = r34909 - r34912;
        double r34914 = j;
        double r34915 = 27.0;
        double r34916 = r34914 * r34915;
        double r34917 = k;
        double r34918 = r34916 * r34917;
        double r34919 = r34913 - r34918;
        return r34919;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r34920 = z;
        float r34921 = -1.1917768530699547e-115;
        bool r34922 = r34920 <= r34921;
        float r34923 = b;
        float r34924 = c;
        float r34925 = r34923 * r34924;
        float r34926 = 4.0;
        float r34927 = x;
        float r34928 = i;
        float r34929 = r34927 * r34928;
        float r34930 = a;
        float r34931 = t;
        float r34932 = r34930 * r34931;
        float r34933 = r34929 + r34932;
        float r34934 = r34926 * r34933;
        float r34935 = r34925 - r34934;
        float r34936 = 18.0;
        float r34937 = r34936 * r34927;
        float r34938 = y;
        float r34939 = r34937 * r34938;
        float r34940 = r34931 * r34939;
        float r34941 = r34940 * r34920;
        float r34942 = 27.0;
        float r34943 = k;
        float r34944 = j;
        float r34945 = r34943 * r34944;
        float r34946 = r34942 * r34945;
        float r34947 = r34941 - r34946;
        float r34948 = r34935 + r34947;
        float r34949 = 1.8701868188734794e-140;
        bool r34950 = r34920 <= r34949;
        float r34951 = cbrt(r34933);
        float r34952 = r34951 * r34951;
        float r34953 = r34952 * r34951;
        float r34954 = r34926 * r34953;
        float r34955 = r34925 - r34954;
        float r34956 = r34938 * r34920;
        float r34957 = r34937 * r34956;
        float r34958 = r34931 * r34957;
        float r34959 = r34958 - r34946;
        float r34960 = r34955 + r34959;
        float r34961 = r34931 * r34927;
        float r34962 = r34938 * r34961;
        float r34963 = r34936 * r34962;
        float r34964 = r34963 * r34920;
        float r34965 = r34964 - r34946;
        float r34966 = r34935 + r34965;
        float r34967 = r34950 ? r34960 : r34966;
        float r34968 = r34922 ? r34948 : r34967;
        return r34968;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r34969 = z;
        double r34970 = -1.1917768530699547e-115;
        bool r34971 = r34969 <= r34970;
        double r34972 = b;
        double r34973 = c;
        double r34974 = r34972 * r34973;
        double r34975 = 4.0;
        double r34976 = x;
        double r34977 = i;
        double r34978 = r34976 * r34977;
        double r34979 = a;
        double r34980 = t;
        double r34981 = r34979 * r34980;
        double r34982 = r34978 + r34981;
        double r34983 = r34975 * r34982;
        double r34984 = r34974 - r34983;
        double r34985 = 18.0;
        double r34986 = r34985 * r34976;
        double r34987 = y;
        double r34988 = r34986 * r34987;
        double r34989 = r34980 * r34988;
        double r34990 = r34989 * r34969;
        double r34991 = 27.0;
        double r34992 = k;
        double r34993 = j;
        double r34994 = r34992 * r34993;
        double r34995 = r34991 * r34994;
        double r34996 = r34990 - r34995;
        double r34997 = r34984 + r34996;
        double r34998 = 1.8701868188734794e-140;
        bool r34999 = r34969 <= r34998;
        double r35000 = cbrt(r34982);
        double r35001 = r35000 * r35000;
        double r35002 = r35001 * r35000;
        double r35003 = r34975 * r35002;
        double r35004 = r34974 - r35003;
        double r35005 = r34987 * r34969;
        double r35006 = r34986 * r35005;
        double r35007 = r34980 * r35006;
        double r35008 = r35007 - r34995;
        double r35009 = r35004 + r35008;
        double r35010 = r34980 * r34976;
        double r35011 = r34987 * r35010;
        double r35012 = r34985 * r35011;
        double r35013 = r35012 * r34969;
        double r35014 = r35013 - r34995;
        double r35015 = r34984 + r35014;
        double r35016 = r34999 ? r35009 : r35015;
        double r35017 = r34971 ? r34997 : r35016;
        return r35017;
}

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 r35018, r35019, r35020, r35021, r35022, r35023, r35024, r35025, r35026, r35027, r35028, r35029, r35030, r35031, r35032, r35033, r35034, r35035, r35036, r35037, r35038, r35039, r35040, r35041, r35042, r35043, r35044, r35045;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r35018);
        mpfr_init_set_str(r35019, "18.0", 10, MPFR_RNDN);
        mpfr_init(r35020);
        mpfr_init(r35021);
        mpfr_init(r35022);
        mpfr_init(r35023);
        mpfr_init(r35024);
        mpfr_init(r35025);
        mpfr_init(r35026);
        mpfr_init(r35027);
        mpfr_init_set_str(r35028, "4.0", 10, MPFR_RNDN);
        mpfr_init(r35029);
        mpfr_init(r35030);
        mpfr_init(r35031);
        mpfr_init(r35032);
        mpfr_init(r35033);
        mpfr_init(r35034);
        mpfr_init(r35035);
        mpfr_init(r35036);
        mpfr_init(r35037);
        mpfr_init(r35038);
        mpfr_init(r35039);
        mpfr_init(r35040);
        mpfr_init_set_str(r35041, "27.0", 10, MPFR_RNDN);
        mpfr_init(r35042);
        mpfr_init(r35043);
        mpfr_init(r35044);
        mpfr_init(r35045);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        mpfr_set_d(r35018, x, MPFR_RNDN);
        ;
        mpfr_mul(r35020, r35018, r35019, MPFR_RNDN);
        mpfr_set_d(r35021, y, MPFR_RNDN);
        mpfr_mul(r35022, r35020, r35021, MPFR_RNDN);
        mpfr_set_d(r35023, z, MPFR_RNDN);
        mpfr_mul(r35024, r35022, r35023, MPFR_RNDN);
        mpfr_set_d(r35025, t, MPFR_RNDN);
        mpfr_mul(r35026, r35024, r35025, MPFR_RNDN);
        mpfr_set_d(r35027, a, MPFR_RNDN);
        ;
        mpfr_mul(r35029, r35027, r35028, MPFR_RNDN);
        mpfr_mul(r35030, r35029, r35025, MPFR_RNDN);
        mpfr_sub(r35031, r35026, r35030, MPFR_RNDN);
        mpfr_set_d(r35032, b, MPFR_RNDN);
        mpfr_set_d(r35033, c, MPFR_RNDN);
        mpfr_mul(r35034, r35032, r35033, MPFR_RNDN);
        mpfr_add(r35035, r35031, r35034, MPFR_RNDN);
        mpfr_mul(r35036, r35018, r35028, MPFR_RNDN);
        mpfr_set_d(r35037, i, MPFR_RNDN);
        mpfr_mul(r35038, r35036, r35037, MPFR_RNDN);
        mpfr_sub(r35039, r35035, r35038, MPFR_RNDN);
        mpfr_set_d(r35040, j, MPFR_RNDN);
        ;
        mpfr_mul(r35042, r35040, r35041, MPFR_RNDN);
        mpfr_set_d(r35043, k, MPFR_RNDN);
        mpfr_mul(r35044, r35042, r35043, MPFR_RNDN);
        mpfr_sub(r35045, r35039, r35044, MPFR_RNDN);
        return mpfr_get_d(r35045, MPFR_RNDN);
}

static mpfr_t r35046, r35047, r35048, r35049, r35050, r35051, r35052, r35053, r35054, r35055, r35056, r35057, r35058, r35059, r35060, r35061, r35062, r35063, r35064, r35065, r35066, r35067, r35068, r35069, r35070, r35071, r35072, r35073, r35074, r35075, r35076, r35077, r35078, r35079, r35080, r35081, r35082, r35083, r35084, r35085, r35086, r35087, r35088, r35089, r35090, r35091, r35092, r35093, r35094;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r35046);
        mpfr_init_set_str(r35047, "-1.1917768530699547e-115", 10, MPFR_RNDN);
        mpfr_init(r35048);
        mpfr_init(r35049);
        mpfr_init(r35050);
        mpfr_init(r35051);
        mpfr_init_set_str(r35052, "4.0", 10, MPFR_RNDN);
        mpfr_init(r35053);
        mpfr_init(r35054);
        mpfr_init(r35055);
        mpfr_init(r35056);
        mpfr_init(r35057);
        mpfr_init(r35058);
        mpfr_init(r35059);
        mpfr_init(r35060);
        mpfr_init(r35061);
        mpfr_init_set_str(r35062, "18.0", 10, MPFR_RNDN);
        mpfr_init(r35063);
        mpfr_init(r35064);
        mpfr_init(r35065);
        mpfr_init(r35066);
        mpfr_init(r35067);
        mpfr_init_set_str(r35068, "27.0", 10, MPFR_RNDN);
        mpfr_init(r35069);
        mpfr_init(r35070);
        mpfr_init(r35071);
        mpfr_init(r35072);
        mpfr_init(r35073);
        mpfr_init(r35074);
        mpfr_init_set_str(r35075, "1.8701868188734794e-140", 10, MPFR_RNDN);
        mpfr_init(r35076);
        mpfr_init(r35077);
        mpfr_init(r35078);
        mpfr_init(r35079);
        mpfr_init(r35080);
        mpfr_init(r35081);
        mpfr_init(r35082);
        mpfr_init(r35083);
        mpfr_init(r35084);
        mpfr_init(r35085);
        mpfr_init(r35086);
        mpfr_init(r35087);
        mpfr_init(r35088);
        mpfr_init(r35089);
        mpfr_init(r35090);
        mpfr_init(r35091);
        mpfr_init(r35092);
        mpfr_init(r35093);
        mpfr_init(r35094);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        mpfr_set_d(r35046, z, MPFR_RNDN);
        ;
        mpfr_set_si(r35048, mpfr_cmp(r35046, r35047) <= 0, MPFR_RNDN);
        mpfr_set_d(r35049, b, MPFR_RNDN);
        mpfr_set_d(r35050, c, MPFR_RNDN);
        mpfr_mul(r35051, r35049, r35050, MPFR_RNDN);
        ;
        mpfr_set_d(r35053, x, MPFR_RNDN);
        mpfr_set_d(r35054, i, MPFR_RNDN);
        mpfr_mul(r35055, r35053, r35054, MPFR_RNDN);
        mpfr_set_d(r35056, a, MPFR_RNDN);
        mpfr_set_d(r35057, t, MPFR_RNDN);
        mpfr_mul(r35058, r35056, r35057, MPFR_RNDN);
        mpfr_add(r35059, r35055, r35058, MPFR_RNDN);
        mpfr_mul(r35060, r35052, r35059, MPFR_RNDN);
        mpfr_sub(r35061, r35051, r35060, MPFR_RNDN);
        ;
        mpfr_mul(r35063, r35062, r35053, MPFR_RNDN);
        mpfr_set_d(r35064, y, MPFR_RNDN);
        mpfr_mul(r35065, r35063, r35064, MPFR_RNDN);
        mpfr_mul(r35066, r35057, r35065, MPFR_RNDN);
        mpfr_mul(r35067, r35066, r35046, MPFR_RNDN);
        ;
        mpfr_set_d(r35069, k, MPFR_RNDN);
        mpfr_set_d(r35070, j, MPFR_RNDN);
        mpfr_mul(r35071, r35069, r35070, MPFR_RNDN);
        mpfr_mul(r35072, r35068, r35071, MPFR_RNDN);
        mpfr_sub(r35073, r35067, r35072, MPFR_RNDN);
        mpfr_add(r35074, r35061, r35073, MPFR_RNDN);
        ;
        mpfr_set_si(r35076, mpfr_cmp(r35046, r35075) <= 0, MPFR_RNDN);
        mpfr_cbrt(r35077, r35059, MPFR_RNDN);
        mpfr_mul(r35078, r35077, r35077, MPFR_RNDN);
        mpfr_mul(r35079, r35078, r35077, MPFR_RNDN);
        mpfr_mul(r35080, r35052, r35079, MPFR_RNDN);
        mpfr_sub(r35081, r35051, r35080, MPFR_RNDN);
        mpfr_mul(r35082, r35064, r35046, MPFR_RNDN);
        mpfr_mul(r35083, r35063, r35082, MPFR_RNDN);
        mpfr_mul(r35084, r35057, r35083, MPFR_RNDN);
        mpfr_sub(r35085, r35084, r35072, MPFR_RNDN);
        mpfr_add(r35086, r35081, r35085, MPFR_RNDN);
        mpfr_mul(r35087, r35057, r35053, MPFR_RNDN);
        mpfr_mul(r35088, r35064, r35087, MPFR_RNDN);
        mpfr_mul(r35089, r35062, r35088, MPFR_RNDN);
        mpfr_mul(r35090, r35089, r35046, MPFR_RNDN);
        mpfr_sub(r35091, r35090, r35072, MPFR_RNDN);
        mpfr_add(r35092, r35061, r35091, MPFR_RNDN);
        if (mpfr_get_si(r35076, MPFR_RNDN)) { mpfr_set(r35093, r35086, MPFR_RNDN); } else { mpfr_set(r35093, r35092, MPFR_RNDN); };
        if (mpfr_get_si(r35048, MPFR_RNDN)) { mpfr_set(r35094, r35074, MPFR_RNDN); } else { mpfr_set(r35094, r35093, MPFR_RNDN); };
        return mpfr_get_d(r35094, MPFR_RNDN);
}

static mpfr_t r35095, r35096, r35097, r35098, r35099, r35100, r35101, r35102, r35103, r35104, r35105, r35106, r35107, r35108, r35109, r35110, r35111, r35112, r35113, r35114, r35115, r35116, r35117, r35118, r35119, r35120, r35121, r35122, r35123, r35124, r35125, r35126, r35127, r35128, r35129, r35130, r35131, r35132, r35133, r35134, r35135, r35136, r35137, r35138, r35139, r35140, r35141, r35142, r35143;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r35095);
        mpfr_init_set_str(r35096, "-1.1917768530699547e-115", 10, MPFR_RNDN);
        mpfr_init(r35097);
        mpfr_init(r35098);
        mpfr_init(r35099);
        mpfr_init(r35100);
        mpfr_init_set_str(r35101, "4.0", 10, MPFR_RNDN);
        mpfr_init(r35102);
        mpfr_init(r35103);
        mpfr_init(r35104);
        mpfr_init(r35105);
        mpfr_init(r35106);
        mpfr_init(r35107);
        mpfr_init(r35108);
        mpfr_init(r35109);
        mpfr_init(r35110);
        mpfr_init_set_str(r35111, "18.0", 10, MPFR_RNDN);
        mpfr_init(r35112);
        mpfr_init(r35113);
        mpfr_init(r35114);
        mpfr_init(r35115);
        mpfr_init(r35116);
        mpfr_init_set_str(r35117, "27.0", 10, MPFR_RNDN);
        mpfr_init(r35118);
        mpfr_init(r35119);
        mpfr_init(r35120);
        mpfr_init(r35121);
        mpfr_init(r35122);
        mpfr_init(r35123);
        mpfr_init_set_str(r35124, "1.8701868188734794e-140", 10, MPFR_RNDN);
        mpfr_init(r35125);
        mpfr_init(r35126);
        mpfr_init(r35127);
        mpfr_init(r35128);
        mpfr_init(r35129);
        mpfr_init(r35130);
        mpfr_init(r35131);
        mpfr_init(r35132);
        mpfr_init(r35133);
        mpfr_init(r35134);
        mpfr_init(r35135);
        mpfr_init(r35136);
        mpfr_init(r35137);
        mpfr_init(r35138);
        mpfr_init(r35139);
        mpfr_init(r35140);
        mpfr_init(r35141);
        mpfr_init(r35142);
        mpfr_init(r35143);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        mpfr_set_d(r35095, z, MPFR_RNDN);
        ;
        mpfr_set_si(r35097, mpfr_cmp(r35095, r35096) <= 0, MPFR_RNDN);
        mpfr_set_d(r35098, b, MPFR_RNDN);
        mpfr_set_d(r35099, c, MPFR_RNDN);
        mpfr_mul(r35100, r35098, r35099, MPFR_RNDN);
        ;
        mpfr_set_d(r35102, x, MPFR_RNDN);
        mpfr_set_d(r35103, i, MPFR_RNDN);
        mpfr_mul(r35104, r35102, r35103, MPFR_RNDN);
        mpfr_set_d(r35105, a, MPFR_RNDN);
        mpfr_set_d(r35106, t, MPFR_RNDN);
        mpfr_mul(r35107, r35105, r35106, MPFR_RNDN);
        mpfr_add(r35108, r35104, r35107, MPFR_RNDN);
        mpfr_mul(r35109, r35101, r35108, MPFR_RNDN);
        mpfr_sub(r35110, r35100, r35109, MPFR_RNDN);
        ;
        mpfr_mul(r35112, r35111, r35102, MPFR_RNDN);
        mpfr_set_d(r35113, y, MPFR_RNDN);
        mpfr_mul(r35114, r35112, r35113, MPFR_RNDN);
        mpfr_mul(r35115, r35106, r35114, MPFR_RNDN);
        mpfr_mul(r35116, r35115, r35095, MPFR_RNDN);
        ;
        mpfr_set_d(r35118, k, MPFR_RNDN);
        mpfr_set_d(r35119, j, MPFR_RNDN);
        mpfr_mul(r35120, r35118, r35119, MPFR_RNDN);
        mpfr_mul(r35121, r35117, r35120, MPFR_RNDN);
        mpfr_sub(r35122, r35116, r35121, MPFR_RNDN);
        mpfr_add(r35123, r35110, r35122, MPFR_RNDN);
        ;
        mpfr_set_si(r35125, mpfr_cmp(r35095, r35124) <= 0, MPFR_RNDN);
        mpfr_cbrt(r35126, r35108, MPFR_RNDN);
        mpfr_mul(r35127, r35126, r35126, MPFR_RNDN);
        mpfr_mul(r35128, r35127, r35126, MPFR_RNDN);
        mpfr_mul(r35129, r35101, r35128, MPFR_RNDN);
        mpfr_sub(r35130, r35100, r35129, MPFR_RNDN);
        mpfr_mul(r35131, r35113, r35095, MPFR_RNDN);
        mpfr_mul(r35132, r35112, r35131, MPFR_RNDN);
        mpfr_mul(r35133, r35106, r35132, MPFR_RNDN);
        mpfr_sub(r35134, r35133, r35121, MPFR_RNDN);
        mpfr_add(r35135, r35130, r35134, MPFR_RNDN);
        mpfr_mul(r35136, r35106, r35102, MPFR_RNDN);
        mpfr_mul(r35137, r35113, r35136, MPFR_RNDN);
        mpfr_mul(r35138, r35111, r35137, MPFR_RNDN);
        mpfr_mul(r35139, r35138, r35095, MPFR_RNDN);
        mpfr_sub(r35140, r35139, r35121, MPFR_RNDN);
        mpfr_add(r35141, r35110, r35140, MPFR_RNDN);
        if (mpfr_get_si(r35125, MPFR_RNDN)) { mpfr_set(r35142, r35135, MPFR_RNDN); } else { mpfr_set(r35142, r35141, MPFR_RNDN); };
        if (mpfr_get_si(r35097, MPFR_RNDN)) { mpfr_set(r35143, r35123, MPFR_RNDN); } else { mpfr_set(r35143, r35142, MPFR_RNDN); };
        return mpfr_get_d(r35143, MPFR_RNDN);
}

