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

char *name = "Cubic critical";

double f_if(float a, float b, float c, float __attribute__((unused)) d) {
        float r26232 = b;
        float r26233 = -r26232;
        float r26234 = r26232 * r26232;
        float r26235 = 3;
        float r26236 = a;
        float r26237 = r26235 * r26236;
        float r26238 = c;
        float r26239 = r26237 * r26238;
        float r26240 = r26234 - r26239;
        float r26241 = sqrt(r26240);
        float r26242 = r26233 + r26241;
        float r26243 = r26242 / r26237;
        return r26243;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r26244 = b;
        double r26245 = -r26244;
        double r26246 = r26244 * r26244;
        double r26247 = 3;
        double r26248 = a;
        double r26249 = r26247 * r26248;
        double r26250 = c;
        double r26251 = r26249 * r26250;
        double r26252 = r26246 - r26251;
        double r26253 = sqrt(r26252);
        double r26254 = r26245 + r26253;
        double r26255 = r26254 / r26249;
        return r26255;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r26256 = b;
        float r26257 = -2.9506286404998383e+99;
        bool r26258 = r26256 <= r26257;
        float r26259 = 3/2;
        float r26260 = a;
        float r26261 = r26259 * r26260;
        float r26262 = c;
        float r26263 = r26256 / r26262;
        float r26264 = r26261 / r26263;
        float r26265 = r26256 + r26256;
        float r26266 = r26264 - r26265;
        float r26267 = 3;
        float r26268 = r26267 * r26260;
        float r26269 = r26266 / r26268;
        float r26270 = 7.461795707230234e-267;
        bool r26271 = r26256 <= r26270;
        float r26272 = -r26256;
        float r26273 = r26256 * r26256;
        float r26274 = r26268 * r26262;
        float r26275 = r26273 - r26274;
        float r26276 = sqrt(r26275);
        float r26277 = r26272 + r26276;
        float r26278 = 1;
        float r26279 = r26278 / r26268;
        float r26280 = r26277 * r26279;
        float r26281 = 4.080064831394084e-11;
        bool r26282 = r26256 <= r26281;
        float r26283 = r26260 * r26267;
        float r26284 = r26262 * r26283;
        float r26285 = r26272 - r26276;
        float r26286 = r26284 / r26285;
        float r26287 = r26286 / r26268;
        float r26288 = r26262 / r26256;
        float r26289 = r26288 * r26261;
        float r26290 = 2;
        float r26291 = r26290 * r26256;
        float r26292 = r26289 - r26291;
        float r26293 = r26262 / r26292;
        float r26294 = r26282 ? r26287 : r26293;
        float r26295 = r26271 ? r26280 : r26294;
        float r26296 = r26258 ? r26269 : r26295;
        return r26296;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r26297 = b;
        double r26298 = -2.9506286404998383e+99;
        bool r26299 = r26297 <= r26298;
        double r26300 = 3/2;
        double r26301 = a;
        double r26302 = r26300 * r26301;
        double r26303 = c;
        double r26304 = r26297 / r26303;
        double r26305 = r26302 / r26304;
        double r26306 = r26297 + r26297;
        double r26307 = r26305 - r26306;
        double r26308 = 3;
        double r26309 = r26308 * r26301;
        double r26310 = r26307 / r26309;
        double r26311 = 7.461795707230234e-267;
        bool r26312 = r26297 <= r26311;
        double r26313 = -r26297;
        double r26314 = r26297 * r26297;
        double r26315 = r26309 * r26303;
        double r26316 = r26314 - r26315;
        double r26317 = sqrt(r26316);
        double r26318 = r26313 + r26317;
        double r26319 = 1;
        double r26320 = r26319 / r26309;
        double r26321 = r26318 * r26320;
        double r26322 = 4.080064831394084e-11;
        bool r26323 = r26297 <= r26322;
        double r26324 = r26301 * r26308;
        double r26325 = r26303 * r26324;
        double r26326 = r26313 - r26317;
        double r26327 = r26325 / r26326;
        double r26328 = r26327 / r26309;
        double r26329 = r26303 / r26297;
        double r26330 = r26329 * r26302;
        double r26331 = 2;
        double r26332 = r26331 * r26297;
        double r26333 = r26330 - r26332;
        double r26334 = r26303 / r26333;
        double r26335 = r26323 ? r26328 : r26334;
        double r26336 = r26312 ? r26321 : r26335;
        double r26337 = r26299 ? r26310 : r26336;
        return r26337;
}

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 r26338, r26339, r26340, r26341, r26342, r26343, r26344, r26345, r26346, r26347, r26348, r26349;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26338);
        mpfr_init(r26339);
        mpfr_init(r26340);
        mpfr_init_set_str(r26341, "3", 10, MPFR_RNDN);
        mpfr_init(r26342);
        mpfr_init(r26343);
        mpfr_init(r26344);
        mpfr_init(r26345);
        mpfr_init(r26346);
        mpfr_init(r26347);
        mpfr_init(r26348);
        mpfr_init(r26349);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r26338, b, MPFR_RNDN);
        mpfr_neg(r26339, r26338, MPFR_RNDN);
        mpfr_mul(r26340, r26338, r26338, MPFR_RNDN);
        ;
        mpfr_set_d(r26342, a, MPFR_RNDN);
        mpfr_mul(r26343, r26341, r26342, MPFR_RNDN);
        mpfr_set_d(r26344, c, MPFR_RNDN);
        mpfr_mul(r26345, r26343, r26344, MPFR_RNDN);
        mpfr_sub(r26346, r26340, r26345, MPFR_RNDN);
        mpfr_sqrt(r26347, r26346, MPFR_RNDN);
        mpfr_add(r26348, r26339, r26347, MPFR_RNDN);
        mpfr_div(r26349, r26348, r26343, MPFR_RNDN);
        return mpfr_get_d(r26349, MPFR_RNDN);
}

static mpfr_t r26350, r26351, r26352, r26353, r26354, r26355, r26356, r26357, r26358, r26359, r26360, r26361, r26362, r26363, r26364, r26365, r26366, r26367, r26368, r26369, r26370, r26371, r26372, r26373, r26374, r26375, r26376, r26377, r26378, r26379, r26380, r26381, r26382, r26383, r26384, r26385, r26386, r26387, r26388, r26389, r26390;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26350);
        mpfr_init_set_str(r26351, "-2.9506286404998383e+99", 10, MPFR_RNDN);
        mpfr_init(r26352);
        mpfr_init_set_str(r26353, "3/2", 10, MPFR_RNDN);
        mpfr_init(r26354);
        mpfr_init(r26355);
        mpfr_init(r26356);
        mpfr_init(r26357);
        mpfr_init(r26358);
        mpfr_init(r26359);
        mpfr_init(r26360);
        mpfr_init_set_str(r26361, "3", 10, MPFR_RNDN);
        mpfr_init(r26362);
        mpfr_init(r26363);
        mpfr_init_set_str(r26364, "7.461795707230234e-267", 10, MPFR_RNDN);
        mpfr_init(r26365);
        mpfr_init(r26366);
        mpfr_init(r26367);
        mpfr_init(r26368);
        mpfr_init(r26369);
        mpfr_init(r26370);
        mpfr_init(r26371);
        mpfr_init_set_str(r26372, "1", 10, MPFR_RNDN);
        mpfr_init(r26373);
        mpfr_init(r26374);
        mpfr_init_set_str(r26375, "4.080064831394084e-11", 10, MPFR_RNDN);
        mpfr_init(r26376);
        mpfr_init(r26377);
        mpfr_init(r26378);
        mpfr_init(r26379);
        mpfr_init(r26380);
        mpfr_init(r26381);
        mpfr_init(r26382);
        mpfr_init(r26383);
        mpfr_init_set_str(r26384, "2", 10, MPFR_RNDN);
        mpfr_init(r26385);
        mpfr_init(r26386);
        mpfr_init(r26387);
        mpfr_init(r26388);
        mpfr_init(r26389);
        mpfr_init(r26390);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r26350, b, MPFR_RNDN);
        ;
        mpfr_set_si(r26352, mpfr_cmp(r26350, r26351) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r26354, a, MPFR_RNDN);
        mpfr_mul(r26355, r26353, r26354, MPFR_RNDN);
        mpfr_set_d(r26356, c, MPFR_RNDN);
        mpfr_div(r26357, r26350, r26356, MPFR_RNDN);
        mpfr_div(r26358, r26355, r26357, MPFR_RNDN);
        mpfr_add(r26359, r26350, r26350, MPFR_RNDN);
        mpfr_sub(r26360, r26358, r26359, MPFR_RNDN);
        ;
        mpfr_mul(r26362, r26361, r26354, MPFR_RNDN);
        mpfr_div(r26363, r26360, r26362, MPFR_RNDN);
        ;
        mpfr_set_si(r26365, mpfr_cmp(r26350, r26364) <= 0, MPFR_RNDN);
        mpfr_neg(r26366, r26350, MPFR_RNDN);
        mpfr_mul(r26367, r26350, r26350, MPFR_RNDN);
        mpfr_mul(r26368, r26362, r26356, MPFR_RNDN);
        mpfr_sub(r26369, r26367, r26368, MPFR_RNDN);
        mpfr_sqrt(r26370, r26369, MPFR_RNDN);
        mpfr_add(r26371, r26366, r26370, MPFR_RNDN);
        ;
        mpfr_div(r26373, r26372, r26362, MPFR_RNDN);
        mpfr_mul(r26374, r26371, r26373, MPFR_RNDN);
        ;
        mpfr_set_si(r26376, mpfr_cmp(r26350, r26375) <= 0, MPFR_RNDN);
        mpfr_mul(r26377, r26354, r26361, MPFR_RNDN);
        mpfr_mul(r26378, r26356, r26377, MPFR_RNDN);
        mpfr_sub(r26379, r26366, r26370, MPFR_RNDN);
        mpfr_div(r26380, r26378, r26379, MPFR_RNDN);
        mpfr_div(r26381, r26380, r26362, MPFR_RNDN);
        mpfr_div(r26382, r26356, r26350, MPFR_RNDN);
        mpfr_mul(r26383, r26382, r26355, MPFR_RNDN);
        ;
        mpfr_mul(r26385, r26384, r26350, MPFR_RNDN);
        mpfr_sub(r26386, r26383, r26385, MPFR_RNDN);
        mpfr_div(r26387, r26356, r26386, MPFR_RNDN);
        if (mpfr_get_si(r26376, MPFR_RNDN)) { mpfr_set(r26388, r26381, MPFR_RNDN); } else { mpfr_set(r26388, r26387, MPFR_RNDN); };
        if (mpfr_get_si(r26365, MPFR_RNDN)) { mpfr_set(r26389, r26374, MPFR_RNDN); } else { mpfr_set(r26389, r26388, MPFR_RNDN); };
        if (mpfr_get_si(r26352, MPFR_RNDN)) { mpfr_set(r26390, r26363, MPFR_RNDN); } else { mpfr_set(r26390, r26389, MPFR_RNDN); };
        return mpfr_get_d(r26390, MPFR_RNDN);
}

static mpfr_t r26391, r26392, r26393, r26394, r26395, r26396, r26397, r26398, r26399, r26400, r26401, r26402, r26403, r26404, r26405, r26406, r26407, r26408, r26409, r26410, r26411, r26412, r26413, r26414, r26415, r26416, r26417, r26418, r26419, r26420, r26421, r26422, r26423, r26424, r26425, r26426, r26427, r26428, r26429, r26430, r26431;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26391);
        mpfr_init_set_str(r26392, "-2.9506286404998383e+99", 10, MPFR_RNDN);
        mpfr_init(r26393);
        mpfr_init_set_str(r26394, "3/2", 10, MPFR_RNDN);
        mpfr_init(r26395);
        mpfr_init(r26396);
        mpfr_init(r26397);
        mpfr_init(r26398);
        mpfr_init(r26399);
        mpfr_init(r26400);
        mpfr_init(r26401);
        mpfr_init_set_str(r26402, "3", 10, MPFR_RNDN);
        mpfr_init(r26403);
        mpfr_init(r26404);
        mpfr_init_set_str(r26405, "7.461795707230234e-267", 10, MPFR_RNDN);
        mpfr_init(r26406);
        mpfr_init(r26407);
        mpfr_init(r26408);
        mpfr_init(r26409);
        mpfr_init(r26410);
        mpfr_init(r26411);
        mpfr_init(r26412);
        mpfr_init_set_str(r26413, "1", 10, MPFR_RNDN);
        mpfr_init(r26414);
        mpfr_init(r26415);
        mpfr_init_set_str(r26416, "4.080064831394084e-11", 10, MPFR_RNDN);
        mpfr_init(r26417);
        mpfr_init(r26418);
        mpfr_init(r26419);
        mpfr_init(r26420);
        mpfr_init(r26421);
        mpfr_init(r26422);
        mpfr_init(r26423);
        mpfr_init(r26424);
        mpfr_init_set_str(r26425, "2", 10, MPFR_RNDN);
        mpfr_init(r26426);
        mpfr_init(r26427);
        mpfr_init(r26428);
        mpfr_init(r26429);
        mpfr_init(r26430);
        mpfr_init(r26431);
}

double f_dm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r26391, b, MPFR_RNDN);
        ;
        mpfr_set_si(r26393, mpfr_cmp(r26391, r26392) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r26395, a, MPFR_RNDN);
        mpfr_mul(r26396, r26394, r26395, MPFR_RNDN);
        mpfr_set_d(r26397, c, MPFR_RNDN);
        mpfr_div(r26398, r26391, r26397, MPFR_RNDN);
        mpfr_div(r26399, r26396, r26398, MPFR_RNDN);
        mpfr_add(r26400, r26391, r26391, MPFR_RNDN);
        mpfr_sub(r26401, r26399, r26400, MPFR_RNDN);
        ;
        mpfr_mul(r26403, r26402, r26395, MPFR_RNDN);
        mpfr_div(r26404, r26401, r26403, MPFR_RNDN);
        ;
        mpfr_set_si(r26406, mpfr_cmp(r26391, r26405) <= 0, MPFR_RNDN);
        mpfr_neg(r26407, r26391, MPFR_RNDN);
        mpfr_mul(r26408, r26391, r26391, MPFR_RNDN);
        mpfr_mul(r26409, r26403, r26397, MPFR_RNDN);
        mpfr_sub(r26410, r26408, r26409, MPFR_RNDN);
        mpfr_sqrt(r26411, r26410, MPFR_RNDN);
        mpfr_add(r26412, r26407, r26411, MPFR_RNDN);
        ;
        mpfr_div(r26414, r26413, r26403, MPFR_RNDN);
        mpfr_mul(r26415, r26412, r26414, MPFR_RNDN);
        ;
        mpfr_set_si(r26417, mpfr_cmp(r26391, r26416) <= 0, MPFR_RNDN);
        mpfr_mul(r26418, r26395, r26402, MPFR_RNDN);
        mpfr_mul(r26419, r26397, r26418, MPFR_RNDN);
        mpfr_sub(r26420, r26407, r26411, MPFR_RNDN);
        mpfr_div(r26421, r26419, r26420, MPFR_RNDN);
        mpfr_div(r26422, r26421, r26403, MPFR_RNDN);
        mpfr_div(r26423, r26397, r26391, MPFR_RNDN);
        mpfr_mul(r26424, r26423, r26396, MPFR_RNDN);
        ;
        mpfr_mul(r26426, r26425, r26391, MPFR_RNDN);
        mpfr_sub(r26427, r26424, r26426, MPFR_RNDN);
        mpfr_div(r26428, r26397, r26427, MPFR_RNDN);
        if (mpfr_get_si(r26417, MPFR_RNDN)) { mpfr_set(r26429, r26422, MPFR_RNDN); } else { mpfr_set(r26429, r26428, MPFR_RNDN); };
        if (mpfr_get_si(r26406, MPFR_RNDN)) { mpfr_set(r26430, r26415, MPFR_RNDN); } else { mpfr_set(r26430, r26429, MPFR_RNDN); };
        if (mpfr_get_si(r26393, MPFR_RNDN)) { mpfr_set(r26431, r26404, MPFR_RNDN); } else { mpfr_set(r26431, r26430, MPFR_RNDN); };
        return mpfr_get_d(r26431, MPFR_RNDN);
}

