#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 r54823 = x;
        float r54824 = 2.0;
        float r54825 = r54823 * r54824;
        float r54826 = y;
        float r54827 = 9.0;
        float r54828 = r54826 * r54827;
        float r54829 = z;
        float r54830 = r54828 * r54829;
        float r54831 = t;
        float r54832 = r54830 * r54831;
        float r54833 = r54825 - r54832;
        float r54834 = a;
        float r54835 = 27.0;
        float r54836 = r54834 * r54835;
        float r54837 = b;
        float r54838 = r54836 * r54837;
        float r54839 = r54833 + r54838;
        return r54839;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r54840 = x;
        double r54841 = 2.0;
        double r54842 = r54840 * r54841;
        double r54843 = y;
        double r54844 = 9.0;
        double r54845 = r54843 * r54844;
        double r54846 = z;
        double r54847 = r54845 * r54846;
        double r54848 = t;
        double r54849 = r54847 * r54848;
        double r54850 = r54842 - r54849;
        double r54851 = a;
        double r54852 = 27.0;
        double r54853 = r54851 * r54852;
        double r54854 = b;
        double r54855 = r54853 * r54854;
        double r54856 = r54850 + r54855;
        return r54856;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r54857 = z;
        float r54858 = -5.0071510977473634e+140;
        bool r54859 = r54857 <= r54858;
        float r54860 = 27.0;
        float r54861 = b;
        float r54862 = a;
        float r54863 = r54861 * r54862;
        float r54864 = r54860 * r54863;
        float r54865 = 2.0;
        float r54866 = x;
        float r54867 = r54865 * r54866;
        float r54868 = r54864 + r54867;
        float r54869 = 9.0;
        float r54870 = y;
        float r54871 = t;
        float r54872 = r54870 * r54871;
        float r54873 = r54857 * r54872;
        float r54874 = r54869 * r54873;
        float r54875 = r54868 - r54874;
        float r54876 = cbrt(r54875);
        float r54877 = r54876 * r54876;
        float r54878 = r54877 * r54876;
        float r54879 = r54866 * r54865;
        float r54880 = r54870 * r54869;
        float r54881 = r54857 * r54871;
        float r54882 = r54880 * r54881;
        float r54883 = r54879 - r54882;
        float r54884 = r54862 * r54860;
        float r54885 = r54884 * r54861;
        float r54886 = r54883 + r54885;
        float r54887 = r54859 ? r54878 : r54886;
        return r54887;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r54888 = z;
        double r54889 = -5.0071510977473634e+140;
        bool r54890 = r54888 <= r54889;
        double r54891 = 27.0;
        double r54892 = b;
        double r54893 = a;
        double r54894 = r54892 * r54893;
        double r54895 = r54891 * r54894;
        double r54896 = 2.0;
        double r54897 = x;
        double r54898 = r54896 * r54897;
        double r54899 = r54895 + r54898;
        double r54900 = 9.0;
        double r54901 = y;
        double r54902 = t;
        double r54903 = r54901 * r54902;
        double r54904 = r54888 * r54903;
        double r54905 = r54900 * r54904;
        double r54906 = r54899 - r54905;
        double r54907 = cbrt(r54906);
        double r54908 = r54907 * r54907;
        double r54909 = r54908 * r54907;
        double r54910 = r54897 * r54896;
        double r54911 = r54901 * r54900;
        double r54912 = r54888 * r54902;
        double r54913 = r54911 * r54912;
        double r54914 = r54910 - r54913;
        double r54915 = r54893 * r54891;
        double r54916 = r54915 * r54892;
        double r54917 = r54914 + r54916;
        double r54918 = r54890 ? r54909 : r54917;
        return r54918;
}

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 r54919, r54920, r54921, r54922, r54923, r54924, r54925, r54926, r54927, r54928, r54929, r54930, r54931, r54932, r54933, r54934, r54935;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54919);
        mpfr_init_set_str(r54920, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54921);
        mpfr_init(r54922);
        mpfr_init_set_str(r54923, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54924);
        mpfr_init(r54925);
        mpfr_init(r54926);
        mpfr_init(r54927);
        mpfr_init(r54928);
        mpfr_init(r54929);
        mpfr_init(r54930);
        mpfr_init_set_str(r54931, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54932);
        mpfr_init(r54933);
        mpfr_init(r54934);
        mpfr_init(r54935);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r54919, x, MPFR_RNDN);
        ;
        mpfr_mul(r54921, r54919, r54920, MPFR_RNDN);
        mpfr_set_d(r54922, y, MPFR_RNDN);
        ;
        mpfr_mul(r54924, r54922, r54923, MPFR_RNDN);
        mpfr_set_d(r54925, z, MPFR_RNDN);
        mpfr_mul(r54926, r54924, r54925, MPFR_RNDN);
        mpfr_set_d(r54927, t, MPFR_RNDN);
        mpfr_mul(r54928, r54926, r54927, MPFR_RNDN);
        mpfr_sub(r54929, r54921, r54928, MPFR_RNDN);
        mpfr_set_d(r54930, a, MPFR_RNDN);
        ;
        mpfr_mul(r54932, r54930, r54931, MPFR_RNDN);
        mpfr_set_d(r54933, b, MPFR_RNDN);
        mpfr_mul(r54934, r54932, r54933, MPFR_RNDN);
        mpfr_add(r54935, r54929, r54934, MPFR_RNDN);
        return mpfr_get_d(r54935, MPFR_RNDN);
}

static mpfr_t r54936, r54937, r54938, r54939, r54940, r54941, r54942, r54943, r54944, r54945, r54946, r54947, r54948, r54949, r54950, r54951, r54952, r54953, r54954, r54955, r54956, r54957, r54958, r54959, r54960, r54961, r54962, r54963, r54964, r54965, r54966;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54936);
        mpfr_init_set_str(r54937, "-5.0071510977473634e+140", 10, MPFR_RNDN);
        mpfr_init(r54938);
        mpfr_init_set_str(r54939, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54940);
        mpfr_init(r54941);
        mpfr_init(r54942);
        mpfr_init(r54943);
        mpfr_init_set_str(r54944, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54945);
        mpfr_init(r54946);
        mpfr_init(r54947);
        mpfr_init_set_str(r54948, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54949);
        mpfr_init(r54950);
        mpfr_init(r54951);
        mpfr_init(r54952);
        mpfr_init(r54953);
        mpfr_init(r54954);
        mpfr_init(r54955);
        mpfr_init(r54956);
        mpfr_init(r54957);
        mpfr_init(r54958);
        mpfr_init(r54959);
        mpfr_init(r54960);
        mpfr_init(r54961);
        mpfr_init(r54962);
        mpfr_init(r54963);
        mpfr_init(r54964);
        mpfr_init(r54965);
        mpfr_init(r54966);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r54936, z, MPFR_RNDN);
        ;
        mpfr_set_si(r54938, mpfr_cmp(r54936, r54937) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r54940, b, MPFR_RNDN);
        mpfr_set_d(r54941, a, MPFR_RNDN);
        mpfr_mul(r54942, r54940, r54941, MPFR_RNDN);
        mpfr_mul(r54943, r54939, r54942, MPFR_RNDN);
        ;
        mpfr_set_d(r54945, x, MPFR_RNDN);
        mpfr_mul(r54946, r54944, r54945, MPFR_RNDN);
        mpfr_add(r54947, r54943, r54946, MPFR_RNDN);
        ;
        mpfr_set_d(r54949, y, MPFR_RNDN);
        mpfr_set_d(r54950, t, MPFR_RNDN);
        mpfr_mul(r54951, r54949, r54950, MPFR_RNDN);
        mpfr_mul(r54952, r54936, r54951, MPFR_RNDN);
        mpfr_mul(r54953, r54948, r54952, MPFR_RNDN);
        mpfr_sub(r54954, r54947, r54953, MPFR_RNDN);
        mpfr_cbrt(r54955, r54954, MPFR_RNDN);
        mpfr_mul(r54956, r54955, r54955, MPFR_RNDN);
        mpfr_mul(r54957, r54956, r54955, MPFR_RNDN);
        mpfr_mul(r54958, r54945, r54944, MPFR_RNDN);
        mpfr_mul(r54959, r54949, r54948, MPFR_RNDN);
        mpfr_mul(r54960, r54936, r54950, MPFR_RNDN);
        mpfr_mul(r54961, r54959, r54960, MPFR_RNDN);
        mpfr_sub(r54962, r54958, r54961, MPFR_RNDN);
        mpfr_mul(r54963, r54941, r54939, MPFR_RNDN);
        mpfr_mul(r54964, r54963, r54940, MPFR_RNDN);
        mpfr_add(r54965, r54962, r54964, MPFR_RNDN);
        if (mpfr_get_si(r54938, MPFR_RNDN)) { mpfr_set(r54966, r54957, MPFR_RNDN); } else { mpfr_set(r54966, r54965, MPFR_RNDN); };
        return mpfr_get_d(r54966, MPFR_RNDN);
}

static mpfr_t r54967, r54968, r54969, r54970, r54971, r54972, r54973, r54974, r54975, r54976, r54977, r54978, r54979, r54980, r54981, r54982, r54983, r54984, r54985, r54986, r54987, r54988, r54989, r54990, r54991, r54992, r54993, r54994, r54995, r54996, r54997;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54967);
        mpfr_init_set_str(r54968, "-5.0071510977473634e+140", 10, MPFR_RNDN);
        mpfr_init(r54969);
        mpfr_init_set_str(r54970, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54971);
        mpfr_init(r54972);
        mpfr_init(r54973);
        mpfr_init(r54974);
        mpfr_init_set_str(r54975, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54976);
        mpfr_init(r54977);
        mpfr_init(r54978);
        mpfr_init_set_str(r54979, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54980);
        mpfr_init(r54981);
        mpfr_init(r54982);
        mpfr_init(r54983);
        mpfr_init(r54984);
        mpfr_init(r54985);
        mpfr_init(r54986);
        mpfr_init(r54987);
        mpfr_init(r54988);
        mpfr_init(r54989);
        mpfr_init(r54990);
        mpfr_init(r54991);
        mpfr_init(r54992);
        mpfr_init(r54993);
        mpfr_init(r54994);
        mpfr_init(r54995);
        mpfr_init(r54996);
        mpfr_init(r54997);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r54967, z, MPFR_RNDN);
        ;
        mpfr_set_si(r54969, mpfr_cmp(r54967, r54968) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r54971, b, MPFR_RNDN);
        mpfr_set_d(r54972, a, MPFR_RNDN);
        mpfr_mul(r54973, r54971, r54972, MPFR_RNDN);
        mpfr_mul(r54974, r54970, r54973, MPFR_RNDN);
        ;
        mpfr_set_d(r54976, x, MPFR_RNDN);
        mpfr_mul(r54977, r54975, r54976, MPFR_RNDN);
        mpfr_add(r54978, r54974, r54977, MPFR_RNDN);
        ;
        mpfr_set_d(r54980, y, MPFR_RNDN);
        mpfr_set_d(r54981, t, MPFR_RNDN);
        mpfr_mul(r54982, r54980, r54981, MPFR_RNDN);
        mpfr_mul(r54983, r54967, r54982, MPFR_RNDN);
        mpfr_mul(r54984, r54979, r54983, MPFR_RNDN);
        mpfr_sub(r54985, r54978, r54984, MPFR_RNDN);
        mpfr_cbrt(r54986, r54985, MPFR_RNDN);
        mpfr_mul(r54987, r54986, r54986, MPFR_RNDN);
        mpfr_mul(r54988, r54987, r54986, MPFR_RNDN);
        mpfr_mul(r54989, r54976, r54975, MPFR_RNDN);
        mpfr_mul(r54990, r54980, r54979, MPFR_RNDN);
        mpfr_mul(r54991, r54967, r54981, MPFR_RNDN);
        mpfr_mul(r54992, r54990, r54991, MPFR_RNDN);
        mpfr_sub(r54993, r54989, r54992, MPFR_RNDN);
        mpfr_mul(r54994, r54972, r54970, MPFR_RNDN);
        mpfr_mul(r54995, r54994, r54971, MPFR_RNDN);
        mpfr_add(r54996, r54993, r54995, MPFR_RNDN);
        if (mpfr_get_si(r54969, MPFR_RNDN)) { mpfr_set(r54997, r54988, MPFR_RNDN); } else { mpfr_set(r54997, r54996, MPFR_RNDN); };
        return mpfr_get_d(r54997, MPFR_RNDN);
}

