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

double f_if(float x, float y, float z, float t, float a) {
        float r52831 = x;
        float r52832 = y;
        float r52833 = r52831 * r52832;
        float r52834 = z;
        float r52835 = 9.0f;
        float r52836 = r52834 * r52835;
        float r52837 = t;
        float r52838 = r52836 * r52837;
        float r52839 = r52833 - r52838;
        float r52840 = a;
        float r52841 = 2.0f;
        float r52842 = r52840 * r52841;
        float r52843 = r52839 / r52842;
        return r52843;
}

double f_id(double x, double y, double z, double t, double a) {
        double r52844 = x;
        double r52845 = y;
        double r52846 = r52844 * r52845;
        double r52847 = z;
        double r52848 = 9.0;
        double r52849 = r52847 * r52848;
        double r52850 = t;
        double r52851 = r52849 * r52850;
        double r52852 = r52846 - r52851;
        double r52853 = a;
        double r52854 = 2.0;
        double r52855 = r52853 * r52854;
        double r52856 = r52852 / r52855;
        return r52856;
}


double f_of(float x, float y, float z, float t, float a) {
        float r52857 = t;
        float r52858 = -3.8447453506502606e-190f;
        bool r52859 = r52857 <= r52858;
        float r52860 = 0.5f;
        float r52861 = y;
        float r52862 = x;
        float r52863 = r52861 * r52862;
        float r52864 = a;
        float r52865 = r52863 / r52864;
        float r52866 = r52860 * r52865;
        float r52867 = 4.5f;
        float r52868 = z;
        float r52869 = r52864 / r52868;
        float r52870 = r52857 / r52869;
        float r52871 = r52867 * r52870;
        float r52872 = r52866 - r52871;
        float r52873 = 3.3156380580081446e+107f;
        bool r52874 = r52857 <= r52873;
        float r52875 = r52864 / r52862;
        float r52876 = r52861 / r52875;
        float r52877 = r52860 * r52876;
        float r52878 = r52857 * r52868;
        float r52879 = r52878 / r52864;
        float r52880 = r52867 * r52879;
        float r52881 = r52877 - r52880;
        float r52882 = 7.696604323863346e+213f;
        bool r52883 = r52857 <= r52882;
        float r52884 = r52883 ? r52872 : r52881;
        float r52885 = r52874 ? r52881 : r52884;
        float r52886 = r52859 ? r52872 : r52885;
        return r52886;
}

double f_od(double x, double y, double z, double t, double a) {
        double r52887 = t;
        double r52888 = -3.8447453506502606e-190;
        bool r52889 = r52887 <= r52888;
        double r52890 = 0.5;
        double r52891 = y;
        double r52892 = x;
        double r52893 = r52891 * r52892;
        double r52894 = a;
        double r52895 = r52893 / r52894;
        double r52896 = r52890 * r52895;
        double r52897 = 4.5;
        double r52898 = z;
        double r52899 = r52894 / r52898;
        double r52900 = r52887 / r52899;
        double r52901 = r52897 * r52900;
        double r52902 = r52896 - r52901;
        double r52903 = 3.3156380580081446e+107;
        bool r52904 = r52887 <= r52903;
        double r52905 = r52894 / r52892;
        double r52906 = r52891 / r52905;
        double r52907 = r52890 * r52906;
        double r52908 = r52887 * r52898;
        double r52909 = r52908 / r52894;
        double r52910 = r52897 * r52909;
        double r52911 = r52907 - r52910;
        double r52912 = 7.696604323863346e+213;
        bool r52913 = r52887 <= r52912;
        double r52914 = r52913 ? r52902 : r52911;
        double r52915 = r52904 ? r52911 : r52914;
        double r52916 = r52889 ? r52902 : r52915;
        return r52916;
}

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 r52917, r52918, r52919, r52920, r52921, r52922, r52923, r52924, r52925, r52926, r52927, r52928, r52929;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r52917);
        mpfr_init(r52918);
        mpfr_init(r52919);
        mpfr_init(r52920);
        mpfr_init_set_str(r52921, "9.0", 10, MPFR_RNDN);
        mpfr_init(r52922);
        mpfr_init(r52923);
        mpfr_init(r52924);
        mpfr_init(r52925);
        mpfr_init(r52926);
        mpfr_init_set_str(r52927, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52928);
        mpfr_init(r52929);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r52917, x, MPFR_RNDN);
        mpfr_set_d(r52918, y, MPFR_RNDN);
        mpfr_mul(r52919, r52917, r52918, MPFR_RNDN);
        mpfr_set_d(r52920, z, MPFR_RNDN);
        ;
        mpfr_mul(r52922, r52920, r52921, MPFR_RNDN);
        mpfr_set_d(r52923, t, MPFR_RNDN);
        mpfr_mul(r52924, r52922, r52923, MPFR_RNDN);
        mpfr_sub(r52925, r52919, r52924, MPFR_RNDN);
        mpfr_set_d(r52926, a, MPFR_RNDN);
        ;
        mpfr_mul(r52928, r52926, r52927, MPFR_RNDN);
        mpfr_div(r52929, r52925, r52928, MPFR_RNDN);
        return mpfr_get_d(r52929, MPFR_RNDN);
}

static mpfr_t r52930, r52931, r52932, r52933, r52934, r52935, r52936, r52937, r52938, r52939, r52940, r52941, r52942, r52943, r52944, r52945, r52946, r52947, r52948, r52949, r52950, r52951, r52952, r52953, r52954, r52955, r52956, r52957, r52958, r52959;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r52930);
        mpfr_init_set_str(r52931, "-3.8447453506502606e-190", 10, MPFR_RNDN);
        mpfr_init(r52932);
        mpfr_init_set_str(r52933, "0.5", 10, MPFR_RNDN);
        mpfr_init(r52934);
        mpfr_init(r52935);
        mpfr_init(r52936);
        mpfr_init(r52937);
        mpfr_init(r52938);
        mpfr_init(r52939);
        mpfr_init_set_str(r52940, "4.5", 10, MPFR_RNDN);
        mpfr_init(r52941);
        mpfr_init(r52942);
        mpfr_init(r52943);
        mpfr_init(r52944);
        mpfr_init(r52945);
        mpfr_init_set_str(r52946, "3.3156380580081446e+107", 10, MPFR_RNDN);
        mpfr_init(r52947);
        mpfr_init(r52948);
        mpfr_init(r52949);
        mpfr_init(r52950);
        mpfr_init(r52951);
        mpfr_init(r52952);
        mpfr_init(r52953);
        mpfr_init(r52954);
        mpfr_init_set_str(r52955, "7.696604323863346e+213", 10, MPFR_RNDN);
        mpfr_init(r52956);
        mpfr_init(r52957);
        mpfr_init(r52958);
        mpfr_init(r52959);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r52930, t, MPFR_RNDN);
        ;
        mpfr_set_si(r52932, mpfr_cmp(r52930, r52931) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r52934, y, MPFR_RNDN);
        mpfr_set_d(r52935, x, MPFR_RNDN);
        mpfr_mul(r52936, r52934, r52935, MPFR_RNDN);
        mpfr_set_d(r52937, a, MPFR_RNDN);
        mpfr_div(r52938, r52936, r52937, MPFR_RNDN);
        mpfr_mul(r52939, r52933, r52938, MPFR_RNDN);
        ;
        mpfr_set_d(r52941, z, MPFR_RNDN);
        mpfr_div(r52942, r52937, r52941, MPFR_RNDN);
        mpfr_div(r52943, r52930, r52942, MPFR_RNDN);
        mpfr_mul(r52944, r52940, r52943, MPFR_RNDN);
        mpfr_sub(r52945, r52939, r52944, MPFR_RNDN);
        ;
        mpfr_set_si(r52947, mpfr_cmp(r52930, r52946) <= 0, MPFR_RNDN);
        mpfr_div(r52948, r52937, r52935, MPFR_RNDN);
        mpfr_div(r52949, r52934, r52948, MPFR_RNDN);
        mpfr_mul(r52950, r52933, r52949, MPFR_RNDN);
        mpfr_mul(r52951, r52930, r52941, MPFR_RNDN);
        mpfr_div(r52952, r52951, r52937, MPFR_RNDN);
        mpfr_mul(r52953, r52940, r52952, MPFR_RNDN);
        mpfr_sub(r52954, r52950, r52953, MPFR_RNDN);
        ;
        mpfr_set_si(r52956, mpfr_cmp(r52930, r52955) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r52956, MPFR_RNDN)) { mpfr_set(r52957, r52945, MPFR_RNDN); } else { mpfr_set(r52957, r52954, MPFR_RNDN); };
        if (mpfr_get_si(r52947, MPFR_RNDN)) { mpfr_set(r52958, r52954, MPFR_RNDN); } else { mpfr_set(r52958, r52957, MPFR_RNDN); };
        if (mpfr_get_si(r52932, MPFR_RNDN)) { mpfr_set(r52959, r52945, MPFR_RNDN); } else { mpfr_set(r52959, r52958, MPFR_RNDN); };
        return mpfr_get_d(r52959, MPFR_RNDN);
}

static mpfr_t r52960, r52961, r52962, r52963, r52964, r52965, r52966, r52967, r52968, r52969, r52970, r52971, r52972, r52973, r52974, r52975, r52976, r52977, r52978, r52979, r52980, r52981, r52982, r52983, r52984, r52985, r52986, r52987, r52988, r52989;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r52960);
        mpfr_init_set_str(r52961, "-3.8447453506502606e-190", 10, MPFR_RNDN);
        mpfr_init(r52962);
        mpfr_init_set_str(r52963, "0.5", 10, MPFR_RNDN);
        mpfr_init(r52964);
        mpfr_init(r52965);
        mpfr_init(r52966);
        mpfr_init(r52967);
        mpfr_init(r52968);
        mpfr_init(r52969);
        mpfr_init_set_str(r52970, "4.5", 10, MPFR_RNDN);
        mpfr_init(r52971);
        mpfr_init(r52972);
        mpfr_init(r52973);
        mpfr_init(r52974);
        mpfr_init(r52975);
        mpfr_init_set_str(r52976, "3.3156380580081446e+107", 10, MPFR_RNDN);
        mpfr_init(r52977);
        mpfr_init(r52978);
        mpfr_init(r52979);
        mpfr_init(r52980);
        mpfr_init(r52981);
        mpfr_init(r52982);
        mpfr_init(r52983);
        mpfr_init(r52984);
        mpfr_init_set_str(r52985, "7.696604323863346e+213", 10, MPFR_RNDN);
        mpfr_init(r52986);
        mpfr_init(r52987);
        mpfr_init(r52988);
        mpfr_init(r52989);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r52960, t, MPFR_RNDN);
        ;
        mpfr_set_si(r52962, mpfr_cmp(r52960, r52961) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r52964, y, MPFR_RNDN);
        mpfr_set_d(r52965, x, MPFR_RNDN);
        mpfr_mul(r52966, r52964, r52965, MPFR_RNDN);
        mpfr_set_d(r52967, a, MPFR_RNDN);
        mpfr_div(r52968, r52966, r52967, MPFR_RNDN);
        mpfr_mul(r52969, r52963, r52968, MPFR_RNDN);
        ;
        mpfr_set_d(r52971, z, MPFR_RNDN);
        mpfr_div(r52972, r52967, r52971, MPFR_RNDN);
        mpfr_div(r52973, r52960, r52972, MPFR_RNDN);
        mpfr_mul(r52974, r52970, r52973, MPFR_RNDN);
        mpfr_sub(r52975, r52969, r52974, MPFR_RNDN);
        ;
        mpfr_set_si(r52977, mpfr_cmp(r52960, r52976) <= 0, MPFR_RNDN);
        mpfr_div(r52978, r52967, r52965, MPFR_RNDN);
        mpfr_div(r52979, r52964, r52978, MPFR_RNDN);
        mpfr_mul(r52980, r52963, r52979, MPFR_RNDN);
        mpfr_mul(r52981, r52960, r52971, MPFR_RNDN);
        mpfr_div(r52982, r52981, r52967, MPFR_RNDN);
        mpfr_mul(r52983, r52970, r52982, MPFR_RNDN);
        mpfr_sub(r52984, r52980, r52983, MPFR_RNDN);
        ;
        mpfr_set_si(r52986, mpfr_cmp(r52960, r52985) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r52986, MPFR_RNDN)) { mpfr_set(r52987, r52975, MPFR_RNDN); } else { mpfr_set(r52987, r52984, MPFR_RNDN); };
        if (mpfr_get_si(r52977, MPFR_RNDN)) { mpfr_set(r52988, r52984, MPFR_RNDN); } else { mpfr_set(r52988, r52987, MPFR_RNDN); };
        if (mpfr_get_si(r52962, MPFR_RNDN)) { mpfr_set(r52989, r52975, MPFR_RNDN); } else { mpfr_set(r52989, r52988, MPFR_RNDN); };
        return mpfr_get_d(r52989, MPFR_RNDN);
}

