#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 r8132 = b_2;
        float r8133 = -r8132;
        float r8134 = r8132 * r8132;
        float r8135 = a;
        float r8136 = c;
        float r8137 = r8135 * r8136;
        float r8138 = r8134 - r8137;
        float r8139 = sqrt(r8138);
        float r8140 = r8133 - r8139;
        float r8141 = r8140 / r8135;
        return r8141;
}

double f_id(double a, double b_2, double c) {
        double r8142 = b_2;
        double r8143 = -r8142;
        double r8144 = r8142 * r8142;
        double r8145 = a;
        double r8146 = c;
        double r8147 = r8145 * r8146;
        double r8148 = r8144 - r8147;
        double r8149 = sqrt(r8148);
        double r8150 = r8143 - r8149;
        double r8151 = r8150 / r8145;
        return r8151;
}


double f_of(float a, float b_2, float c) {
        float r8152 = b_2;
        float r8153 = -1.1058513712164536e+149;
        bool r8154 = r8152 <= r8153;
        float r8155 = c;
        float r8156 = -r8155;
        float r8157 = 1/2;
        float r8158 = r8152 / r8157;
        float r8159 = r8156 / r8158;
        float r8160 = -1.5224307935350328e-151;
        bool r8161 = r8152 <= r8160;
        float r8162 = a;
        float r8163 = r8162 * r8155;
        float r8164 = r8152 * r8152;
        float r8165 = r8164 - r8163;
        float r8166 = sqrt(r8165);
        float r8167 = r8166 - r8152;
        float r8168 = r8163 / r8167;
        float r8169 = r8168 / r8162;
        float r8170 = 1.4273099475162756e+109;
        bool r8171 = r8152 <= r8170;
        float r8172 = 1;
        float r8173 = -r8152;
        float r8174 = r8173 - r8166;
        float r8175 = r8162 / r8174;
        float r8176 = r8172 / r8175;
        float r8177 = r8155 * r8157;
        float r8178 = r8177 / r8152;
        float r8179 = r8152 / r8162;
        float r8180 = 2;
        float r8181 = r8179 * r8180;
        float r8182 = r8178 - r8181;
        float r8183 = r8171 ? r8176 : r8182;
        float r8184 = r8161 ? r8169 : r8183;
        float r8185 = r8154 ? r8159 : r8184;
        return r8185;
}

double f_od(double a, double b_2, double c) {
        double r8186 = b_2;
        double r8187 = -1.1058513712164536e+149;
        bool r8188 = r8186 <= r8187;
        double r8189 = c;
        double r8190 = -r8189;
        double r8191 = 1/2;
        double r8192 = r8186 / r8191;
        double r8193 = r8190 / r8192;
        double r8194 = -1.5224307935350328e-151;
        bool r8195 = r8186 <= r8194;
        double r8196 = a;
        double r8197 = r8196 * r8189;
        double r8198 = r8186 * r8186;
        double r8199 = r8198 - r8197;
        double r8200 = sqrt(r8199);
        double r8201 = r8200 - r8186;
        double r8202 = r8197 / r8201;
        double r8203 = r8202 / r8196;
        double r8204 = 1.4273099475162756e+109;
        bool r8205 = r8186 <= r8204;
        double r8206 = 1;
        double r8207 = -r8186;
        double r8208 = r8207 - r8200;
        double r8209 = r8196 / r8208;
        double r8210 = r8206 / r8209;
        double r8211 = r8189 * r8191;
        double r8212 = r8211 / r8186;
        double r8213 = r8186 / r8196;
        double r8214 = 2;
        double r8215 = r8213 * r8214;
        double r8216 = r8212 - r8215;
        double r8217 = r8205 ? r8210 : r8216;
        double r8218 = r8195 ? r8203 : r8217;
        double r8219 = r8188 ? r8193 : r8218;
        return r8219;
}

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 r8220, r8221, r8222, r8223, r8224, r8225, r8226, r8227, r8228, r8229;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8220);
        mpfr_init(r8221);
        mpfr_init(r8222);
        mpfr_init(r8223);
        mpfr_init(r8224);
        mpfr_init(r8225);
        mpfr_init(r8226);
        mpfr_init(r8227);
        mpfr_init(r8228);
        mpfr_init(r8229);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r8220, b_2, MPFR_RNDN);
        mpfr_neg(r8221, r8220, MPFR_RNDN);
        mpfr_mul(r8222, r8220, r8220, MPFR_RNDN);
        mpfr_set_d(r8223, a, MPFR_RNDN);
        mpfr_set_d(r8224, c, MPFR_RNDN);
        mpfr_mul(r8225, r8223, r8224, MPFR_RNDN);
        mpfr_sub(r8226, r8222, r8225, MPFR_RNDN);
        mpfr_sqrt(r8227, r8226, MPFR_RNDN);
        mpfr_sub(r8228, r8221, r8227, MPFR_RNDN);
        mpfr_div(r8229, r8228, r8223, MPFR_RNDN);
        return mpfr_get_d(r8229, MPFR_RNDN);
}

static mpfr_t r8230, r8231, r8232, r8233, r8234, r8235, r8236, 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;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8230);
        mpfr_init_set_str(r8231, "-1.1058513712164536e+149", 10, MPFR_RNDN);
        mpfr_init(r8232);
        mpfr_init(r8233);
        mpfr_init(r8234);
        mpfr_init_set_str(r8235, "1/2", 10, MPFR_RNDN);
        mpfr_init(r8236);
        mpfr_init(r8237);
        mpfr_init_set_str(r8238, "-1.5224307935350328e-151", 10, MPFR_RNDN);
        mpfr_init(r8239);
        mpfr_init(r8240);
        mpfr_init(r8241);
        mpfr_init(r8242);
        mpfr_init(r8243);
        mpfr_init(r8244);
        mpfr_init(r8245);
        mpfr_init(r8246);
        mpfr_init(r8247);
        mpfr_init_set_str(r8248, "1.4273099475162756e+109", 10, MPFR_RNDN);
        mpfr_init(r8249);
        mpfr_init_set_str(r8250, "1", 10, MPFR_RNDN);
        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, "2", 10, MPFR_RNDN);
        mpfr_init(r8259);
        mpfr_init(r8260);
        mpfr_init(r8261);
        mpfr_init(r8262);
        mpfr_init(r8263);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r8230, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r8232, mpfr_cmp(r8230, r8231) <= 0, MPFR_RNDN);
        mpfr_set_d(r8233, c, MPFR_RNDN);
        mpfr_neg(r8234, r8233, MPFR_RNDN);
        ;
        mpfr_div(r8236, r8230, r8235, MPFR_RNDN);
        mpfr_div(r8237, r8234, r8236, MPFR_RNDN);
        ;
        mpfr_set_si(r8239, mpfr_cmp(r8230, r8238) <= 0, MPFR_RNDN);
        mpfr_set_d(r8240, a, MPFR_RNDN);
        mpfr_mul(r8241, r8240, r8233, MPFR_RNDN);
        mpfr_mul(r8242, r8230, r8230, MPFR_RNDN);
        mpfr_sub(r8243, r8242, r8241, MPFR_RNDN);
        mpfr_sqrt(r8244, r8243, MPFR_RNDN);
        mpfr_sub(r8245, r8244, r8230, MPFR_RNDN);
        mpfr_div(r8246, r8241, r8245, MPFR_RNDN);
        mpfr_div(r8247, r8246, r8240, MPFR_RNDN);
        ;
        mpfr_set_si(r8249, mpfr_cmp(r8230, r8248) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r8251, r8230, MPFR_RNDN);
        mpfr_sub(r8252, r8251, r8244, MPFR_RNDN);
        mpfr_div(r8253, r8240, r8252, MPFR_RNDN);
        mpfr_div(r8254, r8250, r8253, MPFR_RNDN);
        mpfr_mul(r8255, r8233, r8235, MPFR_RNDN);
        mpfr_div(r8256, r8255, r8230, MPFR_RNDN);
        mpfr_div(r8257, r8230, r8240, MPFR_RNDN);
        ;
        mpfr_mul(r8259, r8257, r8258, MPFR_RNDN);
        mpfr_sub(r8260, r8256, r8259, MPFR_RNDN);
        if (mpfr_get_si(r8249, MPFR_RNDN)) { mpfr_set(r8261, r8254, MPFR_RNDN); } else { mpfr_set(r8261, r8260, MPFR_RNDN); };
        if (mpfr_get_si(r8239, MPFR_RNDN)) { mpfr_set(r8262, r8247, MPFR_RNDN); } else { mpfr_set(r8262, r8261, MPFR_RNDN); };
        if (mpfr_get_si(r8232, MPFR_RNDN)) { mpfr_set(r8263, r8237, MPFR_RNDN); } else { mpfr_set(r8263, r8262, MPFR_RNDN); };
        return mpfr_get_d(r8263, MPFR_RNDN);
}

static mpfr_t r8264, r8265, r8266, r8267, r8268, r8269, r8270, r8271, r8272, r8273, r8274, r8275, r8276, r8277, r8278, r8279, r8280, r8281, r8282, r8283, r8284, r8285, r8286, r8287, r8288, r8289, r8290, r8291, r8292, r8293, r8294, r8295, r8296, r8297;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8264);
        mpfr_init_set_str(r8265, "-1.1058513712164536e+149", 10, MPFR_RNDN);
        mpfr_init(r8266);
        mpfr_init(r8267);
        mpfr_init(r8268);
        mpfr_init_set_str(r8269, "1/2", 10, MPFR_RNDN);
        mpfr_init(r8270);
        mpfr_init(r8271);
        mpfr_init_set_str(r8272, "-1.5224307935350328e-151", 10, MPFR_RNDN);
        mpfr_init(r8273);
        mpfr_init(r8274);
        mpfr_init(r8275);
        mpfr_init(r8276);
        mpfr_init(r8277);
        mpfr_init(r8278);
        mpfr_init(r8279);
        mpfr_init(r8280);
        mpfr_init(r8281);
        mpfr_init_set_str(r8282, "1.4273099475162756e+109", 10, MPFR_RNDN);
        mpfr_init(r8283);
        mpfr_init_set_str(r8284, "1", 10, MPFR_RNDN);
        mpfr_init(r8285);
        mpfr_init(r8286);
        mpfr_init(r8287);
        mpfr_init(r8288);
        mpfr_init(r8289);
        mpfr_init(r8290);
        mpfr_init(r8291);
        mpfr_init_set_str(r8292, "2", 10, MPFR_RNDN);
        mpfr_init(r8293);
        mpfr_init(r8294);
        mpfr_init(r8295);
        mpfr_init(r8296);
        mpfr_init(r8297);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r8264, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r8266, mpfr_cmp(r8264, r8265) <= 0, MPFR_RNDN);
        mpfr_set_d(r8267, c, MPFR_RNDN);
        mpfr_neg(r8268, r8267, MPFR_RNDN);
        ;
        mpfr_div(r8270, r8264, r8269, MPFR_RNDN);
        mpfr_div(r8271, r8268, r8270, MPFR_RNDN);
        ;
        mpfr_set_si(r8273, mpfr_cmp(r8264, r8272) <= 0, MPFR_RNDN);
        mpfr_set_d(r8274, a, MPFR_RNDN);
        mpfr_mul(r8275, r8274, r8267, MPFR_RNDN);
        mpfr_mul(r8276, r8264, r8264, MPFR_RNDN);
        mpfr_sub(r8277, r8276, r8275, MPFR_RNDN);
        mpfr_sqrt(r8278, r8277, MPFR_RNDN);
        mpfr_sub(r8279, r8278, r8264, MPFR_RNDN);
        mpfr_div(r8280, r8275, r8279, MPFR_RNDN);
        mpfr_div(r8281, r8280, r8274, MPFR_RNDN);
        ;
        mpfr_set_si(r8283, mpfr_cmp(r8264, r8282) <= 0, MPFR_RNDN);
        ;
        mpfr_neg(r8285, r8264, MPFR_RNDN);
        mpfr_sub(r8286, r8285, r8278, MPFR_RNDN);
        mpfr_div(r8287, r8274, r8286, MPFR_RNDN);
        mpfr_div(r8288, r8284, r8287, MPFR_RNDN);
        mpfr_mul(r8289, r8267, r8269, MPFR_RNDN);
        mpfr_div(r8290, r8289, r8264, MPFR_RNDN);
        mpfr_div(r8291, r8264, r8274, MPFR_RNDN);
        ;
        mpfr_mul(r8293, r8291, r8292, MPFR_RNDN);
        mpfr_sub(r8294, r8290, r8293, MPFR_RNDN);
        if (mpfr_get_si(r8283, MPFR_RNDN)) { mpfr_set(r8295, r8288, MPFR_RNDN); } else { mpfr_set(r8295, r8294, MPFR_RNDN); };
        if (mpfr_get_si(r8273, MPFR_RNDN)) { mpfr_set(r8296, r8281, MPFR_RNDN); } else { mpfr_set(r8296, r8295, MPFR_RNDN); };
        if (mpfr_get_si(r8266, MPFR_RNDN)) { mpfr_set(r8297, r8271, MPFR_RNDN); } else { mpfr_set(r8297, r8296, MPFR_RNDN); };
        return mpfr_get_d(r8297, MPFR_RNDN);
}

