#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 r6237009 = b_2F2;
        float r6237010 = -r6237009;
        float r6237011 = r6237009 * r6237009;
        float r6237012 = a;
        float r6237013 = c;
        float r6237014 = r6237012 * r6237013;
        float r6237015 = r6237011 - r6237014;
        float r6237016 = sqrt(r6237015);
        float r6237017 = r6237010 - r6237016;
        float r6237018 = r6237017 / r6237012;
        return r6237018;
}

double f_id(double a, double b_2F2, double c) {
        double r6237019 = b_2F2;
        double r6237020 = -r6237019;
        double r6237021 = r6237019 * r6237019;
        double r6237022 = a;
        double r6237023 = c;
        double r6237024 = r6237022 * r6237023;
        double r6237025 = r6237021 - r6237024;
        double r6237026 = sqrt(r6237025);
        double r6237027 = r6237020 - r6237026;
        double r6237028 = r6237027 / r6237022;
        return r6237028;
}


double f_of(float a, float b_2F2, float c) {
        float r6237029 = b_2F2;
        float r6237030 = -7.263428313105148e+67;
        bool r6237031 = r6237029 <= r6237030;
        float r6237032 = c;
        float r6237033 = 1/2;
        float r6237034 = r6237033 * r6237032;
        float r6237035 = a;
        float r6237036 = r6237035 / r6237029;
        float r6237037 = r6237034 * r6237036;
        float r6237038 = -r6237029;
        float r6237039 = r6237029 - r6237038;
        float r6237040 = r6237037 - r6237039;
        float r6237041 = r6237032 / r6237040;
        float r6237042 = 8.705708328220624e-294;
        bool r6237043 = r6237029 <= r6237042;
        float r6237044 = r6237029 * r6237029;
        float r6237045 = r6237035 * r6237032;
        float r6237046 = r6237044 - r6237045;
        float r6237047 = sqrt(r6237046);
        float r6237048 = r6237038 + r6237047;
        float r6237049 = r6237032 / r6237048;
        float r6237050 = 1.9680113305877282e+47;
        bool r6237051 = r6237029 <= r6237050;
        float r6237052 = r6237038 - r6237047;
        float r6237053 = r6237052 / r6237035;
        float r6237054 = r6237029 / r6237035;
        float r6237055 = -r6237054;
        float r6237056 = r6237029 / r6237033;
        float r6237057 = r6237032 / r6237056;
        float r6237058 = r6237054 - r6237057;
        float r6237059 = r6237055 - r6237058;
        float r6237060 = r6237051 ? r6237053 : r6237059;
        float r6237061 = r6237043 ? r6237049 : r6237060;
        float r6237062 = r6237031 ? r6237041 : r6237061;
        return r6237062;
}

double f_od(double a, double b_2F2, double c) {
        double r6237063 = b_2F2;
        double r6237064 = -7.263428313105148e+67;
        bool r6237065 = r6237063 <= r6237064;
        double r6237066 = c;
        double r6237067 = 1/2;
        double r6237068 = r6237067 * r6237066;
        double r6237069 = a;
        double r6237070 = r6237069 / r6237063;
        double r6237071 = r6237068 * r6237070;
        double r6237072 = -r6237063;
        double r6237073 = r6237063 - r6237072;
        double r6237074 = r6237071 - r6237073;
        double r6237075 = r6237066 / r6237074;
        double r6237076 = 8.705708328220624e-294;
        bool r6237077 = r6237063 <= r6237076;
        double r6237078 = r6237063 * r6237063;
        double r6237079 = r6237069 * r6237066;
        double r6237080 = r6237078 - r6237079;
        double r6237081 = sqrt(r6237080);
        double r6237082 = r6237072 + r6237081;
        double r6237083 = r6237066 / r6237082;
        double r6237084 = 1.9680113305877282e+47;
        bool r6237085 = r6237063 <= r6237084;
        double r6237086 = r6237072 - r6237081;
        double r6237087 = r6237086 / r6237069;
        double r6237088 = r6237063 / r6237069;
        double r6237089 = -r6237088;
        double r6237090 = r6237063 / r6237067;
        double r6237091 = r6237066 / r6237090;
        double r6237092 = r6237088 - r6237091;
        double r6237093 = r6237089 - r6237092;
        double r6237094 = r6237085 ? r6237087 : r6237093;
        double r6237095 = r6237077 ? r6237083 : r6237094;
        double r6237096 = r6237065 ? r6237075 : r6237095;
        return r6237096;
}

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 r6237097, r6237098, r6237099, r6237100, r6237101, r6237102, r6237103, r6237104, r6237105, r6237106;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r6237097);
        mpfr_init(r6237098);
        mpfr_init(r6237099);
        mpfr_init(r6237100);
        mpfr_init(r6237101);
        mpfr_init(r6237102);
        mpfr_init(r6237103);
        mpfr_init(r6237104);
        mpfr_init(r6237105);
        mpfr_init(r6237106);
}

double f_im(double a, double b_2F2, double c) {
        mpfr_set_d(r6237097, b_2F2, MPFR_RNDN);
        mpfr_neg(r6237098, r6237097, MPFR_RNDN);
        mpfr_mul(r6237099, r6237097, r6237097, MPFR_RNDN);
        mpfr_set_d(r6237100, a, MPFR_RNDN);
        mpfr_set_d(r6237101, c, MPFR_RNDN);
        mpfr_mul(r6237102, r6237100, r6237101, MPFR_RNDN);
        mpfr_sub(r6237103, r6237099, r6237102, MPFR_RNDN);
        mpfr_sqrt(r6237104, r6237103, MPFR_RNDN);
        mpfr_sub(r6237105, r6237098, r6237104, MPFR_RNDN);
        mpfr_div(r6237106, r6237105, r6237100, MPFR_RNDN);
        return mpfr_get_d(r6237106, MPFR_RNDN);
}

static mpfr_t r6237107, r6237108, r6237109, r6237110, r6237111, r6237112, r6237113, r6237114, r6237115, r6237116, r6237117, r6237118, r6237119, r6237120, r6237121, r6237122, r6237123, r6237124, r6237125, r6237126, r6237127, r6237128, r6237129, r6237130, r6237131, r6237132, r6237133, r6237134, r6237135, r6237136, r6237137, r6237138, r6237139, r6237140;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r6237107);
        mpfr_init_set_str(r6237108, "-7.263428313105148e+67", 10, MPFR_RNDN);
        mpfr_init(r6237109);
        mpfr_init(r6237110);
        mpfr_init_set_str(r6237111, "1/2", 10, MPFR_RNDN);
        mpfr_init(r6237112);
        mpfr_init(r6237113);
        mpfr_init(r6237114);
        mpfr_init(r6237115);
        mpfr_init(r6237116);
        mpfr_init(r6237117);
        mpfr_init(r6237118);
        mpfr_init(r6237119);
        mpfr_init_set_str(r6237120, "8.705708328220624e-294", 10, MPFR_RNDN);
        mpfr_init(r6237121);
        mpfr_init(r6237122);
        mpfr_init(r6237123);
        mpfr_init(r6237124);
        mpfr_init(r6237125);
        mpfr_init(r6237126);
        mpfr_init(r6237127);
        mpfr_init_set_str(r6237128, "1.9680113305877282e+47", 10, MPFR_RNDN);
        mpfr_init(r6237129);
        mpfr_init(r6237130);
        mpfr_init(r6237131);
        mpfr_init(r6237132);
        mpfr_init(r6237133);
        mpfr_init(r6237134);
        mpfr_init(r6237135);
        mpfr_init(r6237136);
        mpfr_init(r6237137);
        mpfr_init(r6237138);
        mpfr_init(r6237139);
        mpfr_init(r6237140);
}

double f_fm(double a, double b_2F2, double c) {
        mpfr_set_d(r6237107, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r6237109, mpfr_cmp(r6237107, r6237108) <= 0, MPFR_RNDN);
        mpfr_set_d(r6237110, c, MPFR_RNDN);
        ;
        mpfr_mul(r6237112, r6237111, r6237110, MPFR_RNDN);
        mpfr_set_d(r6237113, a, MPFR_RNDN);
        mpfr_div(r6237114, r6237113, r6237107, MPFR_RNDN);
        mpfr_mul(r6237115, r6237112, r6237114, MPFR_RNDN);
        mpfr_neg(r6237116, r6237107, MPFR_RNDN);
        mpfr_sub(r6237117, r6237107, r6237116, MPFR_RNDN);
        mpfr_sub(r6237118, r6237115, r6237117, MPFR_RNDN);
        mpfr_div(r6237119, r6237110, r6237118, MPFR_RNDN);
        ;
        mpfr_set_si(r6237121, mpfr_cmp(r6237107, r6237120) <= 0, MPFR_RNDN);
        mpfr_mul(r6237122, r6237107, r6237107, MPFR_RNDN);
        mpfr_mul(r6237123, r6237113, r6237110, MPFR_RNDN);
        mpfr_sub(r6237124, r6237122, r6237123, MPFR_RNDN);
        mpfr_sqrt(r6237125, r6237124, MPFR_RNDN);
        mpfr_add(r6237126, r6237116, r6237125, MPFR_RNDN);
        mpfr_div(r6237127, r6237110, r6237126, MPFR_RNDN);
        ;
        mpfr_set_si(r6237129, mpfr_cmp(r6237107, r6237128) <= 0, MPFR_RNDN);
        mpfr_sub(r6237130, r6237116, r6237125, MPFR_RNDN);
        mpfr_div(r6237131, r6237130, r6237113, MPFR_RNDN);
        mpfr_div(r6237132, r6237107, r6237113, MPFR_RNDN);
        mpfr_neg(r6237133, r6237132, MPFR_RNDN);
        mpfr_div(r6237134, r6237107, r6237111, MPFR_RNDN);
        mpfr_div(r6237135, r6237110, r6237134, MPFR_RNDN);
        mpfr_sub(r6237136, r6237132, r6237135, MPFR_RNDN);
        mpfr_sub(r6237137, r6237133, r6237136, MPFR_RNDN);
        if (mpfr_get_si(r6237129, MPFR_RNDN)) { mpfr_set(r6237138, r6237131, MPFR_RNDN); } else { mpfr_set(r6237138, r6237137, MPFR_RNDN); };
        if (mpfr_get_si(r6237121, MPFR_RNDN)) { mpfr_set(r6237139, r6237127, MPFR_RNDN); } else { mpfr_set(r6237139, r6237138, MPFR_RNDN); };
        if (mpfr_get_si(r6237109, MPFR_RNDN)) { mpfr_set(r6237140, r6237119, MPFR_RNDN); } else { mpfr_set(r6237140, r6237139, MPFR_RNDN); };
        return mpfr_get_d(r6237140, MPFR_RNDN);
}

static mpfr_t r6237141, r6237142, r6237143, r6237144, r6237145, r6237146, r6237147, r6237148, r6237149, r6237150, r6237151, r6237152, r6237153, r6237154, r6237155, r6237156, r6237157, r6237158, r6237159, r6237160, r6237161, r6237162, r6237163, r6237164, r6237165, r6237166, r6237167, r6237168, r6237169, r6237170, r6237171, r6237172, r6237173, r6237174;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r6237141);
        mpfr_init_set_str(r6237142, "-7.263428313105148e+67", 10, MPFR_RNDN);
        mpfr_init(r6237143);
        mpfr_init(r6237144);
        mpfr_init_set_str(r6237145, "1/2", 10, MPFR_RNDN);
        mpfr_init(r6237146);
        mpfr_init(r6237147);
        mpfr_init(r6237148);
        mpfr_init(r6237149);
        mpfr_init(r6237150);
        mpfr_init(r6237151);
        mpfr_init(r6237152);
        mpfr_init(r6237153);
        mpfr_init_set_str(r6237154, "8.705708328220624e-294", 10, MPFR_RNDN);
        mpfr_init(r6237155);
        mpfr_init(r6237156);
        mpfr_init(r6237157);
        mpfr_init(r6237158);
        mpfr_init(r6237159);
        mpfr_init(r6237160);
        mpfr_init(r6237161);
        mpfr_init_set_str(r6237162, "1.9680113305877282e+47", 10, MPFR_RNDN);
        mpfr_init(r6237163);
        mpfr_init(r6237164);
        mpfr_init(r6237165);
        mpfr_init(r6237166);
        mpfr_init(r6237167);
        mpfr_init(r6237168);
        mpfr_init(r6237169);
        mpfr_init(r6237170);
        mpfr_init(r6237171);
        mpfr_init(r6237172);
        mpfr_init(r6237173);
        mpfr_init(r6237174);
}

double f_dm(double a, double b_2F2, double c) {
        mpfr_set_d(r6237141, b_2F2, MPFR_RNDN);
        ;
        mpfr_set_si(r6237143, mpfr_cmp(r6237141, r6237142) <= 0, MPFR_RNDN);
        mpfr_set_d(r6237144, c, MPFR_RNDN);
        ;
        mpfr_mul(r6237146, r6237145, r6237144, MPFR_RNDN);
        mpfr_set_d(r6237147, a, MPFR_RNDN);
        mpfr_div(r6237148, r6237147, r6237141, MPFR_RNDN);
        mpfr_mul(r6237149, r6237146, r6237148, MPFR_RNDN);
        mpfr_neg(r6237150, r6237141, MPFR_RNDN);
        mpfr_sub(r6237151, r6237141, r6237150, MPFR_RNDN);
        mpfr_sub(r6237152, r6237149, r6237151, MPFR_RNDN);
        mpfr_div(r6237153, r6237144, r6237152, MPFR_RNDN);
        ;
        mpfr_set_si(r6237155, mpfr_cmp(r6237141, r6237154) <= 0, MPFR_RNDN);
        mpfr_mul(r6237156, r6237141, r6237141, MPFR_RNDN);
        mpfr_mul(r6237157, r6237147, r6237144, MPFR_RNDN);
        mpfr_sub(r6237158, r6237156, r6237157, MPFR_RNDN);
        mpfr_sqrt(r6237159, r6237158, MPFR_RNDN);
        mpfr_add(r6237160, r6237150, r6237159, MPFR_RNDN);
        mpfr_div(r6237161, r6237144, r6237160, MPFR_RNDN);
        ;
        mpfr_set_si(r6237163, mpfr_cmp(r6237141, r6237162) <= 0, MPFR_RNDN);
        mpfr_sub(r6237164, r6237150, r6237159, MPFR_RNDN);
        mpfr_div(r6237165, r6237164, r6237147, MPFR_RNDN);
        mpfr_div(r6237166, r6237141, r6237147, MPFR_RNDN);
        mpfr_neg(r6237167, r6237166, MPFR_RNDN);
        mpfr_div(r6237168, r6237141, r6237145, MPFR_RNDN);
        mpfr_div(r6237169, r6237144, r6237168, MPFR_RNDN);
        mpfr_sub(r6237170, r6237166, r6237169, MPFR_RNDN);
        mpfr_sub(r6237171, r6237167, r6237170, MPFR_RNDN);
        if (mpfr_get_si(r6237163, MPFR_RNDN)) { mpfr_set(r6237172, r6237165, MPFR_RNDN); } else { mpfr_set(r6237172, r6237171, MPFR_RNDN); };
        if (mpfr_get_si(r6237155, MPFR_RNDN)) { mpfr_set(r6237173, r6237161, MPFR_RNDN); } else { mpfr_set(r6237173, r6237172, MPFR_RNDN); };
        if (mpfr_get_si(r6237143, MPFR_RNDN)) { mpfr_set(r6237174, r6237153, MPFR_RNDN); } else { mpfr_set(r6237174, r6237173, MPFR_RNDN); };
        return mpfr_get_d(r6237174, MPFR_RNDN);
}

