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

char *name = "quadm (p42, negative)";

double f_if(float a, float b, float c) {
        float r19831 = b;
        float r19832 = -r19831;
        float r19833 = r19831 * r19831;
        float r19834 = 4.0f;
        float r19835 = a;
        float r19836 = c;
        float r19837 = r19835 * r19836;
        float r19838 = r19834 * r19837;
        float r19839 = r19833 - r19838;
        float r19840 = sqrt(r19839);
        float r19841 = r19832 - r19840;
        float r19842 = 2.0f;
        float r19843 = r19842 * r19835;
        float r19844 = r19841 / r19843;
        return r19844;
}

double f_id(double a, double b, double c) {
        double r19845 = b;
        double r19846 = -r19845;
        double r19847 = r19845 * r19845;
        double r19848 = 4.0;
        double r19849 = a;
        double r19850 = c;
        double r19851 = r19849 * r19850;
        double r19852 = r19848 * r19851;
        double r19853 = r19847 - r19852;
        double r19854 = sqrt(r19853);
        double r19855 = r19846 - r19854;
        double r19856 = 2.0;
        double r19857 = r19856 * r19849;
        double r19858 = r19855 / r19857;
        return r19858;
}


double f_of(float a, float b, float c) {
        float r19859 = b;
        float r19860 = -3.460964309611288e+19f;
        bool r19861 = r19859 <= r19860;
        float r19862 = -r19859;
        float r19863 = r19862 + r19859;
        float r19864 = a;
        float r19865 = r19864 + r19864;
        float r19866 = r19863 / r19865;
        float r19867 = c;
        float r19868 = r19867 / r19859;
        float r19869 = r19866 - r19868;
        float r19870 = -5.874839546400093e-149f;
        bool r19871 = r19859 <= r19870;
        float r19872 = 4.0f;
        float r19873 = r19872 * r19867;
        float r19874 = r19864 * r19873;
        float r19875 = r19859 * r19859;
        float r19876 = r19864 * r19867;
        float r19877 = r19872 * r19876;
        float r19878 = r19875 - r19877;
        float r19879 = sqrt(r19878);
        float r19880 = r19862 + r19879;
        float r19881 = r19874 / r19880;
        float r19882 = 2.0f;
        float r19883 = r19882 * r19864;
        float r19884 = r19881 / r19883;
        float r19885 = 1.1073706101041596e+76f;
        bool r19886 = r19859 <= r19885;
        float r19887 = 1.0f;
        float r19888 = r19862 - r19879;
        float r19889 = r19883 / r19888;
        float r19890 = r19887 / r19889;
        float r19891 = r19862 / r19864;
        float r19892 = r19886 ? r19890 : r19891;
        float r19893 = r19871 ? r19884 : r19892;
        float r19894 = r19861 ? r19869 : r19893;
        return r19894;
}

double f_od(double a, double b, double c) {
        double r19895 = b;
        double r19896 = -3.460964309611288e+19;
        bool r19897 = r19895 <= r19896;
        double r19898 = -r19895;
        double r19899 = r19898 + r19895;
        double r19900 = a;
        double r19901 = r19900 + r19900;
        double r19902 = r19899 / r19901;
        double r19903 = c;
        double r19904 = r19903 / r19895;
        double r19905 = r19902 - r19904;
        double r19906 = -5.874839546400093e-149;
        bool r19907 = r19895 <= r19906;
        double r19908 = 4.0;
        double r19909 = r19908 * r19903;
        double r19910 = r19900 * r19909;
        double r19911 = r19895 * r19895;
        double r19912 = r19900 * r19903;
        double r19913 = r19908 * r19912;
        double r19914 = r19911 - r19913;
        double r19915 = sqrt(r19914);
        double r19916 = r19898 + r19915;
        double r19917 = r19910 / r19916;
        double r19918 = 2.0;
        double r19919 = r19918 * r19900;
        double r19920 = r19917 / r19919;
        double r19921 = 1.1073706101041596e+76;
        bool r19922 = r19895 <= r19921;
        double r19923 = 1.0;
        double r19924 = r19898 - r19915;
        double r19925 = r19919 / r19924;
        double r19926 = r19923 / r19925;
        double r19927 = r19898 / r19900;
        double r19928 = r19922 ? r19926 : r19927;
        double r19929 = r19907 ? r19920 : r19928;
        double r19930 = r19897 ? r19905 : r19929;
        return r19930;
}

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 r19931, r19932, r19933, r19934, r19935, r19936, r19937, r19938, r19939, r19940, r19941, r19942, r19943, r19944;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3216);
        mpfr_init(r19931);
        mpfr_init(r19932);
        mpfr_init(r19933);
        mpfr_init_set_str(r19934, "4", 10, MPFR_RNDN);
        mpfr_init(r19935);
        mpfr_init(r19936);
        mpfr_init(r19937);
        mpfr_init(r19938);
        mpfr_init(r19939);
        mpfr_init(r19940);
        mpfr_init(r19941);
        mpfr_init_set_str(r19942, "2", 10, MPFR_RNDN);
        mpfr_init(r19943);
        mpfr_init(r19944);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r19931, b, MPFR_RNDN);
        mpfr_neg(r19932, r19931, MPFR_RNDN);
        mpfr_sqr(r19933, r19931, MPFR_RNDN);
        ;
        mpfr_set_d(r19935, a, MPFR_RNDN);
        mpfr_set_d(r19936, c, MPFR_RNDN);
        mpfr_mul(r19937, r19935, r19936, MPFR_RNDN);
        mpfr_mul(r19938, r19934, r19937, MPFR_RNDN);
        mpfr_sub(r19939, r19933, r19938, MPFR_RNDN);
        mpfr_sqrt(r19940, r19939, MPFR_RNDN);
        mpfr_sub(r19941, r19932, r19940, MPFR_RNDN);
        ;
        mpfr_mul(r19943, r19942, r19935, MPFR_RNDN);
        mpfr_div(r19944, r19941, r19943, MPFR_RNDN);
        return mpfr_get_d(r19944, MPFR_RNDN);
}

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

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r19945);
        mpfr_init_set_str(r19946, "-3.460964309611288e+19", 10, MPFR_RNDN);
        mpfr_init(r19947);
        mpfr_init(r19948);
        mpfr_init(r19949);
        mpfr_init(r19950);
        mpfr_init(r19951);
        mpfr_init(r19952);
        mpfr_init(r19953);
        mpfr_init(r19954);
        mpfr_init(r19955);
        mpfr_init_set_str(r19956, "-5.874839546400093e-149", 10, MPFR_RNDN);
        mpfr_init(r19957);
        mpfr_init_set_str(r19958, "4", 10, MPFR_RNDN);
        mpfr_init(r19959);
        mpfr_init(r19960);
        mpfr_init(r19961);
        mpfr_init(r19962);
        mpfr_init(r19963);
        mpfr_init(r19964);
        mpfr_init(r19965);
        mpfr_init(r19966);
        mpfr_init(r19967);
        mpfr_init_set_str(r19968, "2", 10, MPFR_RNDN);
        mpfr_init(r19969);
        mpfr_init(r19970);
        mpfr_init_set_str(r19971, "1.1073706101041596e+76", 10, MPFR_RNDN);
        mpfr_init(r19972);
        mpfr_init_set_str(r19973, "1", 10, MPFR_RNDN);
        mpfr_init(r19974);
        mpfr_init(r19975);
        mpfr_init(r19976);
        mpfr_init(r19977);
        mpfr_init(r19978);
        mpfr_init(r19979);
        mpfr_init(r19980);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r19945, b, MPFR_RNDN);
        ;
        mpfr_set_si(r19947, mpfr_cmp(r19945, r19946) <= 0, MPFR_RNDN);
        mpfr_neg(r19948, r19945, MPFR_RNDN);
        mpfr_add(r19949, r19948, r19945, MPFR_RNDN);
        mpfr_set_d(r19950, a, MPFR_RNDN);
        mpfr_add(r19951, r19950, r19950, MPFR_RNDN);
        mpfr_div(r19952, r19949, r19951, MPFR_RNDN);
        mpfr_set_d(r19953, c, MPFR_RNDN);
        mpfr_div(r19954, r19953, r19945, MPFR_RNDN);
        mpfr_sub(r19955, r19952, r19954, MPFR_RNDN);
        ;
        mpfr_set_si(r19957, mpfr_cmp(r19945, r19956) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r19959, r19958, r19953, MPFR_RNDN);
        mpfr_mul(r19960, r19950, r19959, MPFR_RNDN);
        mpfr_sqr(r19961, r19945, MPFR_RNDN);
        mpfr_mul(r19962, r19950, r19953, MPFR_RNDN);
        mpfr_mul(r19963, r19958, r19962, MPFR_RNDN);
        mpfr_sub(r19964, r19961, r19963, MPFR_RNDN);
        mpfr_sqrt(r19965, r19964, MPFR_RNDN);
        mpfr_add(r19966, r19948, r19965, MPFR_RNDN);
        mpfr_div(r19967, r19960, r19966, MPFR_RNDN);
        ;
        mpfr_mul(r19969, r19968, r19950, MPFR_RNDN);
        mpfr_div(r19970, r19967, r19969, MPFR_RNDN);
        ;
        mpfr_set_si(r19972, mpfr_cmp(r19945, r19971) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r19974, r19948, r19965, MPFR_RNDN);
        mpfr_div(r19975, r19969, r19974, MPFR_RNDN);
        mpfr_div(r19976, r19973, r19975, MPFR_RNDN);
        mpfr_div(r19977, r19948, r19950, MPFR_RNDN);
        if (mpfr_get_si(r19972, MPFR_RNDN)) { mpfr_set(r19978, r19976, MPFR_RNDN); } else { mpfr_set(r19978, r19977, MPFR_RNDN); };
        if (mpfr_get_si(r19957, MPFR_RNDN)) { mpfr_set(r19979, r19970, MPFR_RNDN); } else { mpfr_set(r19979, r19978, MPFR_RNDN); };
        if (mpfr_get_si(r19947, MPFR_RNDN)) { mpfr_set(r19980, r19955, MPFR_RNDN); } else { mpfr_set(r19980, r19979, MPFR_RNDN); };
        return mpfr_get_d(r19980, MPFR_RNDN);
}

static mpfr_t r19981, r19982, r19983, r19984, r19985, r19986, 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r19981);
        mpfr_init_set_str(r19982, "-3.460964309611288e+19", 10, MPFR_RNDN);
        mpfr_init(r19983);
        mpfr_init(r19984);
        mpfr_init(r19985);
        mpfr_init(r19986);
        mpfr_init(r19987);
        mpfr_init(r19988);
        mpfr_init(r19989);
        mpfr_init(r19990);
        mpfr_init(r19991);
        mpfr_init_set_str(r19992, "-5.874839546400093e-149", 10, MPFR_RNDN);
        mpfr_init(r19993);
        mpfr_init_set_str(r19994, "4", 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_set_str(r20004, "2", 10, MPFR_RNDN);
        mpfr_init(r20005);
        mpfr_init(r20006);
        mpfr_init_set_str(r20007, "1.1073706101041596e+76", 10, MPFR_RNDN);
        mpfr_init(r20008);
        mpfr_init_set_str(r20009, "1", 10, MPFR_RNDN);
        mpfr_init(r20010);
        mpfr_init(r20011);
        mpfr_init(r20012);
        mpfr_init(r20013);
        mpfr_init(r20014);
        mpfr_init(r20015);
        mpfr_init(r20016);
}

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

