#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 r19916 = b_2F2;
        float r19917 = -r19916;
        float r19918 = r19916 * r19916;
        float r19919 = a;
        float r19920 = c;
        float r19921 = r19919 * r19920;
        float r19922 = r19918 - r19921;
        float r19923 = sqrt(r19922);
        float r19924 = r19917 - r19923;
        float r19925 = r19924 / r19919;
        return r19925;
}

double f_id(double a, double b_2F2, double c) {
        double r19926 = b_2F2;
        double r19927 = -r19926;
        double r19928 = r19926 * r19926;
        double r19929 = a;
        double r19930 = c;
        double r19931 = r19929 * r19930;
        double r19932 = r19928 - r19931;
        double r19933 = sqrt(r19932);
        double r19934 = r19927 - r19933;
        double r19935 = r19934 / r19929;
        return r19935;
}


double f_of(float a, float b_2F2, float c) {
        float r19936 = b_2F2;
        float r19937 = -7.094821279311991e+50;
        bool r19938 = r19936 <= r19937;
        float r19939 = c;
        float r19940 = r19939 / r19936;
        float r19941 = -1/2;
        float r19942 = r19940 * r19941;
        float r19943 = -8935664797341.434;
        bool r19944 = r19936 <= r19943;
        float r19945 = a;
        float r19946 = r19939 * r19945;
        float r19947 = -r19936;
        float r19948 = r19936 * r19936;
        float r19949 = r19945 * r19939;
        float r19950 = r19948 - r19949;
        float r19951 = sqrt(r19950);
        float r19952 = r19947 + r19951;
        float r19953 = r19946 / r19952;
        float r19954 = r19953 / r19945;
        float r19955 = -1.660099227068191e-124;
        bool r19956 = r19936 <= r19955;
        float r19957 = 4.521805228743851e+91;
        bool r19958 = r19936 <= r19957;
        float r19959 = r19947 - r19951;
        float r19960 = 1;
        float r19961 = r19960 / r19945;
        float r19962 = r19959 * r19961;
        float r19963 = -2;
        float r19964 = r19936 / r19945;
        float r19965 = r19963 * r19964;
        float r19966 = r19958 ? r19962 : r19965;
        float r19967 = r19956 ? r19942 : r19966;
        float r19968 = r19944 ? r19954 : r19967;
        float r19969 = r19938 ? r19942 : r19968;
        return r19969;
}

double f_od(double a, double b_2F2, double c) {
        double r19970 = b_2F2;
        double r19971 = -7.094821279311991e+50;
        bool r19972 = r19970 <= r19971;
        double r19973 = c;
        double r19974 = r19973 / r19970;
        double r19975 = -1/2;
        double r19976 = r19974 * r19975;
        double r19977 = -8935664797341.434;
        bool r19978 = r19970 <= r19977;
        double r19979 = a;
        double r19980 = r19973 * r19979;
        double r19981 = -r19970;
        double r19982 = r19970 * r19970;
        double r19983 = r19979 * r19973;
        double r19984 = r19982 - r19983;
        double r19985 = sqrt(r19984);
        double r19986 = r19981 + r19985;
        double r19987 = r19980 / r19986;
        double r19988 = r19987 / r19979;
        double r19989 = -1.660099227068191e-124;
        bool r19990 = r19970 <= r19989;
        double r19991 = 4.521805228743851e+91;
        bool r19992 = r19970 <= r19991;
        double r19993 = r19981 - r19985;
        double r19994 = 1;
        double r19995 = r19994 / r19979;
        double r19996 = r19993 * r19995;
        double r19997 = -2;
        double r19998 = r19970 / r19979;
        double r19999 = r19997 * r19998;
        double r20000 = r19992 ? r19996 : r19999;
        double r20001 = r19990 ? r19976 : r20000;
        double r20002 = r19978 ? r19988 : r20001;
        double r20003 = r19972 ? r19976 : r20002;
        return r20003;
}

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 r20004, r20005, r20006, r20007, r20008, r20009, r20010, r20011, r20012, r20013;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r20004);
        mpfr_init(r20005);
        mpfr_init(r20006);
        mpfr_init(r20007);
        mpfr_init(r20008);
        mpfr_init(r20009);
        mpfr_init(r20010);
        mpfr_init(r20011);
        mpfr_init(r20012);
        mpfr_init(r20013);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r20004, b_2F2, MPFR_RNDN);
        mpfr_neg(r20005, r20004, MPFR_RNDN);
        mpfr_mul(r20006, r20004, r20004, MPFR_RNDN);
        mpfr_set_d(r20007, a, MPFR_RNDN);
        mpfr_set_d(r20008, c, MPFR_RNDN);
        mpfr_mul(r20009, r20007, r20008, MPFR_RNDN);
        mpfr_sub(r20010, r20006, r20009, MPFR_RNDN);
        mpfr_sqrt(r20011, r20010, MPFR_RNDN);
        mpfr_sub(r20012, r20005, r20011, MPFR_RNDN);
        mpfr_div(r20013, r20012, r20007, MPFR_RNDN);
        return mpfr_get_d(r20013, MPFR_RNDN);
}

static mpfr_t r20014, r20015, r20016, r20017, r20018, r20019, r20020, r20021, r20022, r20023, r20024, r20025, r20026, r20027, r20028, r20029, r20030, r20031, r20032, r20033, r20034, r20035, r20036, r20037, r20038, r20039, r20040, r20041, r20042, r20043, r20044, r20045, r20046, r20047;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r20014);
        mpfr_init_set_str(r20015, "-7.094821279311991e+50", 10, MPFR_RNDN);
        mpfr_init(r20016);
        mpfr_init(r20017);
        mpfr_init(r20018);
        mpfr_init_set_str(r20019, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r20020);
        mpfr_init_set_str(r20021, "-8935664797341.434", 10, MPFR_RNDN);
        mpfr_init(r20022);
        mpfr_init(r20023);
        mpfr_init(r20024);
        mpfr_init(r20025);
        mpfr_init(r20026);
        mpfr_init(r20027);
        mpfr_init(r20028);
        mpfr_init(r20029);
        mpfr_init(r20030);
        mpfr_init(r20031);
        mpfr_init(r20032);
        mpfr_init_set_str(r20033, "-1.660099227068191e-124", 10, MPFR_RNDN);
        mpfr_init(r20034);
        mpfr_init_set_str(r20035, "4.521805228743851e+91", 10, MPFR_RNDN);
        mpfr_init(r20036);
        mpfr_init(r20037);
        mpfr_init_set_str(r20038, "1", 10, MPFR_RNDN);
        mpfr_init(r20039);
        mpfr_init(r20040);
        mpfr_init_set_str(r20041, "-2", 10, MPFR_RNDN);
        mpfr_init(r20042);
        mpfr_init(r20043);
        mpfr_init(r20044);
        mpfr_init(r20045);
        mpfr_init(r20046);
        mpfr_init(r20047);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r20014, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r20016, mpfr_cmp(r20014, r20015) <= 0, MPFR_RNDN);
        mpfr_set_d(r20017, c, MPFR_RNDN);
        mpfr_div(r20018, r20017, r20014, MPFR_RNDN);
        ;
        mpfr_mul(r20020, r20018, r20019, MPFR_RNDN);
        ;
        mpfr_set_si(r20022, mpfr_cmp(r20014, r20021) <= 0, MPFR_RNDN);
        mpfr_set_d(r20023, a, MPFR_RNDN);
        mpfr_mul(r20024, r20017, r20023, MPFR_RNDN);
        mpfr_neg(r20025, r20014, MPFR_RNDN);
        mpfr_mul(r20026, r20014, r20014, MPFR_RNDN);
        mpfr_mul(r20027, r20023, r20017, MPFR_RNDN);
        mpfr_sub(r20028, r20026, r20027, MPFR_RNDN);
        mpfr_sqrt(r20029, r20028, MPFR_RNDN);
        mpfr_add(r20030, r20025, r20029, MPFR_RNDN);
        mpfr_div(r20031, r20024, r20030, MPFR_RNDN);
        mpfr_div(r20032, r20031, r20023, MPFR_RNDN);
        ;
        mpfr_set_si(r20034, mpfr_cmp(r20014, r20033) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r20036, mpfr_cmp(r20014, r20035) <= 0, MPFR_RNDN);
        mpfr_sub(r20037, r20025, r20029, MPFR_RNDN);
        ;
        mpfr_div(r20039, r20038, r20023, MPFR_RNDN);
        mpfr_mul(r20040, r20037, r20039, MPFR_RNDN);
        ;
        mpfr_div(r20042, r20014, r20023, MPFR_RNDN);
        mpfr_mul(r20043, r20041, r20042, MPFR_RNDN);
        if (mpfr_get_si(r20036, MPFR_RNDN)) { mpfr_set(r20044, r20040, MPFR_RNDN); } else { mpfr_set(r20044, r20043, MPFR_RNDN); };
        if (mpfr_get_si(r20034, MPFR_RNDN)) { mpfr_set(r20045, r20020, MPFR_RNDN); } else { mpfr_set(r20045, r20044, MPFR_RNDN); };
        if (mpfr_get_si(r20022, MPFR_RNDN)) { mpfr_set(r20046, r20032, MPFR_RNDN); } else { mpfr_set(r20046, r20045, MPFR_RNDN); };
        if (mpfr_get_si(r20016, MPFR_RNDN)) { mpfr_set(r20047, r20020, MPFR_RNDN); } else { mpfr_set(r20047, r20046, MPFR_RNDN); };
        return mpfr_get_d(r20047, MPFR_RNDN);
}

static mpfr_t r20048, r20049, r20050, r20051, r20052, r20053, r20054, r20055, r20056, r20057, r20058, r20059, r20060, r20061, r20062, r20063, r20064, r20065, r20066, r20067, r20068, r20069, r20070, r20071, r20072, r20073, r20074, r20075, r20076, r20077, r20078, r20079, r20080, r20081;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r20048);
        mpfr_init_set_str(r20049, "-7.094821279311991e+50", 10, MPFR_RNDN);
        mpfr_init(r20050);
        mpfr_init(r20051);
        mpfr_init(r20052);
        mpfr_init_set_str(r20053, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r20054);
        mpfr_init_set_str(r20055, "-8935664797341.434", 10, MPFR_RNDN);
        mpfr_init(r20056);
        mpfr_init(r20057);
        mpfr_init(r20058);
        mpfr_init(r20059);
        mpfr_init(r20060);
        mpfr_init(r20061);
        mpfr_init(r20062);
        mpfr_init(r20063);
        mpfr_init(r20064);
        mpfr_init(r20065);
        mpfr_init(r20066);
        mpfr_init_set_str(r20067, "-1.660099227068191e-124", 10, MPFR_RNDN);
        mpfr_init(r20068);
        mpfr_init_set_str(r20069, "4.521805228743851e+91", 10, MPFR_RNDN);
        mpfr_init(r20070);
        mpfr_init(r20071);
        mpfr_init_set_str(r20072, "1", 10, MPFR_RNDN);
        mpfr_init(r20073);
        mpfr_init(r20074);
        mpfr_init_set_str(r20075, "-2", 10, MPFR_RNDN);
        mpfr_init(r20076);
        mpfr_init(r20077);
        mpfr_init(r20078);
        mpfr_init(r20079);
        mpfr_init(r20080);
        mpfr_init(r20081);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r20048, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r20050, mpfr_cmp(r20048, r20049) <= 0, MPFR_RNDN);
        mpfr_set_d(r20051, c, MPFR_RNDN);
        mpfr_div(r20052, r20051, r20048, MPFR_RNDN);
        ;
        mpfr_mul(r20054, r20052, r20053, MPFR_RNDN);
        ;
        mpfr_set_si(r20056, mpfr_cmp(r20048, r20055) <= 0, MPFR_RNDN);
        mpfr_set_d(r20057, a, MPFR_RNDN);
        mpfr_mul(r20058, r20051, r20057, MPFR_RNDN);
        mpfr_neg(r20059, r20048, MPFR_RNDN);
        mpfr_mul(r20060, r20048, r20048, MPFR_RNDN);
        mpfr_mul(r20061, r20057, r20051, MPFR_RNDN);
        mpfr_sub(r20062, r20060, r20061, MPFR_RNDN);
        mpfr_sqrt(r20063, r20062, MPFR_RNDN);
        mpfr_add(r20064, r20059, r20063, MPFR_RNDN);
        mpfr_div(r20065, r20058, r20064, MPFR_RNDN);
        mpfr_div(r20066, r20065, r20057, MPFR_RNDN);
        ;
        mpfr_set_si(r20068, mpfr_cmp(r20048, r20067) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r20070, mpfr_cmp(r20048, r20069) <= 0, MPFR_RNDN);
        mpfr_sub(r20071, r20059, r20063, MPFR_RNDN);
        ;
        mpfr_div(r20073, r20072, r20057, MPFR_RNDN);
        mpfr_mul(r20074, r20071, r20073, MPFR_RNDN);
        ;
        mpfr_div(r20076, r20048, r20057, MPFR_RNDN);
        mpfr_mul(r20077, r20075, r20076, MPFR_RNDN);
        if (mpfr_get_si(r20070, MPFR_RNDN)) { mpfr_set(r20078, r20074, MPFR_RNDN); } else { mpfr_set(r20078, r20077, MPFR_RNDN); };
        if (mpfr_get_si(r20068, MPFR_RNDN)) { mpfr_set(r20079, r20054, MPFR_RNDN); } else { mpfr_set(r20079, r20078, MPFR_RNDN); };
        if (mpfr_get_si(r20056, MPFR_RNDN)) { mpfr_set(r20080, r20066, MPFR_RNDN); } else { mpfr_set(r20080, r20079, MPFR_RNDN); };
        if (mpfr_get_si(r20050, MPFR_RNDN)) { mpfr_set(r20081, r20054, MPFR_RNDN); } else { mpfr_set(r20081, r20080, MPFR_RNDN); };
        return mpfr_get_d(r20081, MPFR_RNDN);
}

