#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 r31767 = x;
        float r31768 = 18.0f;
        float r31769 = r31767 * r31768;
        float r31770 = y;
        float r31771 = r31769 * r31770;
        float r31772 = z;
        float r31773 = r31771 * r31772;
        float r31774 = t;
        float r31775 = r31773 * r31774;
        float r31776 = a;
        float r31777 = 4.0f;
        float r31778 = r31776 * r31777;
        float r31779 = r31778 * r31774;
        float r31780 = r31775 - r31779;
        float r31781 = b;
        float r31782 = c;
        float r31783 = r31781 * r31782;
        float r31784 = r31780 + r31783;
        float r31785 = r31767 * r31777;
        float r31786 = i;
        float r31787 = r31785 * r31786;
        float r31788 = r31784 - r31787;
        float r31789 = j;
        float r31790 = 27.0f;
        float r31791 = r31789 * r31790;
        float r31792 = k;
        float r31793 = r31791 * r31792;
        float r31794 = r31788 - r31793;
        return r31794;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r31795 = x;
        double r31796 = 18.0;
        double r31797 = r31795 * r31796;
        double r31798 = y;
        double r31799 = r31797 * r31798;
        double r31800 = z;
        double r31801 = r31799 * r31800;
        double r31802 = t;
        double r31803 = r31801 * r31802;
        double r31804 = a;
        double r31805 = 4.0;
        double r31806 = r31804 * r31805;
        double r31807 = r31806 * r31802;
        double r31808 = r31803 - r31807;
        double r31809 = b;
        double r31810 = c;
        double r31811 = r31809 * r31810;
        double r31812 = r31808 + r31811;
        double r31813 = r31795 * r31805;
        double r31814 = i;
        double r31815 = r31813 * r31814;
        double r31816 = r31812 - r31815;
        double r31817 = j;
        double r31818 = 27.0;
        double r31819 = r31817 * r31818;
        double r31820 = k;
        double r31821 = r31819 * r31820;
        double r31822 = r31816 - r31821;
        return r31822;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r31823 = y;
        float r31824 = -28634956.806383856f;
        bool r31825 = r31823 <= r31824;
        float r31826 = b;
        float r31827 = c;
        float r31828 = r31826 * r31827;
        float r31829 = 4.0f;
        float r31830 = i;
        float r31831 = x;
        float r31832 = r31830 * r31831;
        float r31833 = a;
        float r31834 = t;
        float r31835 = r31833 * r31834;
        float r31836 = r31832 + r31835;
        float r31837 = r31829 * r31836;
        float r31838 = r31828 - r31837;
        float r31839 = 18.0f;
        float r31840 = r31831 * r31834;
        float r31841 = z;
        float r31842 = r31840 * r31841;
        float r31843 = r31839 * r31842;
        float r31844 = r31823 * r31843;
        float r31845 = 27.0f;
        float r31846 = j;
        float r31847 = r31845 * r31846;
        float r31848 = k;
        float r31849 = r31847 * r31848;
        float r31850 = r31844 - r31849;
        float r31851 = r31838 + r31850;
        float r31852 = 0.00028936941006074067f;
        bool r31853 = r31823 <= r31852;
        float r31854 = r31827 * r31826;
        float r31855 = r31834 * r31833;
        float r31856 = r31855 + r31832;
        float r31857 = r31829 * r31856;
        float r31858 = r31854 - r31857;
        float r31859 = r31846 * r31845;
        float r31860 = r31859 * r31848;
        float r31861 = r31834 * r31823;
        float r31862 = r31839 * r31831;
        float r31863 = r31861 * r31862;
        float r31864 = r31863 * r31841;
        float r31865 = r31860 - r31864;
        float r31866 = r31858 - r31865;
        float r31867 = r31853 ? r31866 : r31851;
        float r31868 = r31825 ? r31851 : r31867;
        return r31868;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r31869 = y;
        double r31870 = -28634956.806383856;
        bool r31871 = r31869 <= r31870;
        double r31872 = b;
        double r31873 = c;
        double r31874 = r31872 * r31873;
        double r31875 = 4.0;
        double r31876 = i;
        double r31877 = x;
        double r31878 = r31876 * r31877;
        double r31879 = a;
        double r31880 = t;
        double r31881 = r31879 * r31880;
        double r31882 = r31878 + r31881;
        double r31883 = r31875 * r31882;
        double r31884 = r31874 - r31883;
        double r31885 = 18.0;
        double r31886 = r31877 * r31880;
        double r31887 = z;
        double r31888 = r31886 * r31887;
        double r31889 = r31885 * r31888;
        double r31890 = r31869 * r31889;
        double r31891 = 27.0;
        double r31892 = j;
        double r31893 = r31891 * r31892;
        double r31894 = k;
        double r31895 = r31893 * r31894;
        double r31896 = r31890 - r31895;
        double r31897 = r31884 + r31896;
        double r31898 = 0.00028936941006074067;
        bool r31899 = r31869 <= r31898;
        double r31900 = r31873 * r31872;
        double r31901 = r31880 * r31879;
        double r31902 = r31901 + r31878;
        double r31903 = r31875 * r31902;
        double r31904 = r31900 - r31903;
        double r31905 = r31892 * r31891;
        double r31906 = r31905 * r31894;
        double r31907 = r31880 * r31869;
        double r31908 = r31885 * r31877;
        double r31909 = r31907 * r31908;
        double r31910 = r31909 * r31887;
        double r31911 = r31906 - r31910;
        double r31912 = r31904 - r31911;
        double r31913 = r31899 ? r31912 : r31897;
        double r31914 = r31871 ? r31897 : r31913;
        return r31914;
}

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 r31915, r31916, r31917, r31918, r31919, r31920, r31921, r31922, r31923, r31924, r31925, r31926, r31927, r31928, r31929, r31930, r31931, r31932, r31933, r31934, r31935, r31936, r31937, r31938, r31939, r31940, r31941, r31942;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r31915);
        mpfr_init_set_str(r31916, "18.0", 10, MPFR_RNDN);
        mpfr_init(r31917);
        mpfr_init(r31918);
        mpfr_init(r31919);
        mpfr_init(r31920);
        mpfr_init(r31921);
        mpfr_init(r31922);
        mpfr_init(r31923);
        mpfr_init(r31924);
        mpfr_init_set_str(r31925, "4.0", 10, MPFR_RNDN);
        mpfr_init(r31926);
        mpfr_init(r31927);
        mpfr_init(r31928);
        mpfr_init(r31929);
        mpfr_init(r31930);
        mpfr_init(r31931);
        mpfr_init(r31932);
        mpfr_init(r31933);
        mpfr_init(r31934);
        mpfr_init(r31935);
        mpfr_init(r31936);
        mpfr_init(r31937);
        mpfr_init_set_str(r31938, "27.0", 10, MPFR_RNDN);
        mpfr_init(r31939);
        mpfr_init(r31940);
        mpfr_init(r31941);
        mpfr_init(r31942);
}

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(r31915, x, MPFR_RNDN);
        ;
        mpfr_mul(r31917, r31915, r31916, MPFR_RNDN);
        mpfr_set_d(r31918, y, MPFR_RNDN);
        mpfr_mul(r31919, r31917, r31918, MPFR_RNDN);
        mpfr_set_d(r31920, z, MPFR_RNDN);
        mpfr_mul(r31921, r31919, r31920, MPFR_RNDN);
        mpfr_set_d(r31922, t, MPFR_RNDN);
        mpfr_mul(r31923, r31921, r31922, MPFR_RNDN);
        mpfr_set_d(r31924, a, MPFR_RNDN);
        ;
        mpfr_mul(r31926, r31924, r31925, MPFR_RNDN);
        mpfr_mul(r31927, r31926, r31922, MPFR_RNDN);
        mpfr_sub(r31928, r31923, r31927, MPFR_RNDN);
        mpfr_set_d(r31929, b, MPFR_RNDN);
        mpfr_set_d(r31930, c, MPFR_RNDN);
        mpfr_mul(r31931, r31929, r31930, MPFR_RNDN);
        mpfr_add(r31932, r31928, r31931, MPFR_RNDN);
        mpfr_mul(r31933, r31915, r31925, MPFR_RNDN);
        mpfr_set_d(r31934, i, MPFR_RNDN);
        mpfr_mul(r31935, r31933, r31934, MPFR_RNDN);
        mpfr_sub(r31936, r31932, r31935, MPFR_RNDN);
        mpfr_set_d(r31937, j, MPFR_RNDN);
        ;
        mpfr_mul(r31939, r31937, r31938, MPFR_RNDN);
        mpfr_set_d(r31940, k, MPFR_RNDN);
        mpfr_mul(r31941, r31939, r31940, MPFR_RNDN);
        mpfr_sub(r31942, r31936, r31941, MPFR_RNDN);
        return mpfr_get_d(r31942, MPFR_RNDN);
}

static mpfr_t r31943, r31944, r31945, r31946, r31947, r31948, r31949, r31950, r31951, r31952, r31953, r31954, r31955, r31956, r31957, r31958, r31959, r31960, r31961, r31962, r31963, r31964, r31965, r31966, r31967, r31968, r31969, r31970, r31971, r31972, r31973, r31974, r31975, r31976, r31977, r31978, r31979, r31980, r31981, r31982, r31983, r31984, r31985, r31986, r31987, r31988;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r31943);
        mpfr_init_set_str(r31944, "-28634956.806383856", 10, MPFR_RNDN);
        mpfr_init(r31945);
        mpfr_init(r31946);
        mpfr_init(r31947);
        mpfr_init(r31948);
        mpfr_init_set_str(r31949, "4.0", 10, MPFR_RNDN);
        mpfr_init(r31950);
        mpfr_init(r31951);
        mpfr_init(r31952);
        mpfr_init(r31953);
        mpfr_init(r31954);
        mpfr_init(r31955);
        mpfr_init(r31956);
        mpfr_init(r31957);
        mpfr_init(r31958);
        mpfr_init_set_str(r31959, "18.0", 10, MPFR_RNDN);
        mpfr_init(r31960);
        mpfr_init(r31961);
        mpfr_init(r31962);
        mpfr_init(r31963);
        mpfr_init(r31964);
        mpfr_init_set_str(r31965, "27.0", 10, MPFR_RNDN);
        mpfr_init(r31966);
        mpfr_init(r31967);
        mpfr_init(r31968);
        mpfr_init(r31969);
        mpfr_init(r31970);
        mpfr_init(r31971);
        mpfr_init_set_str(r31972, "0.00028936941006074067", 10, MPFR_RNDN);
        mpfr_init(r31973);
        mpfr_init(r31974);
        mpfr_init(r31975);
        mpfr_init(r31976);
        mpfr_init(r31977);
        mpfr_init(r31978);
        mpfr_init(r31979);
        mpfr_init(r31980);
        mpfr_init(r31981);
        mpfr_init(r31982);
        mpfr_init(r31983);
        mpfr_init(r31984);
        mpfr_init(r31985);
        mpfr_init(r31986);
        mpfr_init(r31987);
        mpfr_init(r31988);
}

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(r31943, y, MPFR_RNDN);
        ;
        mpfr_set_si(r31945, mpfr_cmp(r31943, r31944) <= 0, MPFR_RNDN);
        mpfr_set_d(r31946, b, MPFR_RNDN);
        mpfr_set_d(r31947, c, MPFR_RNDN);
        mpfr_mul(r31948, r31946, r31947, MPFR_RNDN);
        ;
        mpfr_set_d(r31950, i, MPFR_RNDN);
        mpfr_set_d(r31951, x, MPFR_RNDN);
        mpfr_mul(r31952, r31950, r31951, MPFR_RNDN);
        mpfr_set_d(r31953, a, MPFR_RNDN);
        mpfr_set_d(r31954, t, MPFR_RNDN);
        mpfr_mul(r31955, r31953, r31954, MPFR_RNDN);
        mpfr_add(r31956, r31952, r31955, MPFR_RNDN);
        mpfr_mul(r31957, r31949, r31956, MPFR_RNDN);
        mpfr_sub(r31958, r31948, r31957, MPFR_RNDN);
        ;
        mpfr_mul(r31960, r31951, r31954, MPFR_RNDN);
        mpfr_set_d(r31961, z, MPFR_RNDN);
        mpfr_mul(r31962, r31960, r31961, MPFR_RNDN);
        mpfr_mul(r31963, r31959, r31962, MPFR_RNDN);
        mpfr_mul(r31964, r31943, r31963, MPFR_RNDN);
        ;
        mpfr_set_d(r31966, j, MPFR_RNDN);
        mpfr_mul(r31967, r31965, r31966, MPFR_RNDN);
        mpfr_set_d(r31968, k, MPFR_RNDN);
        mpfr_mul(r31969, r31967, r31968, MPFR_RNDN);
        mpfr_sub(r31970, r31964, r31969, MPFR_RNDN);
        mpfr_add(r31971, r31958, r31970, MPFR_RNDN);
        ;
        mpfr_set_si(r31973, mpfr_cmp(r31943, r31972) <= 0, MPFR_RNDN);
        mpfr_mul(r31974, r31947, r31946, MPFR_RNDN);
        mpfr_mul(r31975, r31954, r31953, MPFR_RNDN);
        mpfr_add(r31976, r31975, r31952, MPFR_RNDN);
        mpfr_mul(r31977, r31949, r31976, MPFR_RNDN);
        mpfr_sub(r31978, r31974, r31977, MPFR_RNDN);
        mpfr_mul(r31979, r31966, r31965, MPFR_RNDN);
        mpfr_mul(r31980, r31979, r31968, MPFR_RNDN);
        mpfr_mul(r31981, r31954, r31943, MPFR_RNDN);
        mpfr_mul(r31982, r31959, r31951, MPFR_RNDN);
        mpfr_mul(r31983, r31981, r31982, MPFR_RNDN);
        mpfr_mul(r31984, r31983, r31961, MPFR_RNDN);
        mpfr_sub(r31985, r31980, r31984, MPFR_RNDN);
        mpfr_sub(r31986, r31978, r31985, MPFR_RNDN);
        if (mpfr_get_si(r31973, MPFR_RNDN)) { mpfr_set(r31987, r31986, MPFR_RNDN); } else { mpfr_set(r31987, r31971, MPFR_RNDN); };
        if (mpfr_get_si(r31945, MPFR_RNDN)) { mpfr_set(r31988, r31971, MPFR_RNDN); } else { mpfr_set(r31988, r31987, MPFR_RNDN); };
        return mpfr_get_d(r31988, MPFR_RNDN);
}

static mpfr_t r31989, r31990, r31991, r31992, r31993, r31994, r31995, r31996, r31997, r31998, r31999, r32000, r32001, r32002, r32003, r32004, r32005, r32006, r32007, r32008, r32009, r32010, r32011, r32012, r32013, r32014, r32015, r32016, r32017, r32018, r32019, r32020, r32021, r32022, r32023, r32024, r32025, r32026, r32027, r32028, r32029, r32030, r32031, r32032, r32033, r32034;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r31989);
        mpfr_init_set_str(r31990, "-28634956.806383856", 10, MPFR_RNDN);
        mpfr_init(r31991);
        mpfr_init(r31992);
        mpfr_init(r31993);
        mpfr_init(r31994);
        mpfr_init_set_str(r31995, "4.0", 10, MPFR_RNDN);
        mpfr_init(r31996);
        mpfr_init(r31997);
        mpfr_init(r31998);
        mpfr_init(r31999);
        mpfr_init(r32000);
        mpfr_init(r32001);
        mpfr_init(r32002);
        mpfr_init(r32003);
        mpfr_init(r32004);
        mpfr_init_set_str(r32005, "18.0", 10, MPFR_RNDN);
        mpfr_init(r32006);
        mpfr_init(r32007);
        mpfr_init(r32008);
        mpfr_init(r32009);
        mpfr_init(r32010);
        mpfr_init_set_str(r32011, "27.0", 10, MPFR_RNDN);
        mpfr_init(r32012);
        mpfr_init(r32013);
        mpfr_init(r32014);
        mpfr_init(r32015);
        mpfr_init(r32016);
        mpfr_init(r32017);
        mpfr_init_set_str(r32018, "0.00028936941006074067", 10, MPFR_RNDN);
        mpfr_init(r32019);
        mpfr_init(r32020);
        mpfr_init(r32021);
        mpfr_init(r32022);
        mpfr_init(r32023);
        mpfr_init(r32024);
        mpfr_init(r32025);
        mpfr_init(r32026);
        mpfr_init(r32027);
        mpfr_init(r32028);
        mpfr_init(r32029);
        mpfr_init(r32030);
        mpfr_init(r32031);
        mpfr_init(r32032);
        mpfr_init(r32033);
        mpfr_init(r32034);
}

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(r31989, y, MPFR_RNDN);
        ;
        mpfr_set_si(r31991, mpfr_cmp(r31989, r31990) <= 0, MPFR_RNDN);
        mpfr_set_d(r31992, b, MPFR_RNDN);
        mpfr_set_d(r31993, c, MPFR_RNDN);
        mpfr_mul(r31994, r31992, r31993, MPFR_RNDN);
        ;
        mpfr_set_d(r31996, i, MPFR_RNDN);
        mpfr_set_d(r31997, x, MPFR_RNDN);
        mpfr_mul(r31998, r31996, r31997, MPFR_RNDN);
        mpfr_set_d(r31999, a, MPFR_RNDN);
        mpfr_set_d(r32000, t, MPFR_RNDN);
        mpfr_mul(r32001, r31999, r32000, MPFR_RNDN);
        mpfr_add(r32002, r31998, r32001, MPFR_RNDN);
        mpfr_mul(r32003, r31995, r32002, MPFR_RNDN);
        mpfr_sub(r32004, r31994, r32003, MPFR_RNDN);
        ;
        mpfr_mul(r32006, r31997, r32000, MPFR_RNDN);
        mpfr_set_d(r32007, z, MPFR_RNDN);
        mpfr_mul(r32008, r32006, r32007, MPFR_RNDN);
        mpfr_mul(r32009, r32005, r32008, MPFR_RNDN);
        mpfr_mul(r32010, r31989, r32009, MPFR_RNDN);
        ;
        mpfr_set_d(r32012, j, MPFR_RNDN);
        mpfr_mul(r32013, r32011, r32012, MPFR_RNDN);
        mpfr_set_d(r32014, k, MPFR_RNDN);
        mpfr_mul(r32015, r32013, r32014, MPFR_RNDN);
        mpfr_sub(r32016, r32010, r32015, MPFR_RNDN);
        mpfr_add(r32017, r32004, r32016, MPFR_RNDN);
        ;
        mpfr_set_si(r32019, mpfr_cmp(r31989, r32018) <= 0, MPFR_RNDN);
        mpfr_mul(r32020, r31993, r31992, MPFR_RNDN);
        mpfr_mul(r32021, r32000, r31999, MPFR_RNDN);
        mpfr_add(r32022, r32021, r31998, MPFR_RNDN);
        mpfr_mul(r32023, r31995, r32022, MPFR_RNDN);
        mpfr_sub(r32024, r32020, r32023, MPFR_RNDN);
        mpfr_mul(r32025, r32012, r32011, MPFR_RNDN);
        mpfr_mul(r32026, r32025, r32014, MPFR_RNDN);
        mpfr_mul(r32027, r32000, r31989, MPFR_RNDN);
        mpfr_mul(r32028, r32005, r31997, MPFR_RNDN);
        mpfr_mul(r32029, r32027, r32028, MPFR_RNDN);
        mpfr_mul(r32030, r32029, r32007, MPFR_RNDN);
        mpfr_sub(r32031, r32026, r32030, MPFR_RNDN);
        mpfr_sub(r32032, r32024, r32031, MPFR_RNDN);
        if (mpfr_get_si(r32019, MPFR_RNDN)) { mpfr_set(r32033, r32032, MPFR_RNDN); } else { mpfr_set(r32033, r32017, MPFR_RNDN); };
        if (mpfr_get_si(r31991, MPFR_RNDN)) { mpfr_set(r32034, r32017, MPFR_RNDN); } else { mpfr_set(r32034, r32033, MPFR_RNDN); };
        return mpfr_get_d(r32034, MPFR_RNDN);
}

