#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 r20837 = b_2F2;
        float r20838 = -r20837;
        float r20839 = r20837 * r20837;
        float r20840 = a;
        float r20841 = c;
        float r20842 = r20840 * r20841;
        float r20843 = r20839 - r20842;
        float r20844 = sqrt(r20843);
        float r20845 = r20838 - r20844;
        float r20846 = r20845 / r20840;
        return r20846;
}

double f_id(double a, double b_2F2, double c) {
        double r20847 = b_2F2;
        double r20848 = -r20847;
        double r20849 = r20847 * r20847;
        double r20850 = a;
        double r20851 = c;
        double r20852 = r20850 * r20851;
        double r20853 = r20849 - r20852;
        double r20854 = sqrt(r20853);
        double r20855 = r20848 - r20854;
        double r20856 = r20855 / r20850;
        return r20856;
}


double f_of(float a, float b_2F2, float c) {
        float r20857 = b_2F2;
        float r20858 = -3.877839606861253e+112;
        bool r20859 = r20857 <= r20858;
        float r20860 = c;
        float r20861 = 1/2;
        float r20862 = a;
        float r20863 = r20861 * r20862;
        float r20864 = r20857 / r20860;
        float r20865 = r20863 / r20864;
        float r20866 = r20857 + r20857;
        float r20867 = r20865 - r20866;
        float r20868 = r20860 / r20867;
        float r20869 = -5.527838341900433e-225;
        bool r20870 = r20857 <= r20869;
        float r20871 = r20860 * r20862;
        float r20872 = -r20857;
        float r20873 = r20857 * r20857;
        float r20874 = r20862 * r20860;
        float r20875 = r20873 - r20874;
        float r20876 = sqrt(r20875);
        float r20877 = r20872 + r20876;
        float r20878 = r20871 / r20877;
        float r20879 = r20878 / r20862;
        float r20880 = 7.377252555791355e+121;
        bool r20881 = r20857 <= r20880;
        float r20882 = 1;
        float r20883 = r20872 - r20876;
        float r20884 = r20862 / r20883;
        float r20885 = r20882 / r20884;
        float r20886 = +inf.0;
        bool r20887 = r20857 <= r20886;
        float r20888 = -2;
        float r20889 = r20857 / r20862;
        float r20890 = r20888 * r20889;
        float r20891 = r20887 ? r20890 : r20890;
        float r20892 = r20881 ? r20885 : r20891;
        float r20893 = r20870 ? r20879 : r20892;
        float r20894 = r20859 ? r20868 : r20893;
        return r20894;
}

double f_od(double a, double b_2F2, double c) {
        double r20895 = b_2F2;
        double r20896 = -3.877839606861253e+112;
        bool r20897 = r20895 <= r20896;
        double r20898 = c;
        double r20899 = 1/2;
        double r20900 = a;
        double r20901 = r20899 * r20900;
        double r20902 = r20895 / r20898;
        double r20903 = r20901 / r20902;
        double r20904 = r20895 + r20895;
        double r20905 = r20903 - r20904;
        double r20906 = r20898 / r20905;
        double r20907 = -5.527838341900433e-225;
        bool r20908 = r20895 <= r20907;
        double r20909 = r20898 * r20900;
        double r20910 = -r20895;
        double r20911 = r20895 * r20895;
        double r20912 = r20900 * r20898;
        double r20913 = r20911 - r20912;
        double r20914 = sqrt(r20913);
        double r20915 = r20910 + r20914;
        double r20916 = r20909 / r20915;
        double r20917 = r20916 / r20900;
        double r20918 = 7.377252555791355e+121;
        bool r20919 = r20895 <= r20918;
        double r20920 = 1;
        double r20921 = r20910 - r20914;
        double r20922 = r20900 / r20921;
        double r20923 = r20920 / r20922;
        double r20924 = +inf.0;
        bool r20925 = r20895 <= r20924;
        double r20926 = -2;
        double r20927 = r20895 / r20900;
        double r20928 = r20926 * r20927;
        double r20929 = r20925 ? r20928 : r20928;
        double r20930 = r20919 ? r20923 : r20929;
        double r20931 = r20908 ? r20917 : r20930;
        double r20932 = r20897 ? r20906 : r20931;
        return r20932;
}

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 r20933, r20934, r20935, r20936, r20937, r20938, r20939, r20940, r20941, r20942;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r20933);
        mpfr_init(r20934);
        mpfr_init(r20935);
        mpfr_init(r20936);
        mpfr_init(r20937);
        mpfr_init(r20938);
        mpfr_init(r20939);
        mpfr_init(r20940);
        mpfr_init(r20941);
        mpfr_init(r20942);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r20933, b_2F2, MPFR_RNDN);
        mpfr_neg(r20934, r20933, MPFR_RNDN);
        mpfr_mul(r20935, r20933, r20933, MPFR_RNDN);
        mpfr_set_d(r20936, a, MPFR_RNDN);
        mpfr_set_d(r20937, c, MPFR_RNDN);
        mpfr_mul(r20938, r20936, r20937, MPFR_RNDN);
        mpfr_sub(r20939, r20935, r20938, MPFR_RNDN);
        mpfr_sqrt(r20940, r20939, MPFR_RNDN);
        mpfr_sub(r20941, r20934, r20940, MPFR_RNDN);
        mpfr_div(r20942, r20941, r20936, MPFR_RNDN);
        return mpfr_get_d(r20942, MPFR_RNDN);
}

static mpfr_t r20943, r20944, r20945, r20946, r20947, r20948, r20949, r20950, r20951, r20952, r20953, r20954, r20955, r20956, r20957, r20958, r20959, r20960, r20961, r20962, r20963, r20964, r20965, r20966, r20967, r20968, r20969, r20970, r20971, r20972, r20973, r20974, r20975, r20976, r20977, r20978, r20979, r20980;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r20943);
        mpfr_init_set_str(r20944, "-3.877839606861253e+112", 10, MPFR_RNDN);
        mpfr_init(r20945);
        mpfr_init(r20946);
        mpfr_init_set_str(r20947, "1/2", 10, MPFR_RNDN);
        mpfr_init(r20948);
        mpfr_init(r20949);
        mpfr_init(r20950);
        mpfr_init(r20951);
        mpfr_init(r20952);
        mpfr_init(r20953);
        mpfr_init(r20954);
        mpfr_init_set_str(r20955, "-5.527838341900433e-225", 10, MPFR_RNDN);
        mpfr_init(r20956);
        mpfr_init(r20957);
        mpfr_init(r20958);
        mpfr_init(r20959);
        mpfr_init(r20960);
        mpfr_init(r20961);
        mpfr_init(r20962);
        mpfr_init(r20963);
        mpfr_init(r20964);
        mpfr_init(r20965);
        mpfr_init_set_str(r20966, "7.377252555791355e+121", 10, MPFR_RNDN);
        mpfr_init(r20967);
        mpfr_init_set_str(r20968, "1", 10, MPFR_RNDN);
        mpfr_init(r20969);
        mpfr_init(r20970);
        mpfr_init(r20971);
        mpfr_init_set_str(r20972, "+inf.0", 10, MPFR_RNDN);
        mpfr_init(r20973);
        mpfr_init_set_str(r20974, "-2", 10, MPFR_RNDN);
        mpfr_init(r20975);
        mpfr_init(r20976);
        mpfr_init(r20977);
        mpfr_init(r20978);
        mpfr_init(r20979);
        mpfr_init(r20980);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r20943, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r20945, mpfr_cmp(r20943, r20944) <= 0, MPFR_RNDN);
        mpfr_set_d(r20946, c, MPFR_RNDN);
        ;
        mpfr_set_d(r20948, a, MPFR_RNDN);
        mpfr_mul(r20949, r20947, r20948, MPFR_RNDN);
        mpfr_div(r20950, r20943, r20946, MPFR_RNDN);
        mpfr_div(r20951, r20949, r20950, MPFR_RNDN);
        mpfr_add(r20952, r20943, r20943, MPFR_RNDN);
        mpfr_sub(r20953, r20951, r20952, MPFR_RNDN);
        mpfr_div(r20954, r20946, r20953, MPFR_RNDN);
        ;
        mpfr_set_si(r20956, mpfr_cmp(r20943, r20955) <= 0, MPFR_RNDN);
        mpfr_mul(r20957, r20946, r20948, MPFR_RNDN);
        mpfr_neg(r20958, r20943, MPFR_RNDN);
        mpfr_mul(r20959, r20943, r20943, MPFR_RNDN);
        mpfr_mul(r20960, r20948, r20946, MPFR_RNDN);
        mpfr_sub(r20961, r20959, r20960, MPFR_RNDN);
        mpfr_sqrt(r20962, r20961, MPFR_RNDN);
        mpfr_add(r20963, r20958, r20962, MPFR_RNDN);
        mpfr_div(r20964, r20957, r20963, MPFR_RNDN);
        mpfr_div(r20965, r20964, r20948, MPFR_RNDN);
        ;
        mpfr_set_si(r20967, mpfr_cmp(r20943, r20966) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r20969, r20958, r20962, MPFR_RNDN);
        mpfr_div(r20970, r20948, r20969, MPFR_RNDN);
        mpfr_div(r20971, r20968, r20970, MPFR_RNDN);
        ;
        mpfr_set_si(r20973, mpfr_cmp(r20943, r20972) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r20975, r20943, r20948, MPFR_RNDN);
        mpfr_mul(r20976, r20974, r20975, MPFR_RNDN);
        if (mpfr_get_si(r20973, MPFR_RNDN)) { mpfr_set(r20977, r20976, MPFR_RNDN); } else { mpfr_set(r20977, r20976, MPFR_RNDN); };
        if (mpfr_get_si(r20967, MPFR_RNDN)) { mpfr_set(r20978, r20971, MPFR_RNDN); } else { mpfr_set(r20978, r20977, MPFR_RNDN); };
        if (mpfr_get_si(r20956, MPFR_RNDN)) { mpfr_set(r20979, r20965, MPFR_RNDN); } else { mpfr_set(r20979, r20978, MPFR_RNDN); };
        if (mpfr_get_si(r20945, MPFR_RNDN)) { mpfr_set(r20980, r20954, MPFR_RNDN); } else { mpfr_set(r20980, r20979, MPFR_RNDN); };
        return mpfr_get_d(r20980, MPFR_RNDN);
}

static mpfr_t r20981, r20982, r20983, r20984, r20985, r20986, r20987, r20988, r20989, r20990, r20991, r20992, r20993, r20994, r20995, r20996, r20997, r20998, r20999, r21000, r21001, r21002, r21003, r21004, r21005, r21006, r21007, r21008, r21009, r21010, r21011, r21012, r21013, r21014, r21015, r21016, r21017, r21018;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r20981);
        mpfr_init_set_str(r20982, "-3.877839606861253e+112", 10, MPFR_RNDN);
        mpfr_init(r20983);
        mpfr_init(r20984);
        mpfr_init_set_str(r20985, "1/2", 10, MPFR_RNDN);
        mpfr_init(r20986);
        mpfr_init(r20987);
        mpfr_init(r20988);
        mpfr_init(r20989);
        mpfr_init(r20990);
        mpfr_init(r20991);
        mpfr_init(r20992);
        mpfr_init_set_str(r20993, "-5.527838341900433e-225", 10, MPFR_RNDN);
        mpfr_init(r20994);
        mpfr_init(r20995);
        mpfr_init(r20996);
        mpfr_init(r20997);
        mpfr_init(r20998);
        mpfr_init(r20999);
        mpfr_init(r21000);
        mpfr_init(r21001);
        mpfr_init(r21002);
        mpfr_init(r21003);
        mpfr_init_set_str(r21004, "7.377252555791355e+121", 10, MPFR_RNDN);
        mpfr_init(r21005);
        mpfr_init_set_str(r21006, "1", 10, MPFR_RNDN);
        mpfr_init(r21007);
        mpfr_init(r21008);
        mpfr_init(r21009);
        mpfr_init_set_str(r21010, "+inf.0", 10, MPFR_RNDN);
        mpfr_init(r21011);
        mpfr_init_set_str(r21012, "-2", 10, MPFR_RNDN);
        mpfr_init(r21013);
        mpfr_init(r21014);
        mpfr_init(r21015);
        mpfr_init(r21016);
        mpfr_init(r21017);
        mpfr_init(r21018);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r20981, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r20983, mpfr_cmp(r20981, r20982) <= 0, MPFR_RNDN);
        mpfr_set_d(r20984, c, MPFR_RNDN);
        ;
        mpfr_set_d(r20986, a, MPFR_RNDN);
        mpfr_mul(r20987, r20985, r20986, MPFR_RNDN);
        mpfr_div(r20988, r20981, r20984, MPFR_RNDN);
        mpfr_div(r20989, r20987, r20988, MPFR_RNDN);
        mpfr_add(r20990, r20981, r20981, MPFR_RNDN);
        mpfr_sub(r20991, r20989, r20990, MPFR_RNDN);
        mpfr_div(r20992, r20984, r20991, MPFR_RNDN);
        ;
        mpfr_set_si(r20994, mpfr_cmp(r20981, r20993) <= 0, MPFR_RNDN);
        mpfr_mul(r20995, r20984, r20986, MPFR_RNDN);
        mpfr_neg(r20996, r20981, MPFR_RNDN);
        mpfr_mul(r20997, r20981, r20981, MPFR_RNDN);
        mpfr_mul(r20998, r20986, r20984, MPFR_RNDN);
        mpfr_sub(r20999, r20997, r20998, MPFR_RNDN);
        mpfr_sqrt(r21000, r20999, MPFR_RNDN);
        mpfr_add(r21001, r20996, r21000, MPFR_RNDN);
        mpfr_div(r21002, r20995, r21001, MPFR_RNDN);
        mpfr_div(r21003, r21002, r20986, MPFR_RNDN);
        ;
        mpfr_set_si(r21005, mpfr_cmp(r20981, r21004) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r21007, r20996, r21000, MPFR_RNDN);
        mpfr_div(r21008, r20986, r21007, MPFR_RNDN);
        mpfr_div(r21009, r21006, r21008, MPFR_RNDN);
        ;
        mpfr_set_si(r21011, mpfr_cmp(r20981, r21010) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r21013, r20981, r20986, MPFR_RNDN);
        mpfr_mul(r21014, r21012, r21013, MPFR_RNDN);
        if (mpfr_get_si(r21011, MPFR_RNDN)) { mpfr_set(r21015, r21014, MPFR_RNDN); } else { mpfr_set(r21015, r21014, MPFR_RNDN); };
        if (mpfr_get_si(r21005, MPFR_RNDN)) { mpfr_set(r21016, r21009, MPFR_RNDN); } else { mpfr_set(r21016, r21015, MPFR_RNDN); };
        if (mpfr_get_si(r20994, MPFR_RNDN)) { mpfr_set(r21017, r21003, MPFR_RNDN); } else { mpfr_set(r21017, r21016, MPFR_RNDN); };
        if (mpfr_get_si(r20983, MPFR_RNDN)) { mpfr_set(r21018, r20992, MPFR_RNDN); } else { mpfr_set(r21018, r21017, MPFR_RNDN); };
        return mpfr_get_d(r21018, MPFR_RNDN);
}

