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

double f_if(float x, float y, float z, float t, float a, float b) {
        float r52799 = 2.0;
        float r52800 = x;
        float r52801 = sqrt(r52800);
        float r52802 = r52799 * r52801;
        float r52803 = y;
        float r52804 = z;
        float r52805 = t;
        float r52806 = r52804 * r52805;
        float r52807 = 3.0;
        float r52808 = r52806 / r52807;
        float r52809 = r52803 - r52808;
        float r52810 = cos(r52809);
        float r52811 = r52802 * r52810;
        float r52812 = a;
        float r52813 = b;
        float r52814 = r52813 * r52807;
        float r52815 = r52812 / r52814;
        float r52816 = r52811 - r52815;
        return r52816;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r52817 = 2.0;
        double r52818 = x;
        double r52819 = sqrt(r52818);
        double r52820 = r52817 * r52819;
        double r52821 = y;
        double r52822 = z;
        double r52823 = t;
        double r52824 = r52822 * r52823;
        double r52825 = 3.0;
        double r52826 = r52824 / r52825;
        double r52827 = r52821 - r52826;
        double r52828 = cos(r52827);
        double r52829 = r52820 * r52828;
        double r52830 = a;
        double r52831 = b;
        double r52832 = r52831 * r52825;
        double r52833 = r52830 / r52832;
        double r52834 = r52829 - r52833;
        return r52834;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r52835 = y;
        float r52836 = z;
        float r52837 = t;
        float r52838 = r52836 * r52837;
        float r52839 = 3.0;
        float r52840 = r52838 / r52839;
        float r52841 = r52835 - r52840;
        float r52842 = -inf.0;
        bool r52843 = r52841 <= r52842;
        float r52844 = 2.0;
        float r52845 = x;
        float r52846 = sqrt(r52845);
        float r52847 = r52844 * r52846;
        float r52848 = 1;
        float r52849 = r52848 / r52835;
        float r52850 = 0.3333333333333333;
        float r52851 = r52850 / r52838;
        float r52852 = r52849 - r52851;
        float r52853 = cos(r52852);
        float r52854 = r52847 * r52853;
        float r52855 = a;
        float r52856 = b;
        float r52857 = r52856 * r52839;
        float r52858 = r52855 / r52857;
        float r52859 = r52854 - r52858;
        float r52860 = 4.4715459573037013e+303;
        bool r52861 = r52841 <= r52860;
        float r52862 = cos(r52835);
        float r52863 = cos(r52840);
        float r52864 = cbrt(r52863);
        float r52865 = r52864 * r52864;
        float r52866 = r52865 * r52864;
        float r52867 = cbrt(r52866);
        float r52868 = r52864 * r52867;
        float r52869 = r52868 * r52867;
        float r52870 = r52862 * r52869;
        float r52871 = sin(r52835);
        float r52872 = sin(r52840);
        float r52873 = r52871 * r52872;
        float r52874 = r52870 + r52873;
        float r52875 = r52847 * r52874;
        float r52876 = r52875 - r52858;
        float r52877 = r52861 ? r52876 : r52859;
        float r52878 = r52843 ? r52859 : r52877;
        return r52878;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r52879 = y;
        double r52880 = z;
        double r52881 = t;
        double r52882 = r52880 * r52881;
        double r52883 = 3.0;
        double r52884 = r52882 / r52883;
        double r52885 = r52879 - r52884;
        double r52886 = -inf.0;
        bool r52887 = r52885 <= r52886;
        double r52888 = 2.0;
        double r52889 = x;
        double r52890 = sqrt(r52889);
        double r52891 = r52888 * r52890;
        double r52892 = 1;
        double r52893 = r52892 / r52879;
        double r52894 = 0.3333333333333333;
        double r52895 = r52894 / r52882;
        double r52896 = r52893 - r52895;
        double r52897 = cos(r52896);
        double r52898 = r52891 * r52897;
        double r52899 = a;
        double r52900 = b;
        double r52901 = r52900 * r52883;
        double r52902 = r52899 / r52901;
        double r52903 = r52898 - r52902;
        double r52904 = 4.4715459573037013e+303;
        bool r52905 = r52885 <= r52904;
        double r52906 = cos(r52879);
        double r52907 = cos(r52884);
        double r52908 = cbrt(r52907);
        double r52909 = r52908 * r52908;
        double r52910 = r52909 * r52908;
        double r52911 = cbrt(r52910);
        double r52912 = r52908 * r52911;
        double r52913 = r52912 * r52911;
        double r52914 = r52906 * r52913;
        double r52915 = sin(r52879);
        double r52916 = sin(r52884);
        double r52917 = r52915 * r52916;
        double r52918 = r52914 + r52917;
        double r52919 = r52891 * r52918;
        double r52920 = r52919 - r52902;
        double r52921 = r52905 ? r52920 : r52903;
        double r52922 = r52887 ? r52903 : r52921;
        return r52922;
}

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 r52923, r52924, r52925, r52926, r52927, r52928, r52929, r52930, r52931, r52932, r52933, r52934, r52935, r52936, r52937, r52938, r52939, r52940;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r52923, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52924);
        mpfr_init(r52925);
        mpfr_init(r52926);
        mpfr_init(r52927);
        mpfr_init(r52928);
        mpfr_init(r52929);
        mpfr_init(r52930);
        mpfr_init_set_str(r52931, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52932);
        mpfr_init(r52933);
        mpfr_init(r52934);
        mpfr_init(r52935);
        mpfr_init(r52936);
        mpfr_init(r52937);
        mpfr_init(r52938);
        mpfr_init(r52939);
        mpfr_init(r52940);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        ;
        mpfr_set_d(r52924, x, MPFR_RNDN);
        mpfr_sqrt(r52925, r52924, MPFR_RNDN);
        mpfr_mul(r52926, r52923, r52925, MPFR_RNDN);
        mpfr_set_d(r52927, y, MPFR_RNDN);
        mpfr_set_d(r52928, z, MPFR_RNDN);
        mpfr_set_d(r52929, t, MPFR_RNDN);
        mpfr_mul(r52930, r52928, r52929, MPFR_RNDN);
        ;
        mpfr_div(r52932, r52930, r52931, MPFR_RNDN);
        mpfr_sub(r52933, r52927, r52932, MPFR_RNDN);
        mpfr_cos(r52934, r52933, MPFR_RNDN);
        mpfr_mul(r52935, r52926, r52934, MPFR_RNDN);
        mpfr_set_d(r52936, a, MPFR_RNDN);
        mpfr_set_d(r52937, b, MPFR_RNDN);
        mpfr_mul(r52938, r52937, r52931, MPFR_RNDN);
        mpfr_div(r52939, r52936, r52938, MPFR_RNDN);
        mpfr_sub(r52940, r52935, r52939, MPFR_RNDN);
        return mpfr_get_d(r52940, MPFR_RNDN);
}

static mpfr_t r52941, r52942, r52943, r52944, r52945, r52946, r52947, r52948, r52949, r52950, r52951, r52952, r52953, r52954, r52955, r52956, r52957, r52958, r52959, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r52941);
        mpfr_init(r52942);
        mpfr_init(r52943);
        mpfr_init(r52944);
        mpfr_init_set_str(r52945, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52946);
        mpfr_init(r52947);
        mpfr_init_set_str(r52948, "-inf.0", 10, MPFR_RNDN);
        mpfr_init(r52949);
        mpfr_init_set_str(r52950, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52951);
        mpfr_init(r52952);
        mpfr_init(r52953);
        mpfr_init_set_str(r52954, "1", 10, MPFR_RNDN);
        mpfr_init(r52955);
        mpfr_init_set_str(r52956, "0.3333333333333333", 10, MPFR_RNDN);
        mpfr_init(r52957);
        mpfr_init(r52958);
        mpfr_init(r52959);
        mpfr_init(r52960);
        mpfr_init(r52961);
        mpfr_init(r52962);
        mpfr_init(r52963);
        mpfr_init(r52964);
        mpfr_init(r52965);
        mpfr_init_set_str(r52966, "4.4715459573037013e+303", 10, MPFR_RNDN);
        mpfr_init(r52967);
        mpfr_init(r52968);
        mpfr_init(r52969);
        mpfr_init(r52970);
        mpfr_init(r52971);
        mpfr_init(r52972);
        mpfr_init(r52973);
        mpfr_init(r52974);
        mpfr_init(r52975);
        mpfr_init(r52976);
        mpfr_init(r52977);
        mpfr_init(r52978);
        mpfr_init(r52979);
        mpfr_init(r52980);
        mpfr_init(r52981);
        mpfr_init(r52982);
        mpfr_init(r52983);
        mpfr_init(r52984);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r52941, y, MPFR_RNDN);
        mpfr_set_d(r52942, z, MPFR_RNDN);
        mpfr_set_d(r52943, t, MPFR_RNDN);
        mpfr_mul(r52944, r52942, r52943, MPFR_RNDN);
        ;
        mpfr_div(r52946, r52944, r52945, MPFR_RNDN);
        mpfr_sub(r52947, r52941, r52946, MPFR_RNDN);
        ;
        mpfr_set_si(r52949, mpfr_cmp(r52947, r52948) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r52951, x, MPFR_RNDN);
        mpfr_sqrt(r52952, r52951, MPFR_RNDN);
        mpfr_mul(r52953, r52950, r52952, MPFR_RNDN);
        ;
        mpfr_div(r52955, r52954, r52941, MPFR_RNDN);
        ;
        mpfr_div(r52957, r52956, r52944, MPFR_RNDN);
        mpfr_sub(r52958, r52955, r52957, MPFR_RNDN);
        mpfr_cos(r52959, r52958, MPFR_RNDN);
        mpfr_mul(r52960, r52953, r52959, MPFR_RNDN);
        mpfr_set_d(r52961, a, MPFR_RNDN);
        mpfr_set_d(r52962, b, MPFR_RNDN);
        mpfr_mul(r52963, r52962, r52945, MPFR_RNDN);
        mpfr_div(r52964, r52961, r52963, MPFR_RNDN);
        mpfr_sub(r52965, r52960, r52964, MPFR_RNDN);
        ;
        mpfr_set_si(r52967, mpfr_cmp(r52947, r52966) <= 0, MPFR_RNDN);
        mpfr_cos(r52968, r52941, MPFR_RNDN);
        mpfr_cos(r52969, r52946, MPFR_RNDN);
        mpfr_cbrt(r52970, r52969, MPFR_RNDN);
        mpfr_mul(r52971, r52970, r52970, MPFR_RNDN);
        mpfr_mul(r52972, r52971, r52970, MPFR_RNDN);
        mpfr_cbrt(r52973, r52972, MPFR_RNDN);
        mpfr_mul(r52974, r52970, r52973, MPFR_RNDN);
        mpfr_mul(r52975, r52974, r52973, MPFR_RNDN);
        mpfr_mul(r52976, r52968, r52975, MPFR_RNDN);
        mpfr_sin(r52977, r52941, MPFR_RNDN);
        mpfr_sin(r52978, r52946, MPFR_RNDN);
        mpfr_mul(r52979, r52977, r52978, MPFR_RNDN);
        mpfr_add(r52980, r52976, r52979, MPFR_RNDN);
        mpfr_mul(r52981, r52953, r52980, MPFR_RNDN);
        mpfr_sub(r52982, r52981, r52964, MPFR_RNDN);
        if (mpfr_get_si(r52967, MPFR_RNDN)) { mpfr_set(r52983, r52982, MPFR_RNDN); } else { mpfr_set(r52983, r52965, MPFR_RNDN); };
        if (mpfr_get_si(r52949, MPFR_RNDN)) { mpfr_set(r52984, r52965, MPFR_RNDN); } else { mpfr_set(r52984, r52983, MPFR_RNDN); };
        return mpfr_get_d(r52984, MPFR_RNDN);
}

static mpfr_t r52985, r52986, r52987, r52988, r52989, r52990, r52991, r52992, r52993, r52994, r52995, r52996, r52997, r52998, r52999, r53000, r53001, r53002, r53003, r53004, r53005, r53006, r53007, r53008, r53009, r53010, r53011, r53012, r53013, r53014, r53015, r53016, r53017, r53018, r53019, r53020, r53021, r53022, r53023, r53024, r53025, r53026, r53027, r53028;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r52985);
        mpfr_init(r52986);
        mpfr_init(r52987);
        mpfr_init(r52988);
        mpfr_init_set_str(r52989, "3.0", 10, MPFR_RNDN);
        mpfr_init(r52990);
        mpfr_init(r52991);
        mpfr_init_set_str(r52992, "-inf.0", 10, MPFR_RNDN);
        mpfr_init(r52993);
        mpfr_init_set_str(r52994, "2.0", 10, MPFR_RNDN);
        mpfr_init(r52995);
        mpfr_init(r52996);
        mpfr_init(r52997);
        mpfr_init_set_str(r52998, "1", 10, MPFR_RNDN);
        mpfr_init(r52999);
        mpfr_init_set_str(r53000, "0.3333333333333333", 10, MPFR_RNDN);
        mpfr_init(r53001);
        mpfr_init(r53002);
        mpfr_init(r53003);
        mpfr_init(r53004);
        mpfr_init(r53005);
        mpfr_init(r53006);
        mpfr_init(r53007);
        mpfr_init(r53008);
        mpfr_init(r53009);
        mpfr_init_set_str(r53010, "4.4715459573037013e+303", 10, MPFR_RNDN);
        mpfr_init(r53011);
        mpfr_init(r53012);
        mpfr_init(r53013);
        mpfr_init(r53014);
        mpfr_init(r53015);
        mpfr_init(r53016);
        mpfr_init(r53017);
        mpfr_init(r53018);
        mpfr_init(r53019);
        mpfr_init(r53020);
        mpfr_init(r53021);
        mpfr_init(r53022);
        mpfr_init(r53023);
        mpfr_init(r53024);
        mpfr_init(r53025);
        mpfr_init(r53026);
        mpfr_init(r53027);
        mpfr_init(r53028);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r52985, y, MPFR_RNDN);
        mpfr_set_d(r52986, z, MPFR_RNDN);
        mpfr_set_d(r52987, t, MPFR_RNDN);
        mpfr_mul(r52988, r52986, r52987, MPFR_RNDN);
        ;
        mpfr_div(r52990, r52988, r52989, MPFR_RNDN);
        mpfr_sub(r52991, r52985, r52990, MPFR_RNDN);
        ;
        mpfr_set_si(r52993, mpfr_cmp(r52991, r52992) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r52995, x, MPFR_RNDN);
        mpfr_sqrt(r52996, r52995, MPFR_RNDN);
        mpfr_mul(r52997, r52994, r52996, MPFR_RNDN);
        ;
        mpfr_div(r52999, r52998, r52985, MPFR_RNDN);
        ;
        mpfr_div(r53001, r53000, r52988, MPFR_RNDN);
        mpfr_sub(r53002, r52999, r53001, MPFR_RNDN);
        mpfr_cos(r53003, r53002, MPFR_RNDN);
        mpfr_mul(r53004, r52997, r53003, MPFR_RNDN);
        mpfr_set_d(r53005, a, MPFR_RNDN);
        mpfr_set_d(r53006, b, MPFR_RNDN);
        mpfr_mul(r53007, r53006, r52989, MPFR_RNDN);
        mpfr_div(r53008, r53005, r53007, MPFR_RNDN);
        mpfr_sub(r53009, r53004, r53008, MPFR_RNDN);
        ;
        mpfr_set_si(r53011, mpfr_cmp(r52991, r53010) <= 0, MPFR_RNDN);
        mpfr_cos(r53012, r52985, MPFR_RNDN);
        mpfr_cos(r53013, r52990, MPFR_RNDN);
        mpfr_cbrt(r53014, r53013, MPFR_RNDN);
        mpfr_mul(r53015, r53014, r53014, MPFR_RNDN);
        mpfr_mul(r53016, r53015, r53014, MPFR_RNDN);
        mpfr_cbrt(r53017, r53016, MPFR_RNDN);
        mpfr_mul(r53018, r53014, r53017, MPFR_RNDN);
        mpfr_mul(r53019, r53018, r53017, MPFR_RNDN);
        mpfr_mul(r53020, r53012, r53019, MPFR_RNDN);
        mpfr_sin(r53021, r52985, MPFR_RNDN);
        mpfr_sin(r53022, r52990, MPFR_RNDN);
        mpfr_mul(r53023, r53021, r53022, MPFR_RNDN);
        mpfr_add(r53024, r53020, r53023, MPFR_RNDN);
        mpfr_mul(r53025, r52997, r53024, MPFR_RNDN);
        mpfr_sub(r53026, r53025, r53008, MPFR_RNDN);
        if (mpfr_get_si(r53011, MPFR_RNDN)) { mpfr_set(r53027, r53026, MPFR_RNDN); } else { mpfr_set(r53027, r53009, MPFR_RNDN); };
        if (mpfr_get_si(r52993, MPFR_RNDN)) { mpfr_set(r53028, r53009, MPFR_RNDN); } else { mpfr_set(r53028, r53027, MPFR_RNDN); };
        return mpfr_get_d(r53028, MPFR_RNDN);
}

