#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "quad2m (problem 3.2.1, negative)";

double f_if(float a, float b_2F2, float c) {
        float r19861 = b_2F2;
        float r19862 = -r19861;
        float r19863 = r19861 * r19861;
        float r19864 = a;
        float r19865 = c;
        float r19866 = r19864 * r19865;
        float r19867 = r19863 - r19866;
        float r19868 = sqrt(r19867);
        float r19869 = r19862 - r19868;
        float r19870 = r19869 / r19864;
        return r19870;
}

double f_id(double a, double b_2F2, double c) {
        double r19871 = b_2F2;
        double r19872 = -r19871;
        double r19873 = r19871 * r19871;
        double r19874 = a;
        double r19875 = c;
        double r19876 = r19874 * r19875;
        double r19877 = r19873 - r19876;
        double r19878 = sqrt(r19877);
        double r19879 = r19872 - r19878;
        double r19880 = r19879 / r19874;
        return r19880;
}


double f_of(float a, float b_2F2, float c) {
        float r19881 = b_2F2;
        float r19882 = -7.894012571605834e+74;
        bool r19883 = r19881 <= r19882;
        float r19884 = c;
        float r19885 = r19884 / r19881;
        float r19886 = -1/2;
        float r19887 = r19885 * r19886;
        float r19888 = -2.0189149238035965e-245;
        bool r19889 = r19881 <= r19888;
        float r19890 = -r19881;
        float r19891 = r19881 * r19881;
        float r19892 = a;
        float r19893 = r19892 * r19884;
        float r19894 = r19891 - r19893;
        float r19895 = sqrt(r19894);
        float r19896 = r19890 + r19895;
        float r19897 = r19884 / r19896;
        float r19898 = cbrt(r19897);
        float r19899 = r19898 * r19898;
        float r19900 = r19899 * r19898;
        float r19901 = 8.555289335023329e+80;
        bool r19902 = r19881 <= r19901;
        float r19903 = r19890 - r19895;
        float r19904 = 1;
        float r19905 = r19904 / r19892;
        float r19906 = r19903 * r19905;
        float r19907 = -2;
        float r19908 = r19881 / r19892;
        float r19909 = r19907 * r19908;
        float r19910 = r19902 ? r19906 : r19909;
        float r19911 = r19889 ? r19900 : r19910;
        float r19912 = r19883 ? r19887 : r19911;
        return r19912;
}

double f_od(double a, double b_2F2, double c) {
        double r19913 = b_2F2;
        double r19914 = -7.894012571605834e+74;
        bool r19915 = r19913 <= r19914;
        double r19916 = c;
        double r19917 = r19916 / r19913;
        double r19918 = -1/2;
        double r19919 = r19917 * r19918;
        double r19920 = -2.0189149238035965e-245;
        bool r19921 = r19913 <= r19920;
        double r19922 = -r19913;
        double r19923 = r19913 * r19913;
        double r19924 = a;
        double r19925 = r19924 * r19916;
        double r19926 = r19923 - r19925;
        double r19927 = sqrt(r19926);
        double r19928 = r19922 + r19927;
        double r19929 = r19916 / r19928;
        double r19930 = cbrt(r19929);
        double r19931 = r19930 * r19930;
        double r19932 = r19931 * r19930;
        double r19933 = 8.555289335023329e+80;
        bool r19934 = r19913 <= r19933;
        double r19935 = r19922 - r19927;
        double r19936 = 1;
        double r19937 = r19936 / r19924;
        double r19938 = r19935 * r19937;
        double r19939 = -2;
        double r19940 = r19913 / r19924;
        double r19941 = r19939 * r19940;
        double r19942 = r19934 ? r19938 : r19941;
        double r19943 = r19921 ? r19932 : r19942;
        double r19944 = r19915 ? r19919 : r19943;
        return r19944;
}

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 r19945, r19946, r19947, r19948, r19949, r19950, r19951, r19952, r19953, r19954;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r19945);
        mpfr_init(r19946);
        mpfr_init(r19947);
        mpfr_init(r19948);
        mpfr_init(r19949);
        mpfr_init(r19950);
        mpfr_init(r19951);
        mpfr_init(r19952);
        mpfr_init(r19953);
        mpfr_init(r19954);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r19945, b_2F2, MPFR_RNDN);
        mpfr_neg(r19946, r19945, MPFR_RNDN);
        mpfr_mul(r19947, r19945, r19945, MPFR_RNDN);
        mpfr_set_d(r19948, a, MPFR_RNDN);
        mpfr_set_d(r19949, c, MPFR_RNDN);
        mpfr_mul(r19950, r19948, r19949, MPFR_RNDN);
        mpfr_sub(r19951, r19947, r19950, MPFR_RNDN);
        mpfr_sqrt(r19952, r19951, MPFR_RNDN);
        mpfr_sub(r19953, r19946, r19952, MPFR_RNDN);
        mpfr_div(r19954, r19953, r19948, MPFR_RNDN);
        return mpfr_get_d(r19954, MPFR_RNDN);
}

static mpfr_t r19955, r19956, r19957, r19958, r19959, r19960, r19961, r19962, r19963, r19964, r19965, r19966, r19967, r19968, r19969, r19970, r19971, r19972, r19973, r19974, r19975, r19976, r19977, r19978, r19979, r19980, r19981, r19982, r19983, r19984, r19985, r19986;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r19955);
        mpfr_init_set_str(r19956, "-7.894012571605834e+74", 10, MPFR_RNDN);
        mpfr_init(r19957);
        mpfr_init(r19958);
        mpfr_init(r19959);
        mpfr_init_set_str(r19960, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19961);
        mpfr_init_set_str(r19962, "-2.0189149238035965e-245", 10, MPFR_RNDN);
        mpfr_init(r19963);
        mpfr_init(r19964);
        mpfr_init(r19965);
        mpfr_init(r19966);
        mpfr_init(r19967);
        mpfr_init(r19968);
        mpfr_init(r19969);
        mpfr_init(r19970);
        mpfr_init(r19971);
        mpfr_init(r19972);
        mpfr_init(r19973);
        mpfr_init(r19974);
        mpfr_init_set_str(r19975, "8.555289335023329e+80", 10, MPFR_RNDN);
        mpfr_init(r19976);
        mpfr_init(r19977);
        mpfr_init_set_str(r19978, "1", 10, MPFR_RNDN);
        mpfr_init(r19979);
        mpfr_init(r19980);
        mpfr_init_set_str(r19981, "-2", 10, MPFR_RNDN);
        mpfr_init(r19982);
        mpfr_init(r19983);
        mpfr_init(r19984);
        mpfr_init(r19985);
        mpfr_init(r19986);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r19955, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19957, mpfr_cmp(r19955, r19956) <= 0, MPFR_RNDN);
        mpfr_set_d(r19958, c, MPFR_RNDN);
        mpfr_div(r19959, r19958, r19955, MPFR_RNDN);
        ;
        mpfr_mul(r19961, r19959, r19960, MPFR_RNDN);
        ;
        mpfr_set_si(r19963, mpfr_cmp(r19955, r19962) <= 0, MPFR_RNDN);
        mpfr_neg(r19964, r19955, MPFR_RNDN);
        mpfr_mul(r19965, r19955, r19955, MPFR_RNDN);
        mpfr_set_d(r19966, a, MPFR_RNDN);
        mpfr_mul(r19967, r19966, r19958, MPFR_RNDN);
        mpfr_sub(r19968, r19965, r19967, MPFR_RNDN);
        mpfr_sqrt(r19969, r19968, MPFR_RNDN);
        mpfr_add(r19970, r19964, r19969, MPFR_RNDN);
        mpfr_div(r19971, r19958, r19970, MPFR_RNDN);
        mpfr_cbrt(r19972, r19971, MPFR_RNDN);
        mpfr_mul(r19973, r19972, r19972, MPFR_RNDN);
        mpfr_mul(r19974, r19973, r19972, MPFR_RNDN);
        ;
        mpfr_set_si(r19976, mpfr_cmp(r19955, r19975) <= 0, MPFR_RNDN);
        mpfr_sub(r19977, r19964, r19969, MPFR_RNDN);
        ;
        mpfr_div(r19979, r19978, r19966, MPFR_RNDN);
        mpfr_mul(r19980, r19977, r19979, MPFR_RNDN);
        ;
        mpfr_div(r19982, r19955, r19966, MPFR_RNDN);
        mpfr_mul(r19983, r19981, r19982, MPFR_RNDN);
        if (mpfr_get_si(r19976, MPFR_RNDN)) { mpfr_set(r19984, r19980, MPFR_RNDN); } else { mpfr_set(r19984, r19983, MPFR_RNDN); };
        if (mpfr_get_si(r19963, MPFR_RNDN)) { mpfr_set(r19985, r19974, MPFR_RNDN); } else { mpfr_set(r19985, r19984, MPFR_RNDN); };
        if (mpfr_get_si(r19957, MPFR_RNDN)) { mpfr_set(r19986, r19961, MPFR_RNDN); } else { mpfr_set(r19986, r19985, MPFR_RNDN); };
        return mpfr_get_d(r19986, MPFR_RNDN);
}

static mpfr_t r19987, r19988, r19989, r19990, r19991, r19992, r19993, r19994, r19995, r19996, r19997, r19998, r19999, r20000, r20001, r20002, r20003, r20004, r20005, r20006, r20007, r20008, r20009, r20010, r20011, r20012, r20013, r20014, r20015, r20016, r20017, r20018;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r19987);
        mpfr_init_set_str(r19988, "-7.894012571605834e+74", 10, MPFR_RNDN);
        mpfr_init(r19989);
        mpfr_init(r19990);
        mpfr_init(r19991);
        mpfr_init_set_str(r19992, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r19993);
        mpfr_init_set_str(r19994, "-2.0189149238035965e-245", 10, MPFR_RNDN);
        mpfr_init(r19995);
        mpfr_init(r19996);
        mpfr_init(r19997);
        mpfr_init(r19998);
        mpfr_init(r19999);
        mpfr_init(r20000);
        mpfr_init(r20001);
        mpfr_init(r20002);
        mpfr_init(r20003);
        mpfr_init(r20004);
        mpfr_init(r20005);
        mpfr_init(r20006);
        mpfr_init_set_str(r20007, "8.555289335023329e+80", 10, MPFR_RNDN);
        mpfr_init(r20008);
        mpfr_init(r20009);
        mpfr_init_set_str(r20010, "1", 10, MPFR_RNDN);
        mpfr_init(r20011);
        mpfr_init(r20012);
        mpfr_init_set_str(r20013, "-2", 10, MPFR_RNDN);
        mpfr_init(r20014);
        mpfr_init(r20015);
        mpfr_init(r20016);
        mpfr_init(r20017);
        mpfr_init(r20018);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r19987, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19989, mpfr_cmp(r19987, r19988) <= 0, MPFR_RNDN);
        mpfr_set_d(r19990, c, MPFR_RNDN);
        mpfr_div(r19991, r19990, r19987, MPFR_RNDN);
        ;
        mpfr_mul(r19993, r19991, r19992, MPFR_RNDN);
        ;
        mpfr_set_si(r19995, mpfr_cmp(r19987, r19994) <= 0, MPFR_RNDN);
        mpfr_neg(r19996, r19987, MPFR_RNDN);
        mpfr_mul(r19997, r19987, r19987, MPFR_RNDN);
        mpfr_set_d(r19998, a, MPFR_RNDN);
        mpfr_mul(r19999, r19998, r19990, MPFR_RNDN);
        mpfr_sub(r20000, r19997, r19999, MPFR_RNDN);
        mpfr_sqrt(r20001, r20000, MPFR_RNDN);
        mpfr_add(r20002, r19996, r20001, MPFR_RNDN);
        mpfr_div(r20003, r19990, r20002, MPFR_RNDN);
        mpfr_cbrt(r20004, r20003, MPFR_RNDN);
        mpfr_mul(r20005, r20004, r20004, MPFR_RNDN);
        mpfr_mul(r20006, r20005, r20004, MPFR_RNDN);
        ;
        mpfr_set_si(r20008, mpfr_cmp(r19987, r20007) <= 0, MPFR_RNDN);
        mpfr_sub(r20009, r19996, r20001, MPFR_RNDN);
        ;
        mpfr_div(r20011, r20010, r19998, MPFR_RNDN);
        mpfr_mul(r20012, r20009, r20011, MPFR_RNDN);
        ;
        mpfr_div(r20014, r19987, r19998, MPFR_RNDN);
        mpfr_mul(r20015, r20013, r20014, MPFR_RNDN);
        if (mpfr_get_si(r20008, MPFR_RNDN)) { mpfr_set(r20016, r20012, MPFR_RNDN); } else { mpfr_set(r20016, r20015, MPFR_RNDN); };
        if (mpfr_get_si(r19995, MPFR_RNDN)) { mpfr_set(r20017, r20006, MPFR_RNDN); } else { mpfr_set(r20017, r20016, MPFR_RNDN); };
        if (mpfr_get_si(r19989, MPFR_RNDN)) { mpfr_set(r20018, r19993, MPFR_RNDN); } else { mpfr_set(r20018, r20017, MPFR_RNDN); };
        return mpfr_get_d(r20018, MPFR_RNDN);
}

