#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 = y;
        float r54858 = -6.798242451867544e-115;
        bool r54859 = r54857 <= r54858;
        float r54860 = x;
        float r54861 = 2.0;
        float r54862 = r54860 * r54861;
        float r54863 = 9.0;
        float r54864 = r54857 * r54863;
        float r54865 = z;
        float r54866 = t;
        float r54867 = r54865 * r54866;
        float r54868 = r54864 * r54867;
        float r54869 = r54862 - r54868;
        float r54870 = a;
        float r54871 = 27.0;
        float r54872 = r54870 * r54871;
        float r54873 = b;
        float r54874 = r54872 * r54873;
        float r54875 = r54869 + r54874;
        float r54876 = 4.7969606968471655e-108;
        bool r54877 = r54857 <= r54876;
        float r54878 = r54863 * r54865;
        float r54879 = r54857 * r54878;
        float r54880 = r54879 * r54866;
        float r54881 = r54862 - r54880;
        float r54882 = r54881 + r54874;
        float r54883 = r54877 ? r54882 : r54875;
        float r54884 = r54859 ? r54875 : r54883;
        return r54884;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r54885 = y;
        double r54886 = -6.798242451867544e-115;
        bool r54887 = r54885 <= r54886;
        double r54888 = x;
        double r54889 = 2.0;
        double r54890 = r54888 * r54889;
        double r54891 = 9.0;
        double r54892 = r54885 * r54891;
        double r54893 = z;
        double r54894 = t;
        double r54895 = r54893 * r54894;
        double r54896 = r54892 * r54895;
        double r54897 = r54890 - r54896;
        double r54898 = a;
        double r54899 = 27.0;
        double r54900 = r54898 * r54899;
        double r54901 = b;
        double r54902 = r54900 * r54901;
        double r54903 = r54897 + r54902;
        double r54904 = 4.7969606968471655e-108;
        bool r54905 = r54885 <= r54904;
        double r54906 = r54891 * r54893;
        double r54907 = r54885 * r54906;
        double r54908 = r54907 * r54894;
        double r54909 = r54890 - r54908;
        double r54910 = r54909 + r54902;
        double r54911 = r54905 ? r54910 : r54903;
        double r54912 = r54887 ? r54903 : r54911;
        return r54912;
}

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 r54913, r54914, r54915, r54916, r54917, r54918, r54919, r54920, r54921, r54922, r54923, r54924, r54925, r54926, r54927, r54928, r54929;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54913);
        mpfr_init_set_str(r54914, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54915);
        mpfr_init(r54916);
        mpfr_init_set_str(r54917, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54918);
        mpfr_init(r54919);
        mpfr_init(r54920);
        mpfr_init(r54921);
        mpfr_init(r54922);
        mpfr_init(r54923);
        mpfr_init(r54924);
        mpfr_init_set_str(r54925, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54926);
        mpfr_init(r54927);
        mpfr_init(r54928);
        mpfr_init(r54929);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r54913, x, MPFR_RNDN);
        ;
        mpfr_mul(r54915, r54913, r54914, MPFR_RNDN);
        mpfr_set_d(r54916, y, MPFR_RNDN);
        ;
        mpfr_mul(r54918, r54916, r54917, MPFR_RNDN);
        mpfr_set_d(r54919, z, MPFR_RNDN);
        mpfr_mul(r54920, r54918, r54919, MPFR_RNDN);
        mpfr_set_d(r54921, t, MPFR_RNDN);
        mpfr_mul(r54922, r54920, r54921, MPFR_RNDN);
        mpfr_sub(r54923, r54915, r54922, MPFR_RNDN);
        mpfr_set_d(r54924, a, MPFR_RNDN);
        ;
        mpfr_mul(r54926, r54924, r54925, MPFR_RNDN);
        mpfr_set_d(r54927, b, MPFR_RNDN);
        mpfr_mul(r54928, r54926, r54927, MPFR_RNDN);
        mpfr_add(r54929, r54923, r54928, MPFR_RNDN);
        return mpfr_get_d(r54929, MPFR_RNDN);
}

static mpfr_t r54930, r54931, r54932, r54933, r54934, r54935, r54936, r54937, r54938, r54939, r54940, r54941, r54942, r54943, r54944, r54945, r54946, r54947, r54948, r54949, r54950, r54951, r54952, r54953, r54954, r54955, r54956, r54957;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54930);
        mpfr_init_set_str(r54931, "-6.798242451867544e-115", 10, MPFR_RNDN);
        mpfr_init(r54932);
        mpfr_init(r54933);
        mpfr_init_set_str(r54934, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54935);
        mpfr_init_set_str(r54936, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54937);
        mpfr_init(r54938);
        mpfr_init(r54939);
        mpfr_init(r54940);
        mpfr_init(r54941);
        mpfr_init(r54942);
        mpfr_init(r54943);
        mpfr_init_set_str(r54944, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54945);
        mpfr_init(r54946);
        mpfr_init(r54947);
        mpfr_init(r54948);
        mpfr_init_set_str(r54949, "4.7969606968471655e-108", 10, MPFR_RNDN);
        mpfr_init(r54950);
        mpfr_init(r54951);
        mpfr_init(r54952);
        mpfr_init(r54953);
        mpfr_init(r54954);
        mpfr_init(r54955);
        mpfr_init(r54956);
        mpfr_init(r54957);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r54930, y, MPFR_RNDN);
        ;
        mpfr_set_si(r54932, mpfr_cmp(r54930, r54931) <= 0, MPFR_RNDN);
        mpfr_set_d(r54933, x, MPFR_RNDN);
        ;
        mpfr_mul(r54935, r54933, r54934, MPFR_RNDN);
        ;
        mpfr_mul(r54937, r54930, r54936, MPFR_RNDN);
        mpfr_set_d(r54938, z, MPFR_RNDN);
        mpfr_set_d(r54939, t, MPFR_RNDN);
        mpfr_mul(r54940, r54938, r54939, MPFR_RNDN);
        mpfr_mul(r54941, r54937, r54940, MPFR_RNDN);
        mpfr_sub(r54942, r54935, r54941, MPFR_RNDN);
        mpfr_set_d(r54943, a, MPFR_RNDN);
        ;
        mpfr_mul(r54945, r54943, r54944, MPFR_RNDN);
        mpfr_set_d(r54946, b, MPFR_RNDN);
        mpfr_mul(r54947, r54945, r54946, MPFR_RNDN);
        mpfr_add(r54948, r54942, r54947, MPFR_RNDN);
        ;
        mpfr_set_si(r54950, mpfr_cmp(r54930, r54949) <= 0, MPFR_RNDN);
        mpfr_mul(r54951, r54936, r54938, MPFR_RNDN);
        mpfr_mul(r54952, r54930, r54951, MPFR_RNDN);
        mpfr_mul(r54953, r54952, r54939, MPFR_RNDN);
        mpfr_sub(r54954, r54935, r54953, MPFR_RNDN);
        mpfr_add(r54955, r54954, r54947, MPFR_RNDN);
        if (mpfr_get_si(r54950, MPFR_RNDN)) { mpfr_set(r54956, r54955, MPFR_RNDN); } else { mpfr_set(r54956, r54948, MPFR_RNDN); };
        if (mpfr_get_si(r54932, MPFR_RNDN)) { mpfr_set(r54957, r54948, MPFR_RNDN); } else { mpfr_set(r54957, r54956, MPFR_RNDN); };
        return mpfr_get_d(r54957, MPFR_RNDN);
}

static mpfr_t r54958, r54959, r54960, r54961, r54962, r54963, r54964, r54965, r54966, r54967, r54968, r54969, r54970, r54971, r54972, r54973, r54974, r54975, r54976, r54977, r54978, r54979, r54980, r54981, r54982, r54983, r54984, r54985;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54958);
        mpfr_init_set_str(r54959, "-6.798242451867544e-115", 10, MPFR_RNDN);
        mpfr_init(r54960);
        mpfr_init(r54961);
        mpfr_init_set_str(r54962, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54963);
        mpfr_init_set_str(r54964, "9.0", 10, MPFR_RNDN);
        mpfr_init(r54965);
        mpfr_init(r54966);
        mpfr_init(r54967);
        mpfr_init(r54968);
        mpfr_init(r54969);
        mpfr_init(r54970);
        mpfr_init(r54971);
        mpfr_init_set_str(r54972, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54973);
        mpfr_init(r54974);
        mpfr_init(r54975);
        mpfr_init(r54976);
        mpfr_init_set_str(r54977, "4.7969606968471655e-108", 10, MPFR_RNDN);
        mpfr_init(r54978);
        mpfr_init(r54979);
        mpfr_init(r54980);
        mpfr_init(r54981);
        mpfr_init(r54982);
        mpfr_init(r54983);
        mpfr_init(r54984);
        mpfr_init(r54985);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r54958, y, MPFR_RNDN);
        ;
        mpfr_set_si(r54960, mpfr_cmp(r54958, r54959) <= 0, MPFR_RNDN);
        mpfr_set_d(r54961, x, MPFR_RNDN);
        ;
        mpfr_mul(r54963, r54961, r54962, MPFR_RNDN);
        ;
        mpfr_mul(r54965, r54958, r54964, MPFR_RNDN);
        mpfr_set_d(r54966, z, MPFR_RNDN);
        mpfr_set_d(r54967, t, MPFR_RNDN);
        mpfr_mul(r54968, r54966, r54967, MPFR_RNDN);
        mpfr_mul(r54969, r54965, r54968, MPFR_RNDN);
        mpfr_sub(r54970, r54963, r54969, MPFR_RNDN);
        mpfr_set_d(r54971, a, MPFR_RNDN);
        ;
        mpfr_mul(r54973, r54971, r54972, MPFR_RNDN);
        mpfr_set_d(r54974, b, MPFR_RNDN);
        mpfr_mul(r54975, r54973, r54974, MPFR_RNDN);
        mpfr_add(r54976, r54970, r54975, MPFR_RNDN);
        ;
        mpfr_set_si(r54978, mpfr_cmp(r54958, r54977) <= 0, MPFR_RNDN);
        mpfr_mul(r54979, r54964, r54966, MPFR_RNDN);
        mpfr_mul(r54980, r54958, r54979, MPFR_RNDN);
        mpfr_mul(r54981, r54980, r54967, MPFR_RNDN);
        mpfr_sub(r54982, r54963, r54981, MPFR_RNDN);
        mpfr_add(r54983, r54982, r54975, MPFR_RNDN);
        if (mpfr_get_si(r54978, MPFR_RNDN)) { mpfr_set(r54984, r54983, MPFR_RNDN); } else { mpfr_set(r54984, r54976, MPFR_RNDN); };
        if (mpfr_get_si(r54960, MPFR_RNDN)) { mpfr_set(r54985, r54976, MPFR_RNDN); } else { mpfr_set(r54985, r54984, MPFR_RNDN); };
        return mpfr_get_d(r54985, MPFR_RNDN);
}

