#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 r8166 = b_2;
        float r8167 = -r8166;
        float r8168 = r8166 * r8166;
        float r8169 = a;
        float r8170 = c;
        float r8171 = r8169 * r8170;
        float r8172 = r8168 - r8171;
        float r8173 = sqrt(r8172);
        float r8174 = r8167 + r8173;
        float r8175 = r8174 / r8169;
        return r8175;
}

double f_id(double a, double b_2, double c) {
        double r8176 = b_2;
        double r8177 = -r8176;
        double r8178 = r8176 * r8176;
        double r8179 = a;
        double r8180 = c;
        double r8181 = r8179 * r8180;
        double r8182 = r8178 - r8181;
        double r8183 = sqrt(r8182);
        double r8184 = r8177 + r8183;
        double r8185 = r8184 / r8179;
        return r8185;
}


double f_of(float a, float b_2, float c) {
        float r8186 = b_2;
        float r8187 = -2.770906354773264e+119;
        bool r8188 = r8186 <= r8187;
        float r8189 = -1/2;
        float r8190 = r8186 / r8189;
        float r8191 = a;
        float r8192 = r8190 / r8191;
        float r8193 = 5.571860619390778e-210;
        bool r8194 = r8186 <= r8193;
        float r8195 = -r8186;
        float r8196 = r8186 * r8186;
        float r8197 = c;
        float r8198 = r8191 * r8197;
        float r8199 = r8196 - r8198;
        float r8200 = sqrt(r8199);
        float r8201 = r8195 + r8200;
        float r8202 = 1;
        float r8203 = r8202 / r8191;
        float r8204 = r8201 * r8203;
        float r8205 = 1.4399774592443239e+37;
        bool r8206 = r8186 <= r8205;
        float r8207 = r8195 - r8200;
        float r8208 = cbrt(r8207);
        float r8209 = r8208 * r8208;
        float r8210 = r8197 / r8209;
        float r8211 = r8197 * r8191;
        float r8212 = r8196 - r8211;
        float r8213 = sqrt(r8212);
        float r8214 = r8195 - r8213;
        float r8215 = cbrt(r8214);
        float r8216 = r8210 / r8215;
        float r8217 = r8191 / r8186;
        float r8218 = 1/2;
        float r8219 = r8218 * r8197;
        float r8220 = r8217 * r8219;
        float r8221 = 2;
        float r8222 = r8186 * r8221;
        float r8223 = r8220 - r8222;
        float r8224 = r8197 / r8223;
        float r8225 = r8206 ? r8216 : r8224;
        float r8226 = r8194 ? r8204 : r8225;
        float r8227 = r8188 ? r8192 : r8226;
        return r8227;
}

double f_od(double a, double b_2, double c) {
        double r8228 = b_2;
        double r8229 = -2.770906354773264e+119;
        bool r8230 = r8228 <= r8229;
        double r8231 = -1/2;
        double r8232 = r8228 / r8231;
        double r8233 = a;
        double r8234 = r8232 / r8233;
        double r8235 = 5.571860619390778e-210;
        bool r8236 = r8228 <= r8235;
        double r8237 = -r8228;
        double r8238 = r8228 * r8228;
        double r8239 = c;
        double r8240 = r8233 * r8239;
        double r8241 = r8238 - r8240;
        double r8242 = sqrt(r8241);
        double r8243 = r8237 + r8242;
        double r8244 = 1;
        double r8245 = r8244 / r8233;
        double r8246 = r8243 * r8245;
        double r8247 = 1.4399774592443239e+37;
        bool r8248 = r8228 <= r8247;
        double r8249 = r8237 - r8242;
        double r8250 = cbrt(r8249);
        double r8251 = r8250 * r8250;
        double r8252 = r8239 / r8251;
        double r8253 = r8239 * r8233;
        double r8254 = r8238 - r8253;
        double r8255 = sqrt(r8254);
        double r8256 = r8237 - r8255;
        double r8257 = cbrt(r8256);
        double r8258 = r8252 / r8257;
        double r8259 = r8233 / r8228;
        double r8260 = 1/2;
        double r8261 = r8260 * r8239;
        double r8262 = r8259 * r8261;
        double r8263 = 2;
        double r8264 = r8228 * r8263;
        double r8265 = r8262 - r8264;
        double r8266 = r8239 / r8265;
        double r8267 = r8248 ? r8258 : r8266;
        double r8268 = r8236 ? r8246 : r8267;
        double r8269 = r8230 ? r8234 : r8268;
        return r8269;
}

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 r8270, r8271, r8272, r8273, r8274, r8275, r8276, r8277, r8278, r8279;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8270);
        mpfr_init(r8271);
        mpfr_init(r8272);
        mpfr_init(r8273);
        mpfr_init(r8274);
        mpfr_init(r8275);
        mpfr_init(r8276);
        mpfr_init(r8277);
        mpfr_init(r8278);
        mpfr_init(r8279);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r8270, b_2, MPFR_RNDN);
        mpfr_neg(r8271, r8270, MPFR_RNDN);
        mpfr_mul(r8272, r8270, r8270, MPFR_RNDN);
        mpfr_set_d(r8273, a, MPFR_RNDN);
        mpfr_set_d(r8274, c, MPFR_RNDN);
        mpfr_mul(r8275, r8273, r8274, MPFR_RNDN);
        mpfr_sub(r8276, r8272, r8275, MPFR_RNDN);
        mpfr_sqrt(r8277, r8276, MPFR_RNDN);
        mpfr_add(r8278, r8271, r8277, MPFR_RNDN);
        mpfr_div(r8279, r8278, r8273, MPFR_RNDN);
        return mpfr_get_d(r8279, MPFR_RNDN);
}

static mpfr_t r8280, r8281, r8282, r8283, r8284, r8285, 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, r8320, r8321;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8280);
        mpfr_init_set_str(r8281, "-2.770906354773264e+119", 10, MPFR_RNDN);
        mpfr_init(r8282);
        mpfr_init_set_str(r8283, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r8284);
        mpfr_init(r8285);
        mpfr_init(r8286);
        mpfr_init_set_str(r8287, "5.571860619390778e-210", 10, MPFR_RNDN);
        mpfr_init(r8288);
        mpfr_init(r8289);
        mpfr_init(r8290);
        mpfr_init(r8291);
        mpfr_init(r8292);
        mpfr_init(r8293);
        mpfr_init(r8294);
        mpfr_init(r8295);
        mpfr_init_set_str(r8296, "1", 10, MPFR_RNDN);
        mpfr_init(r8297);
        mpfr_init(r8298);
        mpfr_init_set_str(r8299, "1.4399774592443239e+37", 10, MPFR_RNDN);
        mpfr_init(r8300);
        mpfr_init(r8301);
        mpfr_init(r8302);
        mpfr_init(r8303);
        mpfr_init(r8304);
        mpfr_init(r8305);
        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_set_str(r8315, "2", 10, MPFR_RNDN);
        mpfr_init(r8316);
        mpfr_init(r8317);
        mpfr_init(r8318);
        mpfr_init(r8319);
        mpfr_init(r8320);
        mpfr_init(r8321);
}

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

static mpfr_t r8322, r8323, r8324, r8325, r8326, r8327, r8328, r8329, r8330, r8331, r8332, r8333, r8334, r8335, r8336, r8337, r8338, r8339, r8340, r8341, r8342, r8343, r8344, r8345, r8346, r8347, r8348, r8349, r8350, r8351, r8352, r8353, r8354, r8355, r8356, r8357, r8358, r8359, r8360, r8361, r8362, r8363;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8322);
        mpfr_init_set_str(r8323, "-2.770906354773264e+119", 10, MPFR_RNDN);
        mpfr_init(r8324);
        mpfr_init_set_str(r8325, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r8326);
        mpfr_init(r8327);
        mpfr_init(r8328);
        mpfr_init_set_str(r8329, "5.571860619390778e-210", 10, MPFR_RNDN);
        mpfr_init(r8330);
        mpfr_init(r8331);
        mpfr_init(r8332);
        mpfr_init(r8333);
        mpfr_init(r8334);
        mpfr_init(r8335);
        mpfr_init(r8336);
        mpfr_init(r8337);
        mpfr_init_set_str(r8338, "1", 10, MPFR_RNDN);
        mpfr_init(r8339);
        mpfr_init(r8340);
        mpfr_init_set_str(r8341, "1.4399774592443239e+37", 10, MPFR_RNDN);
        mpfr_init(r8342);
        mpfr_init(r8343);
        mpfr_init(r8344);
        mpfr_init(r8345);
        mpfr_init(r8346);
        mpfr_init(r8347);
        mpfr_init(r8348);
        mpfr_init(r8349);
        mpfr_init(r8350);
        mpfr_init(r8351);
        mpfr_init(r8352);
        mpfr_init(r8353);
        mpfr_init_set_str(r8354, "1/2", 10, MPFR_RNDN);
        mpfr_init(r8355);
        mpfr_init(r8356);
        mpfr_init_set_str(r8357, "2", 10, MPFR_RNDN);
        mpfr_init(r8358);
        mpfr_init(r8359);
        mpfr_init(r8360);
        mpfr_init(r8361);
        mpfr_init(r8362);
        mpfr_init(r8363);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r8322, b_2, MPFR_RNDN);
        ;
        mpfr_set_si(r8324, mpfr_cmp(r8322, r8323) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r8326, r8322, r8325, MPFR_RNDN);
        mpfr_set_d(r8327, a, MPFR_RNDN);
        mpfr_div(r8328, r8326, r8327, MPFR_RNDN);
        ;
        mpfr_set_si(r8330, mpfr_cmp(r8322, r8329) <= 0, MPFR_RNDN);
        mpfr_neg(r8331, r8322, MPFR_RNDN);
        mpfr_mul(r8332, r8322, r8322, MPFR_RNDN);
        mpfr_set_d(r8333, c, MPFR_RNDN);
        mpfr_mul(r8334, r8327, r8333, MPFR_RNDN);
        mpfr_sub(r8335, r8332, r8334, MPFR_RNDN);
        mpfr_sqrt(r8336, r8335, MPFR_RNDN);
        mpfr_add(r8337, r8331, r8336, MPFR_RNDN);
        ;
        mpfr_div(r8339, r8338, r8327, MPFR_RNDN);
        mpfr_mul(r8340, r8337, r8339, MPFR_RNDN);
        ;
        mpfr_set_si(r8342, mpfr_cmp(r8322, r8341) <= 0, MPFR_RNDN);
        mpfr_sub(r8343, r8331, r8336, MPFR_RNDN);
        mpfr_cbrt(r8344, r8343, MPFR_RNDN);
        mpfr_mul(r8345, r8344, r8344, MPFR_RNDN);
        mpfr_div(r8346, r8333, r8345, MPFR_RNDN);
        mpfr_mul(r8347, r8333, r8327, MPFR_RNDN);
        mpfr_sub(r8348, r8332, r8347, MPFR_RNDN);
        mpfr_sqrt(r8349, r8348, MPFR_RNDN);
        mpfr_sub(r8350, r8331, r8349, MPFR_RNDN);
        mpfr_cbrt(r8351, r8350, MPFR_RNDN);
        mpfr_div(r8352, r8346, r8351, MPFR_RNDN);
        mpfr_div(r8353, r8327, r8322, MPFR_RNDN);
        ;
        mpfr_mul(r8355, r8354, r8333, MPFR_RNDN);
        mpfr_mul(r8356, r8353, r8355, MPFR_RNDN);
        ;
        mpfr_mul(r8358, r8322, r8357, MPFR_RNDN);
        mpfr_sub(r8359, r8356, r8358, MPFR_RNDN);
        mpfr_div(r8360, r8333, r8359, MPFR_RNDN);
        if (mpfr_get_si(r8342, MPFR_RNDN)) { mpfr_set(r8361, r8352, MPFR_RNDN); } else { mpfr_set(r8361, r8360, MPFR_RNDN); };
        if (mpfr_get_si(r8330, MPFR_RNDN)) { mpfr_set(r8362, r8340, MPFR_RNDN); } else { mpfr_set(r8362, r8361, MPFR_RNDN); };
        if (mpfr_get_si(r8324, MPFR_RNDN)) { mpfr_set(r8363, r8328, MPFR_RNDN); } else { mpfr_set(r8363, r8362, MPFR_RNDN); };
        return mpfr_get_d(r8363, MPFR_RNDN);
}

