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

char *name = "jeff quadratic root 2";

double f_if(float a, float b, float c) {
        float r20191 = b;
        float r20192 = 0.0f;
        bool r20193 = r20191 >= r20192;
        float r20194 = 2.0f;
        float r20195 = c;
        float r20196 = r20194 * r20195;
        float r20197 = -r20191;
        float r20198 = r20191 * r20191;
        float r20199 = 4.0f;
        float r20200 = a;
        float r20201 = r20199 * r20200;
        float r20202 = r20201 * r20195;
        float r20203 = r20198 - r20202;
        float r20204 = sqrt(r20203);
        float r20205 = r20197 - r20204;
        float r20206 = r20196 / r20205;
        float r20207 = r20197 + r20204;
        float r20208 = r20194 * r20200;
        float r20209 = r20207 / r20208;
        float r20210 = r20193 ? r20206 : r20209;
        return r20210;
}

double f_id(double a, double b, double c) {
        double r20211 = b;
        double r20212 = 0.0;
        bool r20213 = r20211 >= r20212;
        double r20214 = 2.0;
        double r20215 = c;
        double r20216 = r20214 * r20215;
        double r20217 = -r20211;
        double r20218 = r20211 * r20211;
        double r20219 = 4.0;
        double r20220 = a;
        double r20221 = r20219 * r20220;
        double r20222 = r20221 * r20215;
        double r20223 = r20218 - r20222;
        double r20224 = sqrt(r20223);
        double r20225 = r20217 - r20224;
        double r20226 = r20216 / r20225;
        double r20227 = r20217 + r20224;
        double r20228 = r20214 * r20220;
        double r20229 = r20227 / r20228;
        double r20230 = r20213 ? r20226 : r20229;
        return r20230;
}


double f_of(float a, float b, float c) {
        float r20231 = b;
        float r20232 = r20231 * r20231;
        float r20233 = 4.0f;
        float r20234 = a;
        float r20235 = r20233 * r20234;
        float r20236 = c;
        float r20237 = r20235 * r20236;
        float r20238 = r20232 - r20237;
        float r20239 = 2.9643938750475e-323f;
        bool r20240 = r20238 <= r20239;
        float r20241 = 0.0f;
        bool r20242 = r20231 >= r20241;
        float r20243 = r20236 + r20236;
        float r20244 = -r20231;
        float r20245 = r20244 - r20231;
        float r20246 = r20234 + r20234;
        float r20247 = r20231 / r20236;
        float r20248 = r20246 / r20247;
        float r20249 = r20245 + r20248;
        float r20250 = r20243 / r20249;
        float r20251 = r20236 / r20231;
        float r20252 = r20231 / r20234;
        float r20253 = r20251 - r20252;
        float r20254 = r20242 ? r20250 : r20253;
        float r20255 = 4.622940490853006e+298f;
        bool r20256 = r20238 <= r20255;
        float r20257 = 2.0f;
        float r20258 = r20257 * r20236;
        float r20259 = sqrt(r20238);
        float r20260 = r20244 - r20259;
        float r20261 = r20258 / r20260;
        float r20262 = sqrt(r20259);
        float r20263 = r20262 * r20262;
        float r20264 = r20244 + r20263;
        float r20265 = r20257 * r20234;
        float r20266 = r20264 / r20265;
        float r20267 = r20242 ? r20261 : r20266;
        float r20268 = r20256 ? r20267 : r20254;
        float r20269 = r20240 ? r20254 : r20268;
        return r20269;
}

double f_od(double a, double b, double c) {
        double r20270 = b;
        double r20271 = r20270 * r20270;
        double r20272 = 4.0;
        double r20273 = a;
        double r20274 = r20272 * r20273;
        double r20275 = c;
        double r20276 = r20274 * r20275;
        double r20277 = r20271 - r20276;
        double r20278 = 2.9643938750475e-323;
        bool r20279 = r20277 <= r20278;
        double r20280 = 0.0;
        bool r20281 = r20270 >= r20280;
        double r20282 = r20275 + r20275;
        double r20283 = -r20270;
        double r20284 = r20283 - r20270;
        double r20285 = r20273 + r20273;
        double r20286 = r20270 / r20275;
        double r20287 = r20285 / r20286;
        double r20288 = r20284 + r20287;
        double r20289 = r20282 / r20288;
        double r20290 = r20275 / r20270;
        double r20291 = r20270 / r20273;
        double r20292 = r20290 - r20291;
        double r20293 = r20281 ? r20289 : r20292;
        double r20294 = 4.622940490853006e+298;
        bool r20295 = r20277 <= r20294;
        double r20296 = 2.0;
        double r20297 = r20296 * r20275;
        double r20298 = sqrt(r20277);
        double r20299 = r20283 - r20298;
        double r20300 = r20297 / r20299;
        double r20301 = sqrt(r20298);
        double r20302 = r20301 * r20301;
        double r20303 = r20283 + r20302;
        double r20304 = r20296 * r20273;
        double r20305 = r20303 / r20304;
        double r20306 = r20281 ? r20300 : r20305;
        double r20307 = r20295 ? r20306 : r20293;
        double r20308 = r20279 ? r20293 : r20307;
        return r20308;
}

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 r20309, r20310, r20311, r20312, r20313, r20314, r20315, r20316, r20317, r20318, r20319, r20320, r20321, r20322, r20323, r20324, r20325, r20326, r20327, r20328;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r20309);
        mpfr_init_set_str(r20310, "0", 10, MPFR_RNDN);
        mpfr_init(r20311);
        mpfr_init_set_str(r20312, "2", 10, MPFR_RNDN);
        mpfr_init(r20313);
        mpfr_init(r20314);
        mpfr_init(r20315);
        mpfr_init(r20316);
        mpfr_init_set_str(r20317, "4", 10, MPFR_RNDN);
        mpfr_init(r20318);
        mpfr_init(r20319);
        mpfr_init(r20320);
        mpfr_init(r20321);
        mpfr_init(r20322);
        mpfr_init(r20323);
        mpfr_init(r20324);
        mpfr_init(r20325);
        mpfr_init(r20326);
        mpfr_init(r20327);
        mpfr_init(r20328);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r20309, b, MPFR_RNDN);
        ;
        mpfr_set_si(r20311, mpfr_cmp(r20309, r20310) >= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r20313, c, MPFR_RNDN);
        mpfr_mul(r20314, r20312, r20313, MPFR_RNDN);
        mpfr_neg(r20315, r20309, MPFR_RNDN);
        mpfr_sqr(r20316, r20309, MPFR_RNDN);
        ;
        mpfr_set_d(r20318, a, MPFR_RNDN);
        mpfr_mul(r20319, r20317, r20318, MPFR_RNDN);
        mpfr_mul(r20320, r20319, r20313, MPFR_RNDN);
        mpfr_sub(r20321, r20316, r20320, MPFR_RNDN);
        mpfr_sqrt(r20322, r20321, MPFR_RNDN);
        mpfr_sub(r20323, r20315, r20322, MPFR_RNDN);
        mpfr_div(r20324, r20314, r20323, MPFR_RNDN);
        mpfr_add(r20325, r20315, r20322, MPFR_RNDN);
        mpfr_mul(r20326, r20312, r20318, MPFR_RNDN);
        mpfr_div(r20327, r20325, r20326, MPFR_RNDN);
        if (mpfr_get_si(r20311, MPFR_RNDN)) { mpfr_set(r20328, r20324, MPFR_RNDN); } else { mpfr_set(r20328, r20327, MPFR_RNDN); };
        return mpfr_get_d(r20328, MPFR_RNDN);
}

static mpfr_t r20329, r20330, r20331, r20332, r20333, r20334, r20335, r20336, r20337, r20338, r20339, r20340, r20341, r20342, r20343, r20344, r20345, r20346, r20347, r20348, r20349, r20350, r20351, r20352, r20353, r20354, r20355, r20356, r20357, r20358, r20359, r20360, r20361, r20362, r20363, r20364, r20365, r20366, r20367;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20329);
        mpfr_init(r20330);
        mpfr_init_set_str(r20331, "4", 10, MPFR_RNDN);
        mpfr_init(r20332);
        mpfr_init(r20333);
        mpfr_init(r20334);
        mpfr_init(r20335);
        mpfr_init(r20336);
        mpfr_init_set_str(r20337, "2.9643938750475e-323", 10, MPFR_RNDN);
        mpfr_init(r20338);
        mpfr_init_set_str(r20339, "0", 10, MPFR_RNDN);
        mpfr_init(r20340);
        mpfr_init(r20341);
        mpfr_init(r20342);
        mpfr_init(r20343);
        mpfr_init(r20344);
        mpfr_init(r20345);
        mpfr_init(r20346);
        mpfr_init(r20347);
        mpfr_init(r20348);
        mpfr_init(r20349);
        mpfr_init(r20350);
        mpfr_init(r20351);
        mpfr_init(r20352);
        mpfr_init_set_str(r20353, "4.622940490853006e+298", 10, MPFR_RNDN);
        mpfr_init(r20354);
        mpfr_init_set_str(r20355, "2", 10, MPFR_RNDN);
        mpfr_init(r20356);
        mpfr_init(r20357);
        mpfr_init(r20358);
        mpfr_init(r20359);
        mpfr_init(r20360);
        mpfr_init(r20361);
        mpfr_init(r20362);
        mpfr_init(r20363);
        mpfr_init(r20364);
        mpfr_init(r20365);
        mpfr_init(r20366);
        mpfr_init(r20367);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r20329, b, MPFR_RNDN);
        mpfr_sqr(r20330, r20329, MPFR_RNDN);
        ;
        mpfr_set_d(r20332, a, MPFR_RNDN);
        mpfr_mul(r20333, r20331, r20332, MPFR_RNDN);
        mpfr_set_d(r20334, c, MPFR_RNDN);
        mpfr_mul(r20335, r20333, r20334, MPFR_RNDN);
        mpfr_sub(r20336, r20330, r20335, MPFR_RNDN);
        ;
        mpfr_set_si(r20338, mpfr_cmp(r20336, r20337) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r20340, mpfr_cmp(r20329, r20339) >= 0, MPFR_RNDN);
        mpfr_add(r20341, r20334, r20334, MPFR_RNDN);
        mpfr_neg(r20342, r20329, MPFR_RNDN);
        mpfr_sub(r20343, r20342, r20329, MPFR_RNDN);
        mpfr_add(r20344, r20332, r20332, MPFR_RNDN);
        mpfr_div(r20345, r20329, r20334, MPFR_RNDN);
        mpfr_div(r20346, r20344, r20345, MPFR_RNDN);
        mpfr_add(r20347, r20343, r20346, MPFR_RNDN);
        mpfr_div(r20348, r20341, r20347, MPFR_RNDN);
        mpfr_div(r20349, r20334, r20329, MPFR_RNDN);
        mpfr_div(r20350, r20329, r20332, MPFR_RNDN);
        mpfr_sub(r20351, r20349, r20350, MPFR_RNDN);
        if (mpfr_get_si(r20340, MPFR_RNDN)) { mpfr_set(r20352, r20348, MPFR_RNDN); } else { mpfr_set(r20352, r20351, MPFR_RNDN); };
        ;
        mpfr_set_si(r20354, mpfr_cmp(r20336, r20353) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r20356, r20355, r20334, MPFR_RNDN);
        mpfr_sqrt(r20357, r20336, MPFR_RNDN);
        mpfr_sub(r20358, r20342, r20357, MPFR_RNDN);
        mpfr_div(r20359, r20356, r20358, MPFR_RNDN);
        mpfr_sqrt(r20360, r20357, MPFR_RNDN);
        mpfr_sqr(r20361, r20360, MPFR_RNDN);
        mpfr_add(r20362, r20342, r20361, MPFR_RNDN);
        mpfr_mul(r20363, r20355, r20332, MPFR_RNDN);
        mpfr_div(r20364, r20362, r20363, MPFR_RNDN);
        if (mpfr_get_si(r20340, MPFR_RNDN)) { mpfr_set(r20365, r20359, MPFR_RNDN); } else { mpfr_set(r20365, r20364, MPFR_RNDN); };
        if (mpfr_get_si(r20354, MPFR_RNDN)) { mpfr_set(r20366, r20365, MPFR_RNDN); } else { mpfr_set(r20366, r20352, MPFR_RNDN); };
        if (mpfr_get_si(r20338, MPFR_RNDN)) { mpfr_set(r20367, r20352, MPFR_RNDN); } else { mpfr_set(r20367, r20366, MPFR_RNDN); };
        return mpfr_get_d(r20367, MPFR_RNDN);
}

static mpfr_t r20368, r20369, r20370, r20371, r20372, r20373, r20374, r20375, r20376, r20377, r20378, r20379, r20380, r20381, r20382, r20383, r20384, r20385, r20386, r20387, r20388, r20389, r20390, r20391, r20392, r20393, r20394, r20395, r20396, r20397, r20398, r20399, r20400, r20401, r20402, r20403, r20404, r20405, r20406;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20368);
        mpfr_init(r20369);
        mpfr_init_set_str(r20370, "4", 10, MPFR_RNDN);
        mpfr_init(r20371);
        mpfr_init(r20372);
        mpfr_init(r20373);
        mpfr_init(r20374);
        mpfr_init(r20375);
        mpfr_init_set_str(r20376, "2.9643938750475e-323", 10, MPFR_RNDN);
        mpfr_init(r20377);
        mpfr_init_set_str(r20378, "0", 10, MPFR_RNDN);
        mpfr_init(r20379);
        mpfr_init(r20380);
        mpfr_init(r20381);
        mpfr_init(r20382);
        mpfr_init(r20383);
        mpfr_init(r20384);
        mpfr_init(r20385);
        mpfr_init(r20386);
        mpfr_init(r20387);
        mpfr_init(r20388);
        mpfr_init(r20389);
        mpfr_init(r20390);
        mpfr_init(r20391);
        mpfr_init_set_str(r20392, "4.622940490853006e+298", 10, MPFR_RNDN);
        mpfr_init(r20393);
        mpfr_init_set_str(r20394, "2", 10, MPFR_RNDN);
        mpfr_init(r20395);
        mpfr_init(r20396);
        mpfr_init(r20397);
        mpfr_init(r20398);
        mpfr_init(r20399);
        mpfr_init(r20400);
        mpfr_init(r20401);
        mpfr_init(r20402);
        mpfr_init(r20403);
        mpfr_init(r20404);
        mpfr_init(r20405);
        mpfr_init(r20406);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r20368, b, MPFR_RNDN);
        mpfr_sqr(r20369, r20368, MPFR_RNDN);
        ;
        mpfr_set_d(r20371, a, MPFR_RNDN);
        mpfr_mul(r20372, r20370, r20371, MPFR_RNDN);
        mpfr_set_d(r20373, c, MPFR_RNDN);
        mpfr_mul(r20374, r20372, r20373, MPFR_RNDN);
        mpfr_sub(r20375, r20369, r20374, MPFR_RNDN);
        ;
        mpfr_set_si(r20377, mpfr_cmp(r20375, r20376) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r20379, mpfr_cmp(r20368, r20378) >= 0, MPFR_RNDN);
        mpfr_add(r20380, r20373, r20373, MPFR_RNDN);
        mpfr_neg(r20381, r20368, MPFR_RNDN);
        mpfr_sub(r20382, r20381, r20368, MPFR_RNDN);
        mpfr_add(r20383, r20371, r20371, MPFR_RNDN);
        mpfr_div(r20384, r20368, r20373, MPFR_RNDN);
        mpfr_div(r20385, r20383, r20384, MPFR_RNDN);
        mpfr_add(r20386, r20382, r20385, MPFR_RNDN);
        mpfr_div(r20387, r20380, r20386, MPFR_RNDN);
        mpfr_div(r20388, r20373, r20368, MPFR_RNDN);
        mpfr_div(r20389, r20368, r20371, MPFR_RNDN);
        mpfr_sub(r20390, r20388, r20389, MPFR_RNDN);
        if (mpfr_get_si(r20379, MPFR_RNDN)) { mpfr_set(r20391, r20387, MPFR_RNDN); } else { mpfr_set(r20391, r20390, MPFR_RNDN); };
        ;
        mpfr_set_si(r20393, mpfr_cmp(r20375, r20392) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r20395, r20394, r20373, MPFR_RNDN);
        mpfr_sqrt(r20396, r20375, MPFR_RNDN);
        mpfr_sub(r20397, r20381, r20396, MPFR_RNDN);
        mpfr_div(r20398, r20395, r20397, MPFR_RNDN);
        mpfr_sqrt(r20399, r20396, MPFR_RNDN);
        mpfr_sqr(r20400, r20399, MPFR_RNDN);
        mpfr_add(r20401, r20381, r20400, MPFR_RNDN);
        mpfr_mul(r20402, r20394, r20371, MPFR_RNDN);
        mpfr_div(r20403, r20401, r20402, MPFR_RNDN);
        if (mpfr_get_si(r20379, MPFR_RNDN)) { mpfr_set(r20404, r20398, MPFR_RNDN); } else { mpfr_set(r20404, r20403, MPFR_RNDN); };
        if (mpfr_get_si(r20393, MPFR_RNDN)) { mpfr_set(r20405, r20404, MPFR_RNDN); } else { mpfr_set(r20405, r20391, MPFR_RNDN); };
        if (mpfr_get_si(r20377, MPFR_RNDN)) { mpfr_set(r20406, r20391, MPFR_RNDN); } else { mpfr_set(r20406, r20405, MPFR_RNDN); };
        return mpfr_get_d(r20406, MPFR_RNDN);
}

