#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "quad2p (problem 3.2.1, positive)";

double f_if(float a, float b_2, float c) {
        float r8154 = b_2;
        float r8155 = -r8154;
        float r8156 = r8154 * r8154;
        float r8157 = a;
        float r8158 = c;
        float r8159 = r8157 * r8158;
        float r8160 = r8156 - r8159;
        float r8161 = sqrt(r8160);
        float r8162 = r8155 + r8161;
        float r8163 = r8162 / r8157;
        return r8163;
}

double f_id(double a, double b_2, double c) {
        double r8164 = b_2;
        double r8165 = -r8164;
        double r8166 = r8164 * r8164;
        double r8167 = a;
        double r8168 = c;
        double r8169 = r8167 * r8168;
        double r8170 = r8166 - r8169;
        double r8171 = sqrt(r8170);
        double r8172 = r8165 + r8171;
        double r8173 = r8172 / r8167;
        return r8173;
}


double f_of(float a, float b_2, float c) {
        float r8174 = b_2;
        float r8175 = -1.9979183584340477e+120;
        bool r8176 = r8174 <= r8175;
        float r8177 = -2;
        float r8178 = a;
        float r8179 = r8174 / r8178;
        float r8180 = r8177 * r8179;
        float r8181 = 5.254270674726003e-210;
        bool r8182 = r8174 <= r8181;
        float r8183 = -r8174;
        float r8184 = r8174 * r8174;
        float r8185 = c;
        float r8186 = r8178 * r8185;
        float r8187 = r8184 - r8186;
        float r8188 = sqrt(r8187);
        float r8189 = r8183 + r8188;
        float r8190 = 1;
        float r8191 = r8190 / r8178;
        float r8192 = r8189 * r8191;
        float r8193 = 9.988998546709026e+36;
        bool r8194 = r8174 <= r8193;
        float r8195 = r8185 * r8178;
        float r8196 = r8183 - r8188;
        float r8197 = r8195 / r8196;
        float r8198 = r8197 / r8178;
        float r8199 = r8178 / r8174;
        float r8200 = 1/2;
        float r8201 = r8200 * r8185;
        float r8202 = r8183 + r8183;
        float r8203 = fma(r8199, r8201, r8202);
        float r8204 = r8185 / r8203;
        float r8205 = r8194 ? r8198 : r8204;
        float r8206 = r8182 ? r8192 : r8205;
        float r8207 = r8176 ? r8180 : r8206;
        return r8207;
}

double f_od(double a, double b_2, double c) {
        double r8208 = b_2;
        double r8209 = -1.9979183584340477e+120;
        bool r8210 = r8208 <= r8209;
        double r8211 = -2;
        double r8212 = a;
        double r8213 = r8208 / r8212;
        double r8214 = r8211 * r8213;
        double r8215 = 5.254270674726003e-210;
        bool r8216 = r8208 <= r8215;
        double r8217 = -r8208;
        double r8218 = r8208 * r8208;
        double r8219 = c;
        double r8220 = r8212 * r8219;
        double r8221 = r8218 - r8220;
        double r8222 = sqrt(r8221);
        double r8223 = r8217 + r8222;
        double r8224 = 1;
        double r8225 = r8224 / r8212;
        double r8226 = r8223 * r8225;
        double r8227 = 9.988998546709026e+36;
        bool r8228 = r8208 <= r8227;
        double r8229 = r8219 * r8212;
        double r8230 = r8217 - r8222;
        double r8231 = r8229 / r8230;
        double r8232 = r8231 / r8212;
        double r8233 = r8212 / r8208;
        double r8234 = 1/2;
        double r8235 = r8234 * r8219;
        double r8236 = r8217 + r8217;
        double r8237 = fma(r8233, r8235, r8236);
        double r8238 = r8219 / r8237;
        double r8239 = r8228 ? r8232 : r8238;
        double r8240 = r8216 ? r8226 : r8239;
        double r8241 = r8210 ? r8214 : r8240;
        return r8241;
}

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 r8242, r8243, r8244, r8245, r8246, r8247, r8248, r8249, r8250, r8251;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8242);
        mpfr_init(r8243);
        mpfr_init(r8244);
        mpfr_init(r8245);
        mpfr_init(r8246);
        mpfr_init(r8247);
        mpfr_init(r8248);
        mpfr_init(r8249);
        mpfr_init(r8250);
        mpfr_init(r8251);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r8242, b_2, MPFR_RNDN);
        mpfr_neg(r8243, r8242, MPFR_RNDN);
        mpfr_mul(r8244, r8242, r8242, MPFR_RNDN);
        mpfr_set_d(r8245, a, MPFR_RNDN);
        mpfr_set_d(r8246, c, MPFR_RNDN);
        mpfr_mul(r8247, r8245, r8246, MPFR_RNDN);
        mpfr_sub(r8248, r8244, r8247, MPFR_RNDN);
        mpfr_sqrt(r8249, r8248, MPFR_RNDN);
        mpfr_add(r8250, r8243, r8249, MPFR_RNDN);
        mpfr_div(r8251, r8250, r8245, MPFR_RNDN);
        return mpfr_get_d(r8251, MPFR_RNDN);
}

static mpfr_t r8252, r8253, r8254, r8255, r8256, r8257, r8258, r8259, r8260, r8261, r8262, r8263, r8264, r8265, r8266, r8267, r8268, r8269, r8270, r8271, r8272, r8273, r8274, r8275, r8276, r8277, r8278, r8279, r8280, r8281, r8282, r8283, r8284, r8285;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8252);
        mpfr_init_set_str(r8253, "-1.9979183584340477e+120", 10, MPFR_RNDN);
        mpfr_init(r8254);
        mpfr_init_set_str(r8255, "-2", 10, MPFR_RNDN);
        mpfr_init(r8256);
        mpfr_init(r8257);
        mpfr_init(r8258);
        mpfr_init_set_str(r8259, "5.254270674726003e-210", 10, MPFR_RNDN);
        mpfr_init(r8260);
        mpfr_init(r8261);
        mpfr_init(r8262);
        mpfr_init(r8263);
        mpfr_init(r8264);
        mpfr_init(r8265);
        mpfr_init(r8266);
        mpfr_init(r8267);
        mpfr_init_set_str(r8268, "1", 10, MPFR_RNDN);
        mpfr_init(r8269);
        mpfr_init(r8270);
        mpfr_init_set_str(r8271, "9.988998546709026e+36", 10, MPFR_RNDN);
        mpfr_init(r8272);
        mpfr_init(r8273);
        mpfr_init(r8274);
        mpfr_init(r8275);
        mpfr_init(r8276);
        mpfr_init(r8277);
        mpfr_init_set_str(r8278, "1/2", 10, MPFR_RNDN);
        mpfr_init(r8279);
        mpfr_init(r8280);
        mpfr_init(r8281);
        mpfr_init(r8282);
        mpfr_init(r8283);
        mpfr_init(r8284);
        mpfr_init(r8285);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r8252, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r8254, mpfr_cmp(r8252, r8253) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r8256, a, MPFR_RNDN);
        mpfr_div(r8257, r8252, r8256, MPFR_RNDN);
        mpfr_mul(r8258, r8255, r8257, MPFR_RNDN);
        ;
        mpfr_set_si(r8260, mpfr_cmp(r8252, r8259) <= 0, MPFR_RNDN);
        mpfr_neg(r8261, r8252, MPFR_RNDN);
        mpfr_mul(r8262, r8252, r8252, MPFR_RNDN);
        mpfr_set_d(r8263, c, MPFR_RNDN);
        mpfr_mul(r8264, r8256, r8263, MPFR_RNDN);
        mpfr_sub(r8265, r8262, r8264, MPFR_RNDN);
        mpfr_sqrt(r8266, r8265, MPFR_RNDN);
        mpfr_add(r8267, r8261, r8266, MPFR_RNDN);
        ;
        mpfr_div(r8269, r8268, r8256, MPFR_RNDN);
        mpfr_mul(r8270, r8267, r8269, MPFR_RNDN);
        ;
        mpfr_set_si(r8272, mpfr_cmp(r8252, r8271) <= 0, MPFR_RNDN);
        mpfr_mul(r8273, r8263, r8256, MPFR_RNDN);
        mpfr_sub(r8274, r8261, r8266, MPFR_RNDN);
        mpfr_div(r8275, r8273, r8274, MPFR_RNDN);
        mpfr_div(r8276, r8275, r8256, MPFR_RNDN);
        mpfr_div(r8277, r8256, r8252, MPFR_RNDN);
        ;
        mpfr_mul(r8279, r8278, r8263, MPFR_RNDN);
        mpfr_add(r8280, r8261, r8261, MPFR_RNDN);
        mpfr_fma(r8281, r8277, r8279, r8280, MPFR_RNDN);
        mpfr_div(r8282, r8263, r8281, MPFR_RNDN);
        if (mpfr_get_si(r8272, MPFR_RNDN)) { mpfr_set(r8283, r8276, MPFR_RNDN); } else { mpfr_set(r8283, r8282, MPFR_RNDN); };
        if (mpfr_get_si(r8260, MPFR_RNDN)) { mpfr_set(r8284, r8270, MPFR_RNDN); } else { mpfr_set(r8284, r8283, MPFR_RNDN); };
        if (mpfr_get_si(r8254, MPFR_RNDN)) { mpfr_set(r8285, r8258, MPFR_RNDN); } else { mpfr_set(r8285, r8284, MPFR_RNDN); };
        return mpfr_get_d(r8285, MPFR_RNDN);
}

static mpfr_t r8286, r8287, r8288, r8289, r8290, r8291, r8292, r8293, r8294, r8295, r8296, r8297, r8298, r8299, r8300, r8301, r8302, r8303, r8304, r8305, r8306, r8307, r8308, r8309, r8310, r8311, r8312, r8313, r8314, r8315, r8316, r8317, r8318, r8319;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8286);
        mpfr_init_set_str(r8287, "-1.9979183584340477e+120", 10, MPFR_RNDN);
        mpfr_init(r8288);
        mpfr_init_set_str(r8289, "-2", 10, MPFR_RNDN);
        mpfr_init(r8290);
        mpfr_init(r8291);
        mpfr_init(r8292);
        mpfr_init_set_str(r8293, "5.254270674726003e-210", 10, MPFR_RNDN);
        mpfr_init(r8294);
        mpfr_init(r8295);
        mpfr_init(r8296);
        mpfr_init(r8297);
        mpfr_init(r8298);
        mpfr_init(r8299);
        mpfr_init(r8300);
        mpfr_init(r8301);
        mpfr_init_set_str(r8302, "1", 10, MPFR_RNDN);
        mpfr_init(r8303);
        mpfr_init(r8304);
        mpfr_init_set_str(r8305, "9.988998546709026e+36", 10, MPFR_RNDN);
        mpfr_init(r8306);
        mpfr_init(r8307);
        mpfr_init(r8308);
        mpfr_init(r8309);
        mpfr_init(r8310);
        mpfr_init(r8311);
        mpfr_init_set_str(r8312, "1/2", 10, MPFR_RNDN);
        mpfr_init(r8313);
        mpfr_init(r8314);
        mpfr_init(r8315);
        mpfr_init(r8316);
        mpfr_init(r8317);
        mpfr_init(r8318);
        mpfr_init(r8319);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r8286, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r8288, mpfr_cmp(r8286, r8287) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r8290, a, MPFR_RNDN);
        mpfr_div(r8291, r8286, r8290, MPFR_RNDN);
        mpfr_mul(r8292, r8289, r8291, MPFR_RNDN);
        ;
        mpfr_set_si(r8294, mpfr_cmp(r8286, r8293) <= 0, MPFR_RNDN);
        mpfr_neg(r8295, r8286, MPFR_RNDN);
        mpfr_mul(r8296, r8286, r8286, MPFR_RNDN);
        mpfr_set_d(r8297, c, MPFR_RNDN);
        mpfr_mul(r8298, r8290, r8297, MPFR_RNDN);
        mpfr_sub(r8299, r8296, r8298, MPFR_RNDN);
        mpfr_sqrt(r8300, r8299, MPFR_RNDN);
        mpfr_add(r8301, r8295, r8300, MPFR_RNDN);
        ;
        mpfr_div(r8303, r8302, r8290, MPFR_RNDN);
        mpfr_mul(r8304, r8301, r8303, MPFR_RNDN);
        ;
        mpfr_set_si(r8306, mpfr_cmp(r8286, r8305) <= 0, MPFR_RNDN);
        mpfr_mul(r8307, r8297, r8290, MPFR_RNDN);
        mpfr_sub(r8308, r8295, r8300, MPFR_RNDN);
        mpfr_div(r8309, r8307, r8308, MPFR_RNDN);
        mpfr_div(r8310, r8309, r8290, MPFR_RNDN);
        mpfr_div(r8311, r8290, r8286, MPFR_RNDN);
        ;
        mpfr_mul(r8313, r8312, r8297, MPFR_RNDN);
        mpfr_add(r8314, r8295, r8295, MPFR_RNDN);
        mpfr_fma(r8315, r8311, r8313, r8314, MPFR_RNDN);
        mpfr_div(r8316, r8297, r8315, MPFR_RNDN);
        if (mpfr_get_si(r8306, MPFR_RNDN)) { mpfr_set(r8317, r8310, MPFR_RNDN); } else { mpfr_set(r8317, r8316, MPFR_RNDN); };
        if (mpfr_get_si(r8294, MPFR_RNDN)) { mpfr_set(r8318, r8304, MPFR_RNDN); } else { mpfr_set(r8318, r8317, MPFR_RNDN); };
        if (mpfr_get_si(r8288, MPFR_RNDN)) { mpfr_set(r8319, r8292, MPFR_RNDN); } else { mpfr_set(r8319, r8318, MPFR_RNDN); };
        return mpfr_get_d(r8319, MPFR_RNDN);
}

