#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_2, float c) {
        float r8096 = b_2;
        float r8097 = -r8096;
        float r8098 = r8096 * r8096;
        float r8099 = a;
        float r8100 = c;
        float r8101 = r8099 * r8100;
        float r8102 = r8098 - r8101;
        float r8103 = sqrt(r8102);
        float r8104 = r8097 - r8103;
        float r8105 = r8104 / r8099;
        return r8105;
}

double f_id(double a, double b_2, double c) {
        double r8106 = b_2;
        double r8107 = -r8106;
        double r8108 = r8106 * r8106;
        double r8109 = a;
        double r8110 = c;
        double r8111 = r8109 * r8110;
        double r8112 = r8108 - r8111;
        double r8113 = sqrt(r8112);
        double r8114 = r8107 - r8113;
        double r8115 = r8114 / r8109;
        return r8115;
}


double f_of(float a, float b_2, float c) {
        float r8116 = b_2;
        float r8117 = -1/2;
        float r8118 = r8116 / r8117;
        float r8119 = -1.1709064048460126e+150;
        bool r8120 = r8118 <= r8119;
        float r8121 = -2;
        float r8122 = a;
        float r8123 = r8116 / r8122;
        float r8124 = r8121 * r8123;
        float r8125 = 7.186570517830272e-190;
        bool r8126 = r8118 <= r8125;
        float r8127 = 1;
        float r8128 = -r8116;
        float r8129 = r8116 * r8116;
        float r8130 = c;
        float r8131 = r8122 * r8130;
        float r8132 = r8129 - r8131;
        float r8133 = sqrt(r8132);
        float r8134 = r8128 - r8133;
        float r8135 = r8122 / r8134;
        float r8136 = r8127 / r8135;
        float r8137 = 7.895811331675627e+87;
        bool r8138 = r8118 <= r8137;
        float r8139 = r8133 - r8116;
        float r8140 = r8131 / r8139;
        float r8141 = r8140 / r8122;
        float r8142 = r8122 / r8116;
        float r8143 = 1/2;
        float r8144 = r8143 * r8130;
        float r8145 = r8142 * r8144;
        float r8146 = 2;
        float r8147 = r8146 * r8116;
        float r8148 = r8145 - r8147;
        float r8149 = r8130 / r8148;
        float r8150 = r8138 ? r8141 : r8149;
        float r8151 = r8126 ? r8136 : r8150;
        float r8152 = r8120 ? r8124 : r8151;
        return r8152;
}

double f_od(double a, double b_2, double c) {
        double r8153 = b_2;
        double r8154 = -1/2;
        double r8155 = r8153 / r8154;
        double r8156 = -1.1709064048460126e+150;
        bool r8157 = r8155 <= r8156;
        double r8158 = -2;
        double r8159 = a;
        double r8160 = r8153 / r8159;
        double r8161 = r8158 * r8160;
        double r8162 = 7.186570517830272e-190;
        bool r8163 = r8155 <= r8162;
        double r8164 = 1;
        double r8165 = -r8153;
        double r8166 = r8153 * r8153;
        double r8167 = c;
        double r8168 = r8159 * r8167;
        double r8169 = r8166 - r8168;
        double r8170 = sqrt(r8169);
        double r8171 = r8165 - r8170;
        double r8172 = r8159 / r8171;
        double r8173 = r8164 / r8172;
        double r8174 = 7.895811331675627e+87;
        bool r8175 = r8155 <= r8174;
        double r8176 = r8170 - r8153;
        double r8177 = r8168 / r8176;
        double r8178 = r8177 / r8159;
        double r8179 = r8159 / r8153;
        double r8180 = 1/2;
        double r8181 = r8180 * r8167;
        double r8182 = r8179 * r8181;
        double r8183 = 2;
        double r8184 = r8183 * r8153;
        double r8185 = r8182 - r8184;
        double r8186 = r8167 / r8185;
        double r8187 = r8175 ? r8178 : r8186;
        double r8188 = r8163 ? r8173 : r8187;
        double r8189 = r8157 ? r8161 : r8188;
        return r8189;
}

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 r8190, r8191, r8192, r8193, r8194, r8195, r8196, r8197, r8198, r8199;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8190);
        mpfr_init(r8191);
        mpfr_init(r8192);
        mpfr_init(r8193);
        mpfr_init(r8194);
        mpfr_init(r8195);
        mpfr_init(r8196);
        mpfr_init(r8197);
        mpfr_init(r8198);
        mpfr_init(r8199);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r8190, b_2, MPFR_RNDN);
        mpfr_neg(r8191, r8190, MPFR_RNDN);
        mpfr_mul(r8192, r8190, r8190, MPFR_RNDN);
        mpfr_set_d(r8193, a, MPFR_RNDN);
        mpfr_set_d(r8194, c, MPFR_RNDN);
        mpfr_mul(r8195, r8193, r8194, MPFR_RNDN);
        mpfr_sub(r8196, r8192, r8195, MPFR_RNDN);
        mpfr_sqrt(r8197, r8196, MPFR_RNDN);
        mpfr_sub(r8198, r8191, r8197, MPFR_RNDN);
        mpfr_div(r8199, r8198, r8193, MPFR_RNDN);
        return mpfr_get_d(r8199, MPFR_RNDN);
}

static mpfr_t r8200, r8201, r8202, r8203, r8204, r8205, r8206, r8207, r8208, r8209, r8210, r8211, r8212, r8213, r8214, r8215, r8216, r8217, r8218, r8219, r8220, r8221, r8222, r8223, r8224, r8225, r8226, r8227, r8228, r8229, r8230, r8231, r8232, r8233, r8234, r8235, r8236;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8200);
        mpfr_init_set_str(r8201, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r8202);
        mpfr_init_set_str(r8203, "-1.1709064048460126e+150", 10, MPFR_RNDN);
        mpfr_init(r8204);
        mpfr_init_set_str(r8205, "-2", 10, MPFR_RNDN);
        mpfr_init(r8206);
        mpfr_init(r8207);
        mpfr_init(r8208);
        mpfr_init_set_str(r8209, "7.186570517830272e-190", 10, MPFR_RNDN);
        mpfr_init(r8210);
        mpfr_init_set_str(r8211, "1", 10, MPFR_RNDN);
        mpfr_init(r8212);
        mpfr_init(r8213);
        mpfr_init(r8214);
        mpfr_init(r8215);
        mpfr_init(r8216);
        mpfr_init(r8217);
        mpfr_init(r8218);
        mpfr_init(r8219);
        mpfr_init(r8220);
        mpfr_init_set_str(r8221, "7.895811331675627e+87", 10, MPFR_RNDN);
        mpfr_init(r8222);
        mpfr_init(r8223);
        mpfr_init(r8224);
        mpfr_init(r8225);
        mpfr_init(r8226);
        mpfr_init_set_str(r8227, "1/2", 10, MPFR_RNDN);
        mpfr_init(r8228);
        mpfr_init(r8229);
        mpfr_init_set_str(r8230, "2", 10, MPFR_RNDN);
        mpfr_init(r8231);
        mpfr_init(r8232);
        mpfr_init(r8233);
        mpfr_init(r8234);
        mpfr_init(r8235);
        mpfr_init(r8236);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r8200, b_2, MPFR_RNDN);
        ;
        mpfr_div(r8202, r8200, r8201, MPFR_RNDN);
        ;
        mpfr_set_si(r8204, mpfr_cmp(r8202, r8203) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r8206, a, MPFR_RNDN);
        mpfr_div(r8207, r8200, r8206, MPFR_RNDN);
        mpfr_mul(r8208, r8205, r8207, MPFR_RNDN);
        ;
        mpfr_set_si(r8210, mpfr_cmp(r8202, r8209) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r8212, r8200, MPFR_RNDN);
        mpfr_mul(r8213, r8200, r8200, MPFR_RNDN);
        mpfr_set_d(r8214, c, MPFR_RNDN);
        mpfr_mul(r8215, r8206, r8214, MPFR_RNDN);
        mpfr_sub(r8216, r8213, r8215, MPFR_RNDN);
        mpfr_sqrt(r8217, r8216, MPFR_RNDN);
        mpfr_sub(r8218, r8212, r8217, MPFR_RNDN);
        mpfr_div(r8219, r8206, r8218, MPFR_RNDN);
        mpfr_div(r8220, r8211, r8219, MPFR_RNDN);
        ;
        mpfr_set_si(r8222, mpfr_cmp(r8202, r8221) <= 0, MPFR_RNDN);
        mpfr_sub(r8223, r8217, r8200, MPFR_RNDN);
        mpfr_div(r8224, r8215, r8223, MPFR_RNDN);
        mpfr_div(r8225, r8224, r8206, MPFR_RNDN);
        mpfr_div(r8226, r8206, r8200, MPFR_RNDN);
        ;
        mpfr_mul(r8228, r8227, r8214, MPFR_RNDN);
        mpfr_mul(r8229, r8226, r8228, MPFR_RNDN);
        ;
        mpfr_mul(r8231, r8230, r8200, MPFR_RNDN);
        mpfr_sub(r8232, r8229, r8231, MPFR_RNDN);
        mpfr_div(r8233, r8214, r8232, MPFR_RNDN);
        if (mpfr_get_si(r8222, MPFR_RNDN)) { mpfr_set(r8234, r8225, MPFR_RNDN); } else { mpfr_set(r8234, r8233, MPFR_RNDN); };
        if (mpfr_get_si(r8210, MPFR_RNDN)) { mpfr_set(r8235, r8220, MPFR_RNDN); } else { mpfr_set(r8235, r8234, MPFR_RNDN); };
        if (mpfr_get_si(r8204, MPFR_RNDN)) { mpfr_set(r8236, r8208, MPFR_RNDN); } else { mpfr_set(r8236, r8235, MPFR_RNDN); };
        return mpfr_get_d(r8236, MPFR_RNDN);
}

static mpfr_t r8237, r8238, r8239, r8240, r8241, r8242, r8243, r8244, r8245, r8246, r8247, r8248, r8249, r8250, r8251, r8252, r8253, r8254, r8255, r8256, r8257, r8258, r8259, r8260, r8261, r8262, r8263, r8264, r8265, r8266, r8267, r8268, r8269, r8270, r8271, r8272, r8273;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8237);
        mpfr_init_set_str(r8238, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r8239);
        mpfr_init_set_str(r8240, "-1.1709064048460126e+150", 10, MPFR_RNDN);
        mpfr_init(r8241);
        mpfr_init_set_str(r8242, "-2", 10, MPFR_RNDN);
        mpfr_init(r8243);
        mpfr_init(r8244);
        mpfr_init(r8245);
        mpfr_init_set_str(r8246, "7.186570517830272e-190", 10, MPFR_RNDN);
        mpfr_init(r8247);
        mpfr_init_set_str(r8248, "1", 10, MPFR_RNDN);
        mpfr_init(r8249);
        mpfr_init(r8250);
        mpfr_init(r8251);
        mpfr_init(r8252);
        mpfr_init(r8253);
        mpfr_init(r8254);
        mpfr_init(r8255);
        mpfr_init(r8256);
        mpfr_init(r8257);
        mpfr_init_set_str(r8258, "7.895811331675627e+87", 10, MPFR_RNDN);
        mpfr_init(r8259);
        mpfr_init(r8260);
        mpfr_init(r8261);
        mpfr_init(r8262);
        mpfr_init(r8263);
        mpfr_init_set_str(r8264, "1/2", 10, MPFR_RNDN);
        mpfr_init(r8265);
        mpfr_init(r8266);
        mpfr_init_set_str(r8267, "2", 10, MPFR_RNDN);
        mpfr_init(r8268);
        mpfr_init(r8269);
        mpfr_init(r8270);
        mpfr_init(r8271);
        mpfr_init(r8272);
        mpfr_init(r8273);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r8237, b_2, MPFR_RNDN);
        ;
        mpfr_div(r8239, r8237, r8238, MPFR_RNDN);
        ;
        mpfr_set_si(r8241, mpfr_cmp(r8239, r8240) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r8243, a, MPFR_RNDN);
        mpfr_div(r8244, r8237, r8243, MPFR_RNDN);
        mpfr_mul(r8245, r8242, r8244, MPFR_RNDN);
        ;
        mpfr_set_si(r8247, mpfr_cmp(r8239, r8246) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r8249, r8237, MPFR_RNDN);
        mpfr_mul(r8250, r8237, r8237, MPFR_RNDN);
        mpfr_set_d(r8251, c, MPFR_RNDN);
        mpfr_mul(r8252, r8243, r8251, MPFR_RNDN);
        mpfr_sub(r8253, r8250, r8252, MPFR_RNDN);
        mpfr_sqrt(r8254, r8253, MPFR_RNDN);
        mpfr_sub(r8255, r8249, r8254, MPFR_RNDN);
        mpfr_div(r8256, r8243, r8255, MPFR_RNDN);
        mpfr_div(r8257, r8248, r8256, MPFR_RNDN);
        ;
        mpfr_set_si(r8259, mpfr_cmp(r8239, r8258) <= 0, MPFR_RNDN);
        mpfr_sub(r8260, r8254, r8237, MPFR_RNDN);
        mpfr_div(r8261, r8252, r8260, MPFR_RNDN);
        mpfr_div(r8262, r8261, r8243, MPFR_RNDN);
        mpfr_div(r8263, r8243, r8237, MPFR_RNDN);
        ;
        mpfr_mul(r8265, r8264, r8251, MPFR_RNDN);
        mpfr_mul(r8266, r8263, r8265, MPFR_RNDN);
        ;
        mpfr_mul(r8268, r8267, r8237, MPFR_RNDN);
        mpfr_sub(r8269, r8266, r8268, MPFR_RNDN);
        mpfr_div(r8270, r8251, r8269, MPFR_RNDN);
        if (mpfr_get_si(r8259, MPFR_RNDN)) { mpfr_set(r8271, r8262, MPFR_RNDN); } else { mpfr_set(r8271, r8270, MPFR_RNDN); };
        if (mpfr_get_si(r8247, MPFR_RNDN)) { mpfr_set(r8272, r8257, MPFR_RNDN); } else { mpfr_set(r8272, r8271, MPFR_RNDN); };
        if (mpfr_get_si(r8241, MPFR_RNDN)) { mpfr_set(r8273, r8245, MPFR_RNDN); } else { mpfr_set(r8273, r8272, MPFR_RNDN); };
        return mpfr_get_d(r8273, MPFR_RNDN);
}

