#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 r19944 = b_2F2;
        float r19945 = -r19944;
        float r19946 = r19944 * r19944;
        float r19947 = a;
        float r19948 = c;
        float r19949 = r19947 * r19948;
        float r19950 = r19946 - r19949;
        float r19951 = sqrt(r19950);
        float r19952 = r19945 - r19951;
        float r19953 = r19952 / r19947;
        return r19953;
}

double f_id(double a, double b_2F2, double c) {
        double r19954 = b_2F2;
        double r19955 = -r19954;
        double r19956 = r19954 * r19954;
        double r19957 = a;
        double r19958 = c;
        double r19959 = r19957 * r19958;
        double r19960 = r19956 - r19959;
        double r19961 = sqrt(r19960);
        double r19962 = r19955 - r19961;
        double r19963 = r19962 / r19957;
        return r19963;
}


double f_of(float a, float b_2F2, float c) {
        float r19964 = b_2F2;
        float r19965 = -7.094821279311991e+50;
        bool r19966 = r19964 <= r19965;
        float r19967 = c;
        float r19968 = r19967 / r19964;
        float r19969 = -1/2;
        float r19970 = r19968 * r19969;
        float r19971 = -8935664797341.434;
        bool r19972 = r19964 <= r19971;
        float r19973 = a;
        float r19974 = r19967 * r19973;
        float r19975 = -r19964;
        float r19976 = r19964 * r19964;
        float r19977 = r19973 * r19967;
        float r19978 = r19976 - r19977;
        float r19979 = sqrt(r19978);
        float r19980 = r19975 + r19979;
        float r19981 = r19974 / r19980;
        float r19982 = r19981 / r19973;
        float r19983 = -1.660099227068191e-124;
        bool r19984 = r19964 <= r19983;
        float r19985 = 4.521805228743851e+91;
        bool r19986 = r19964 <= r19985;
        float r19987 = r19975 - r19979;
        float r19988 = 1;
        float r19989 = r19988 / r19973;
        float r19990 = r19987 * r19989;
        float r19991 = -2;
        float r19992 = r19964 / r19973;
        float r19993 = r19991 * r19992;
        float r19994 = r19986 ? r19990 : r19993;
        float r19995 = r19984 ? r19970 : r19994;
        float r19996 = r19972 ? r19982 : r19995;
        float r19997 = r19966 ? r19970 : r19996;
        return r19997;
}

double f_od(double a, double b_2F2, double c) {
        double r19998 = b_2F2;
        double r19999 = -7.094821279311991e+50;
        bool r20000 = r19998 <= r19999;
        double r20001 = c;
        double r20002 = r20001 / r19998;
        double r20003 = -1/2;
        double r20004 = r20002 * r20003;
        double r20005 = -8935664797341.434;
        bool r20006 = r19998 <= r20005;
        double r20007 = a;
        double r20008 = r20001 * r20007;
        double r20009 = -r19998;
        double r20010 = r19998 * r19998;
        double r20011 = r20007 * r20001;
        double r20012 = r20010 - r20011;
        double r20013 = sqrt(r20012);
        double r20014 = r20009 + r20013;
        double r20015 = r20008 / r20014;
        double r20016 = r20015 / r20007;
        double r20017 = -1.660099227068191e-124;
        bool r20018 = r19998 <= r20017;
        double r20019 = 4.521805228743851e+91;
        bool r20020 = r19998 <= r20019;
        double r20021 = r20009 - r20013;
        double r20022 = 1;
        double r20023 = r20022 / r20007;
        double r20024 = r20021 * r20023;
        double r20025 = -2;
        double r20026 = r19998 / r20007;
        double r20027 = r20025 * r20026;
        double r20028 = r20020 ? r20024 : r20027;
        double r20029 = r20018 ? r20004 : r20028;
        double r20030 = r20006 ? r20016 : r20029;
        double r20031 = r20000 ? r20004 : r20030;
        return r20031;
}

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 r20032, r20033, r20034, r20035, r20036, r20037, r20038, r20039, r20040, r20041;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r20032);
        mpfr_init(r20033);
        mpfr_init(r20034);
        mpfr_init(r20035);
        mpfr_init(r20036);
        mpfr_init(r20037);
        mpfr_init(r20038);
        mpfr_init(r20039);
        mpfr_init(r20040);
        mpfr_init(r20041);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r20032, b_2F2, MPFR_RNDN);
        mpfr_neg(r20033, r20032, MPFR_RNDN);
        mpfr_mul(r20034, r20032, r20032, MPFR_RNDN);
        mpfr_set_d(r20035, a, MPFR_RNDN);
        mpfr_set_d(r20036, c, MPFR_RNDN);
        mpfr_mul(r20037, r20035, r20036, MPFR_RNDN);
        mpfr_sub(r20038, r20034, r20037, MPFR_RNDN);
        mpfr_sqrt(r20039, r20038, MPFR_RNDN);
        mpfr_sub(r20040, r20033, r20039, MPFR_RNDN);
        mpfr_div(r20041, r20040, r20035, MPFR_RNDN);
        return mpfr_get_d(r20041, MPFR_RNDN);
}

static mpfr_t r20042, r20043, r20044, r20045, r20046, r20047, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r20042);
        mpfr_init_set_str(r20043, "-7.094821279311991e+50", 10, MPFR_RNDN);
        mpfr_init(r20044);
        mpfr_init(r20045);
        mpfr_init(r20046);
        mpfr_init_set_str(r20047, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r20048);
        mpfr_init_set_str(r20049, "-8935664797341.434", 10, MPFR_RNDN);
        mpfr_init(r20050);
        mpfr_init(r20051);
        mpfr_init(r20052);
        mpfr_init(r20053);
        mpfr_init(r20054);
        mpfr_init(r20055);
        mpfr_init(r20056);
        mpfr_init(r20057);
        mpfr_init(r20058);
        mpfr_init(r20059);
        mpfr_init(r20060);
        mpfr_init_set_str(r20061, "-1.660099227068191e-124", 10, MPFR_RNDN);
        mpfr_init(r20062);
        mpfr_init_set_str(r20063, "4.521805228743851e+91", 10, MPFR_RNDN);
        mpfr_init(r20064);
        mpfr_init(r20065);
        mpfr_init_set_str(r20066, "1", 10, MPFR_RNDN);
        mpfr_init(r20067);
        mpfr_init(r20068);
        mpfr_init_set_str(r20069, "-2", 10, MPFR_RNDN);
        mpfr_init(r20070);
        mpfr_init(r20071);
        mpfr_init(r20072);
        mpfr_init(r20073);
        mpfr_init(r20074);
        mpfr_init(r20075);
}

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

static mpfr_t r20076, r20077, r20078, r20079, r20080, r20081, r20082, r20083, r20084, r20085, r20086, r20087, r20088, r20089, r20090, r20091, r20092, r20093, r20094, r20095, r20096, r20097, r20098, r20099, r20100, r20101, r20102, r20103, r20104, r20105, r20106, r20107, r20108, r20109;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r20076);
        mpfr_init_set_str(r20077, "-7.094821279311991e+50", 10, MPFR_RNDN);
        mpfr_init(r20078);
        mpfr_init(r20079);
        mpfr_init(r20080);
        mpfr_init_set_str(r20081, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r20082);
        mpfr_init_set_str(r20083, "-8935664797341.434", 10, MPFR_RNDN);
        mpfr_init(r20084);
        mpfr_init(r20085);
        mpfr_init(r20086);
        mpfr_init(r20087);
        mpfr_init(r20088);
        mpfr_init(r20089);
        mpfr_init(r20090);
        mpfr_init(r20091);
        mpfr_init(r20092);
        mpfr_init(r20093);
        mpfr_init(r20094);
        mpfr_init_set_str(r20095, "-1.660099227068191e-124", 10, MPFR_RNDN);
        mpfr_init(r20096);
        mpfr_init_set_str(r20097, "4.521805228743851e+91", 10, MPFR_RNDN);
        mpfr_init(r20098);
        mpfr_init(r20099);
        mpfr_init_set_str(r20100, "1", 10, MPFR_RNDN);
        mpfr_init(r20101);
        mpfr_init(r20102);
        mpfr_init_set_str(r20103, "-2", 10, MPFR_RNDN);
        mpfr_init(r20104);
        mpfr_init(r20105);
        mpfr_init(r20106);
        mpfr_init(r20107);
        mpfr_init(r20108);
        mpfr_init(r20109);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r20076, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r20078, mpfr_cmp(r20076, r20077) <= 0, MPFR_RNDN);
        mpfr_set_d(r20079, c, MPFR_RNDN);
        mpfr_div(r20080, r20079, r20076, MPFR_RNDN);
        ;
        mpfr_mul(r20082, r20080, r20081, MPFR_RNDN);
        ;
        mpfr_set_si(r20084, mpfr_cmp(r20076, r20083) <= 0, MPFR_RNDN);
        mpfr_set_d(r20085, a, MPFR_RNDN);
        mpfr_mul(r20086, r20079, r20085, MPFR_RNDN);
        mpfr_neg(r20087, r20076, MPFR_RNDN);
        mpfr_mul(r20088, r20076, r20076, MPFR_RNDN);
        mpfr_mul(r20089, r20085, r20079, MPFR_RNDN);
        mpfr_sub(r20090, r20088, r20089, MPFR_RNDN);
        mpfr_sqrt(r20091, r20090, MPFR_RNDN);
        mpfr_add(r20092, r20087, r20091, MPFR_RNDN);
        mpfr_div(r20093, r20086, r20092, MPFR_RNDN);
        mpfr_div(r20094, r20093, r20085, MPFR_RNDN);
        ;
        mpfr_set_si(r20096, mpfr_cmp(r20076, r20095) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r20098, mpfr_cmp(r20076, r20097) <= 0, MPFR_RNDN);
        mpfr_sub(r20099, r20087, r20091, MPFR_RNDN);
        ;
        mpfr_div(r20101, r20100, r20085, MPFR_RNDN);
        mpfr_mul(r20102, r20099, r20101, MPFR_RNDN);
        ;
        mpfr_div(r20104, r20076, r20085, MPFR_RNDN);
        mpfr_mul(r20105, r20103, r20104, MPFR_RNDN);
        if (mpfr_get_si(r20098, MPFR_RNDN)) { mpfr_set(r20106, r20102, MPFR_RNDN); } else { mpfr_set(r20106, r20105, MPFR_RNDN); };
        if (mpfr_get_si(r20096, MPFR_RNDN)) { mpfr_set(r20107, r20082, MPFR_RNDN); } else { mpfr_set(r20107, r20106, MPFR_RNDN); };
        if (mpfr_get_si(r20084, MPFR_RNDN)) { mpfr_set(r20108, r20094, MPFR_RNDN); } else { mpfr_set(r20108, r20107, MPFR_RNDN); };
        if (mpfr_get_si(r20078, MPFR_RNDN)) { mpfr_set(r20109, r20082, MPFR_RNDN); } else { mpfr_set(r20109, r20108, MPFR_RNDN); };
        return mpfr_get_d(r20109, MPFR_RNDN);
}

