#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 r18885 = b_2F2;
        float r18886 = -r18885;
        float r18887 = r18885 * r18885;
        float r18888 = a;
        float r18889 = c;
        float r18890 = r18888 * r18889;
        float r18891 = r18887 - r18890;
        float r18892 = sqrt(r18891);
        float r18893 = r18886 - r18892;
        float r18894 = r18893 / r18888;
        return r18894;
}

double f_id(double a, double b_2F2, double c) {
        double r18895 = b_2F2;
        double r18896 = -r18895;
        double r18897 = r18895 * r18895;
        double r18898 = a;
        double r18899 = c;
        double r18900 = r18898 * r18899;
        double r18901 = r18897 - r18900;
        double r18902 = sqrt(r18901);
        double r18903 = r18896 - r18902;
        double r18904 = r18903 / r18898;
        return r18904;
}


double f_of(float a, float b_2F2, float c) {
        float r18905 = b_2F2;
        float r18906 = -2.264928659976216e+29f;
        bool r18907 = r18905 <= r18906;
        float r18908 = c;
        float r18909 = r18908 / r18905;
        float r18910 = 0.5f;
        float r18911 = a;
        float r18912 = r18910 * r18911;
        float r18913 = r18909 * r18912;
        float r18914 = -r18905;
        float r18915 = r18905 - r18914;
        float r18916 = r18913 - r18915;
        float r18917 = r18908 / r18916;
        float r18918 = -5.874839546400093e-149f;
        bool r18919 = r18905 <= r18918;
        float r18920 = r18908 * r18911;
        float r18921 = r18905 * r18905;
        float r18922 = r18911 * r18908;
        float r18923 = r18921 - r18922;
        float r18924 = sqrt(r18923);
        float r18925 = r18914 + r18924;
        float r18926 = r18920 / r18925;
        float r18927 = r18926 / r18911;
        float r18928 = 1.1073706101041596e+76f;
        bool r18929 = r18905 <= r18928;
        float r18930 = 1.0f;
        float r18931 = r18914 - r18924;
        float r18932 = r18911 / r18931;
        float r18933 = r18930 / r18932;
        float r18934 = -2.0f;
        float r18935 = r18905 / r18911;
        float r18936 = r18934 * r18935;
        float r18937 = r18929 ? r18933 : r18936;
        float r18938 = r18919 ? r18927 : r18937;
        float r18939 = r18907 ? r18917 : r18938;
        return r18939;
}

double f_od(double a, double b_2F2, double c) {
        double r18940 = b_2F2;
        double r18941 = -2.264928659976216e+29;
        bool r18942 = r18940 <= r18941;
        double r18943 = c;
        double r18944 = r18943 / r18940;
        double r18945 = 0.5;
        double r18946 = a;
        double r18947 = r18945 * r18946;
        double r18948 = r18944 * r18947;
        double r18949 = -r18940;
        double r18950 = r18940 - r18949;
        double r18951 = r18948 - r18950;
        double r18952 = r18943 / r18951;
        double r18953 = -5.874839546400093e-149;
        bool r18954 = r18940 <= r18953;
        double r18955 = r18943 * r18946;
        double r18956 = r18940 * r18940;
        double r18957 = r18946 * r18943;
        double r18958 = r18956 - r18957;
        double r18959 = sqrt(r18958);
        double r18960 = r18949 + r18959;
        double r18961 = r18955 / r18960;
        double r18962 = r18961 / r18946;
        double r18963 = 1.1073706101041596e+76;
        bool r18964 = r18940 <= r18963;
        double r18965 = 1.0;
        double r18966 = r18949 - r18959;
        double r18967 = r18946 / r18966;
        double r18968 = r18965 / r18967;
        double r18969 = -2.0;
        double r18970 = r18940 / r18946;
        double r18971 = r18969 * r18970;
        double r18972 = r18964 ? r18968 : r18971;
        double r18973 = r18954 ? r18962 : r18972;
        double r18974 = r18942 ? r18952 : r18973;
        return r18974;
}

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 r18975, r18976, r18977, r18978, r18979, r18980, r18981, r18982, r18983, r18984;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3216);
        mpfr_init(r18975);
        mpfr_init(r18976);
        mpfr_init(r18977);
        mpfr_init(r18978);
        mpfr_init(r18979);
        mpfr_init(r18980);
        mpfr_init(r18981);
        mpfr_init(r18982);
        mpfr_init(r18983);
        mpfr_init(r18984);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r18975, b_2F2, MPFR_RNDN);
        mpfr_neg(r18976, r18975, MPFR_RNDN);
        mpfr_sqr(r18977, r18975, MPFR_RNDN);
        mpfr_set_d(r18978, a, MPFR_RNDN);
        mpfr_set_d(r18979, c, MPFR_RNDN);
        mpfr_mul(r18980, r18978, r18979, MPFR_RNDN);
        mpfr_sub(r18981, r18977, r18980, MPFR_RNDN);
        mpfr_sqrt(r18982, r18981, MPFR_RNDN);
        mpfr_sub(r18983, r18976, r18982, MPFR_RNDN);
        mpfr_div(r18984, r18983, r18978, MPFR_RNDN);
        return mpfr_get_d(r18984, MPFR_RNDN);
}

static mpfr_t r18985, r18986, r18987, r18988, r18989, r18990, r18991, r18992, r18993, r18994, r18995, r18996, r18997, r18998, r18999, r19000, r19001, r19002, r19003, r19004, r19005, r19006, r19007, r19008, r19009, r19010, r19011, r19012, r19013, r19014, r19015, r19016, r19017, r19018, r19019;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r18985);
        mpfr_init_set_str(r18986, "-2.264928659976216e+29", 10, MPFR_RNDN);
        mpfr_init(r18987);
        mpfr_init(r18988);
        mpfr_init(r18989);
        mpfr_init_set_str(r18990, "1/2", 10, MPFR_RNDN);
        mpfr_init(r18991);
        mpfr_init(r18992);
        mpfr_init(r18993);
        mpfr_init(r18994);
        mpfr_init(r18995);
        mpfr_init(r18996);
        mpfr_init(r18997);
        mpfr_init_set_str(r18998, "-5.874839546400093e-149", 10, MPFR_RNDN);
        mpfr_init(r18999);
        mpfr_init(r19000);
        mpfr_init(r19001);
        mpfr_init(r19002);
        mpfr_init(r19003);
        mpfr_init(r19004);
        mpfr_init(r19005);
        mpfr_init(r19006);
        mpfr_init(r19007);
        mpfr_init_set_str(r19008, "1.1073706101041596e+76", 10, MPFR_RNDN);
        mpfr_init(r19009);
        mpfr_init_set_str(r19010, "1", 10, MPFR_RNDN);
        mpfr_init(r19011);
        mpfr_init(r19012);
        mpfr_init(r19013);
        mpfr_init_set_str(r19014, "-2", 10, MPFR_RNDN);
        mpfr_init(r19015);
        mpfr_init(r19016);
        mpfr_init(r19017);
        mpfr_init(r19018);
        mpfr_init(r19019);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r18985, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r18987, mpfr_cmp(r18985, r18986) <= 0, MPFR_RNDN);
        mpfr_set_d(r18988, c, MPFR_RNDN);
        mpfr_div(r18989, r18988, r18985, MPFR_RNDN);
        ;
        mpfr_set_d(r18991, a, MPFR_RNDN);
        mpfr_mul(r18992, r18990, r18991, MPFR_RNDN);
        mpfr_mul(r18993, r18989, r18992, MPFR_RNDN);
        mpfr_neg(r18994, r18985, MPFR_RNDN);
        mpfr_sub(r18995, r18985, r18994, MPFR_RNDN);
        mpfr_sub(r18996, r18993, r18995, MPFR_RNDN);
        mpfr_div(r18997, r18988, r18996, MPFR_RNDN);
        ;
        mpfr_set_si(r18999, mpfr_cmp(r18985, r18998) <= 0, MPFR_RNDN);
        mpfr_mul(r19000, r18988, r18991, MPFR_RNDN);
        mpfr_sqr(r19001, r18985, MPFR_RNDN);
        mpfr_mul(r19002, r18991, r18988, MPFR_RNDN);
        mpfr_sub(r19003, r19001, r19002, MPFR_RNDN);
        mpfr_sqrt(r19004, r19003, MPFR_RNDN);
        mpfr_add(r19005, r18994, r19004, MPFR_RNDN);
        mpfr_div(r19006, r19000, r19005, MPFR_RNDN);
        mpfr_div(r19007, r19006, r18991, MPFR_RNDN);
        ;
        mpfr_set_si(r19009, mpfr_cmp(r18985, r19008) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r19011, r18994, r19004, MPFR_RNDN);
        mpfr_div(r19012, r18991, r19011, MPFR_RNDN);
        mpfr_div(r19013, r19010, r19012, MPFR_RNDN);
        ;
        mpfr_div(r19015, r18985, r18991, MPFR_RNDN);
        mpfr_mul(r19016, r19014, r19015, MPFR_RNDN);
        if (mpfr_get_si(r19009, MPFR_RNDN)) { mpfr_set(r19017, r19013, MPFR_RNDN); } else { mpfr_set(r19017, r19016, MPFR_RNDN); };
        if (mpfr_get_si(r18999, MPFR_RNDN)) { mpfr_set(r19018, r19007, MPFR_RNDN); } else { mpfr_set(r19018, r19017, MPFR_RNDN); };
        if (mpfr_get_si(r18987, MPFR_RNDN)) { mpfr_set(r19019, r18997, MPFR_RNDN); } else { mpfr_set(r19019, r19018, MPFR_RNDN); };
        return mpfr_get_d(r19019, MPFR_RNDN);
}

static mpfr_t r19020, r19021, r19022, r19023, r19024, r19025, r19026, r19027, r19028, r19029, r19030, r19031, r19032, r19033, r19034, r19035, r19036, r19037, r19038, r19039, r19040, r19041, r19042, r19043, r19044, r19045, r19046, r19047, r19048, r19049, r19050, r19051, r19052, r19053, r19054;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3216);
        mpfr_init(r19020);
        mpfr_init_set_str(r19021, "-2.264928659976216e+29", 10, MPFR_RNDN);
        mpfr_init(r19022);
        mpfr_init(r19023);
        mpfr_init(r19024);
        mpfr_init_set_str(r19025, "1/2", 10, MPFR_RNDN);
        mpfr_init(r19026);
        mpfr_init(r19027);
        mpfr_init(r19028);
        mpfr_init(r19029);
        mpfr_init(r19030);
        mpfr_init(r19031);
        mpfr_init(r19032);
        mpfr_init_set_str(r19033, "-5.874839546400093e-149", 10, MPFR_RNDN);
        mpfr_init(r19034);
        mpfr_init(r19035);
        mpfr_init(r19036);
        mpfr_init(r19037);
        mpfr_init(r19038);
        mpfr_init(r19039);
        mpfr_init(r19040);
        mpfr_init(r19041);
        mpfr_init(r19042);
        mpfr_init_set_str(r19043, "1.1073706101041596e+76", 10, MPFR_RNDN);
        mpfr_init(r19044);
        mpfr_init_set_str(r19045, "1", 10, MPFR_RNDN);
        mpfr_init(r19046);
        mpfr_init(r19047);
        mpfr_init(r19048);
        mpfr_init_set_str(r19049, "-2", 10, MPFR_RNDN);
        mpfr_init(r19050);
        mpfr_init(r19051);
        mpfr_init(r19052);
        mpfr_init(r19053);
        mpfr_init(r19054);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r19020, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r19022, mpfr_cmp(r19020, r19021) <= 0, MPFR_RNDN);
        mpfr_set_d(r19023, c, MPFR_RNDN);
        mpfr_div(r19024, r19023, r19020, MPFR_RNDN);
        ;
        mpfr_set_d(r19026, a, MPFR_RNDN);
        mpfr_mul(r19027, r19025, r19026, MPFR_RNDN);
        mpfr_mul(r19028, r19024, r19027, MPFR_RNDN);
        mpfr_neg(r19029, r19020, MPFR_RNDN);
        mpfr_sub(r19030, r19020, r19029, MPFR_RNDN);
        mpfr_sub(r19031, r19028, r19030, MPFR_RNDN);
        mpfr_div(r19032, r19023, r19031, MPFR_RNDN);
        ;
        mpfr_set_si(r19034, mpfr_cmp(r19020, r19033) <= 0, MPFR_RNDN);
        mpfr_mul(r19035, r19023, r19026, MPFR_RNDN);
        mpfr_sqr(r19036, r19020, MPFR_RNDN);
        mpfr_mul(r19037, r19026, r19023, MPFR_RNDN);
        mpfr_sub(r19038, r19036, r19037, MPFR_RNDN);
        mpfr_sqrt(r19039, r19038, MPFR_RNDN);
        mpfr_add(r19040, r19029, r19039, MPFR_RNDN);
        mpfr_div(r19041, r19035, r19040, MPFR_RNDN);
        mpfr_div(r19042, r19041, r19026, MPFR_RNDN);
        ;
        mpfr_set_si(r19044, mpfr_cmp(r19020, r19043) <= 0, MPFR_RNDN);
        ;
        mpfr_sub(r19046, r19029, r19039, MPFR_RNDN);
        mpfr_div(r19047, r19026, r19046, MPFR_RNDN);
        mpfr_div(r19048, r19045, r19047, MPFR_RNDN);
        ;
        mpfr_div(r19050, r19020, r19026, MPFR_RNDN);
        mpfr_mul(r19051, r19049, r19050, MPFR_RNDN);
        if (mpfr_get_si(r19044, MPFR_RNDN)) { mpfr_set(r19052, r19048, MPFR_RNDN); } else { mpfr_set(r19052, r19051, MPFR_RNDN); };
        if (mpfr_get_si(r19034, MPFR_RNDN)) { mpfr_set(r19053, r19042, MPFR_RNDN); } else { mpfr_set(r19053, r19052, MPFR_RNDN); };
        if (mpfr_get_si(r19022, MPFR_RNDN)) { mpfr_set(r19054, r19032, MPFR_RNDN); } else { mpfr_set(r19054, r19053, MPFR_RNDN); };
        return mpfr_get_d(r19054, MPFR_RNDN);
}

