#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 r26327 = b;
        float r26328 = -r26327;
        float r26329 = r26327 * r26327;
        float r26330 = 3;
        float r26331 = a;
        float r26332 = r26330 * r26331;
        float r26333 = c;
        float r26334 = r26332 * r26333;
        float r26335 = r26329 - r26334;
        float r26336 = sqrt(r26335);
        float r26337 = r26328 + r26336;
        float r26338 = r26337 / r26332;
        return r26338;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r26339 = b;
        double r26340 = -r26339;
        double r26341 = r26339 * r26339;
        double r26342 = 3;
        double r26343 = a;
        double r26344 = r26342 * r26343;
        double r26345 = c;
        double r26346 = r26344 * r26345;
        double r26347 = r26341 - r26346;
        double r26348 = sqrt(r26347);
        double r26349 = r26340 + r26348;
        double r26350 = r26349 / r26344;
        return r26350;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r26351 = b;
        float r26352 = -4.0192067564031934e+81;
        bool r26353 = r26351 <= r26352;
        float r26354 = -2/3;
        float r26355 = a;
        float r26356 = r26351 / r26355;
        float r26357 = r26354 * r26356;
        float r26358 = 5.353643662375777e-194;
        bool r26359 = r26351 <= r26358;
        float r26360 = -r26351;
        float r26361 = r26351 * r26351;
        float r26362 = c;
        float r26363 = 3;
        float r26364 = r26363 * r26355;
        float r26365 = r26362 * r26364;
        float r26366 = r26361 - r26365;
        float r26367 = sqrt(r26366);
        float r26368 = r26360 + r26367;
        float r26369 = 1;
        float r26370 = r26369 / r26364;
        float r26371 = r26368 * r26370;
        float r26372 = 8.270234179848068e+66;
        bool r26373 = r26351 <= r26372;
        float r26374 = r26360 - r26367;
        float r26375 = cbrt(r26374);
        float r26376 = r26363 / r26375;
        float r26377 = r26375 * r26375;
        float r26378 = r26362 / r26377;
        float r26379 = r26378 / r26363;
        float r26380 = r26376 * r26379;
        float r26381 = r26362 / r26351;
        float r26382 = -3/2;
        float r26383 = r26382 / r26363;
        float r26384 = r26381 * r26383;
        float r26385 = r26373 ? r26380 : r26384;
        float r26386 = r26359 ? r26371 : r26385;
        float r26387 = r26353 ? r26357 : r26386;
        return r26387;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r26388 = b;
        double r26389 = -4.0192067564031934e+81;
        bool r26390 = r26388 <= r26389;
        double r26391 = -2/3;
        double r26392 = a;
        double r26393 = r26388 / r26392;
        double r26394 = r26391 * r26393;
        double r26395 = 5.353643662375777e-194;
        bool r26396 = r26388 <= r26395;
        double r26397 = -r26388;
        double r26398 = r26388 * r26388;
        double r26399 = c;
        double r26400 = 3;
        double r26401 = r26400 * r26392;
        double r26402 = r26399 * r26401;
        double r26403 = r26398 - r26402;
        double r26404 = sqrt(r26403);
        double r26405 = r26397 + r26404;
        double r26406 = 1;
        double r26407 = r26406 / r26401;
        double r26408 = r26405 * r26407;
        double r26409 = 8.270234179848068e+66;
        bool r26410 = r26388 <= r26409;
        double r26411 = r26397 - r26404;
        double r26412 = cbrt(r26411);
        double r26413 = r26400 / r26412;
        double r26414 = r26412 * r26412;
        double r26415 = r26399 / r26414;
        double r26416 = r26415 / r26400;
        double r26417 = r26413 * r26416;
        double r26418 = r26399 / r26388;
        double r26419 = -3/2;
        double r26420 = r26419 / r26400;
        double r26421 = r26418 * r26420;
        double r26422 = r26410 ? r26417 : r26421;
        double r26423 = r26396 ? r26408 : r26422;
        double r26424 = r26390 ? r26394 : r26423;
        return r26424;
}

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 r26425, r26426, r26427, r26428, r26429, r26430, r26431, r26432, r26433, r26434, r26435, r26436;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26425);
        mpfr_init(r26426);
        mpfr_init(r26427);
        mpfr_init_set_str(r26428, "3", 10, MPFR_RNDN);
        mpfr_init(r26429);
        mpfr_init(r26430);
        mpfr_init(r26431);
        mpfr_init(r26432);
        mpfr_init(r26433);
        mpfr_init(r26434);
        mpfr_init(r26435);
        mpfr_init(r26436);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r26425, b, MPFR_RNDN);
        mpfr_neg(r26426, r26425, MPFR_RNDN);
        mpfr_mul(r26427, r26425, r26425, MPFR_RNDN);
        ;
        mpfr_set_d(r26429, a, MPFR_RNDN);
        mpfr_mul(r26430, r26428, r26429, MPFR_RNDN);
        mpfr_set_d(r26431, c, MPFR_RNDN);
        mpfr_mul(r26432, r26430, r26431, MPFR_RNDN);
        mpfr_sub(r26433, r26427, r26432, MPFR_RNDN);
        mpfr_sqrt(r26434, r26433, MPFR_RNDN);
        mpfr_add(r26435, r26426, r26434, MPFR_RNDN);
        mpfr_div(r26436, r26435, r26430, MPFR_RNDN);
        return mpfr_get_d(r26436, MPFR_RNDN);
}

static mpfr_t r26437, r26438, r26439, r26440, r26441, r26442, r26443, r26444, r26445, r26446, r26447, r26448, r26449, r26450, r26451, r26452, r26453, r26454, r26455, r26456, r26457, r26458, r26459, r26460, r26461, r26462, r26463, r26464, r26465, r26466, r26467, r26468, r26469, r26470, r26471, r26472, r26473;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26437);
        mpfr_init_set_str(r26438, "-4.0192067564031934e+81", 10, MPFR_RNDN);
        mpfr_init(r26439);
        mpfr_init_set_str(r26440, "-2/3", 10, MPFR_RNDN);
        mpfr_init(r26441);
        mpfr_init(r26442);
        mpfr_init(r26443);
        mpfr_init_set_str(r26444, "5.353643662375777e-194", 10, MPFR_RNDN);
        mpfr_init(r26445);
        mpfr_init(r26446);
        mpfr_init(r26447);
        mpfr_init(r26448);
        mpfr_init_set_str(r26449, "3", 10, MPFR_RNDN);
        mpfr_init(r26450);
        mpfr_init(r26451);
        mpfr_init(r26452);
        mpfr_init(r26453);
        mpfr_init(r26454);
        mpfr_init_set_str(r26455, "1", 10, MPFR_RNDN);
        mpfr_init(r26456);
        mpfr_init(r26457);
        mpfr_init_set_str(r26458, "8.270234179848068e+66", 10, MPFR_RNDN);
        mpfr_init(r26459);
        mpfr_init(r26460);
        mpfr_init(r26461);
        mpfr_init(r26462);
        mpfr_init(r26463);
        mpfr_init(r26464);
        mpfr_init(r26465);
        mpfr_init(r26466);
        mpfr_init(r26467);
        mpfr_init_set_str(r26468, "-3/2", 10, MPFR_RNDN);
        mpfr_init(r26469);
        mpfr_init(r26470);
        mpfr_init(r26471);
        mpfr_init(r26472);
        mpfr_init(r26473);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r26437, b, MPFR_RNDN);
        ;
        mpfr_set_si(r26439, mpfr_cmp(r26437, r26438) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r26441, a, MPFR_RNDN);
        mpfr_div(r26442, r26437, r26441, MPFR_RNDN);
        mpfr_mul(r26443, r26440, r26442, MPFR_RNDN);
        ;
        mpfr_set_si(r26445, mpfr_cmp(r26437, r26444) <= 0, MPFR_RNDN);
        mpfr_neg(r26446, r26437, MPFR_RNDN);
        mpfr_mul(r26447, r26437, r26437, MPFR_RNDN);
        mpfr_set_d(r26448, c, MPFR_RNDN);
        ;
        mpfr_mul(r26450, r26449, r26441, MPFR_RNDN);
        mpfr_mul(r26451, r26448, r26450, MPFR_RNDN);
        mpfr_sub(r26452, r26447, r26451, MPFR_RNDN);
        mpfr_sqrt(r26453, r26452, MPFR_RNDN);
        mpfr_add(r26454, r26446, r26453, MPFR_RNDN);
        ;
        mpfr_div(r26456, r26455, r26450, MPFR_RNDN);
        mpfr_mul(r26457, r26454, r26456, MPFR_RNDN);
        ;
        mpfr_set_si(r26459, mpfr_cmp(r26437, r26458) <= 0, MPFR_RNDN);
        mpfr_sub(r26460, r26446, r26453, MPFR_RNDN);
        mpfr_cbrt(r26461, r26460, MPFR_RNDN);
        mpfr_div(r26462, r26449, r26461, MPFR_RNDN);
        mpfr_mul(r26463, r26461, r26461, MPFR_RNDN);
        mpfr_div(r26464, r26448, r26463, MPFR_RNDN);
        mpfr_div(r26465, r26464, r26449, MPFR_RNDN);
        mpfr_mul(r26466, r26462, r26465, MPFR_RNDN);
        mpfr_div(r26467, r26448, r26437, MPFR_RNDN);
        ;
        mpfr_div(r26469, r26468, r26449, MPFR_RNDN);
        mpfr_mul(r26470, r26467, r26469, MPFR_RNDN);
        if (mpfr_get_si(r26459, MPFR_RNDN)) { mpfr_set(r26471, r26466, MPFR_RNDN); } else { mpfr_set(r26471, r26470, MPFR_RNDN); };
        if (mpfr_get_si(r26445, MPFR_RNDN)) { mpfr_set(r26472, r26457, MPFR_RNDN); } else { mpfr_set(r26472, r26471, MPFR_RNDN); };
        if (mpfr_get_si(r26439, MPFR_RNDN)) { mpfr_set(r26473, r26443, MPFR_RNDN); } else { mpfr_set(r26473, r26472, MPFR_RNDN); };
        return mpfr_get_d(r26473, MPFR_RNDN);
}

static mpfr_t r26474, r26475, r26476, r26477, r26478, r26479, r26480, r26481, r26482, r26483, r26484, r26485, r26486, r26487, r26488, r26489, r26490, r26491, r26492, r26493, r26494, r26495, r26496, r26497, r26498, r26499, r26500, r26501, r26502, r26503, r26504, r26505, r26506, r26507, r26508, r26509, r26510;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26474);
        mpfr_init_set_str(r26475, "-4.0192067564031934e+81", 10, MPFR_RNDN);
        mpfr_init(r26476);
        mpfr_init_set_str(r26477, "-2/3", 10, MPFR_RNDN);
        mpfr_init(r26478);
        mpfr_init(r26479);
        mpfr_init(r26480);
        mpfr_init_set_str(r26481, "5.353643662375777e-194", 10, MPFR_RNDN);
        mpfr_init(r26482);
        mpfr_init(r26483);
        mpfr_init(r26484);
        mpfr_init(r26485);
        mpfr_init_set_str(r26486, "3", 10, MPFR_RNDN);
        mpfr_init(r26487);
        mpfr_init(r26488);
        mpfr_init(r26489);
        mpfr_init(r26490);
        mpfr_init(r26491);
        mpfr_init_set_str(r26492, "1", 10, MPFR_RNDN);
        mpfr_init(r26493);
        mpfr_init(r26494);
        mpfr_init_set_str(r26495, "8.270234179848068e+66", 10, MPFR_RNDN);
        mpfr_init(r26496);
        mpfr_init(r26497);
        mpfr_init(r26498);
        mpfr_init(r26499);
        mpfr_init(r26500);
        mpfr_init(r26501);
        mpfr_init(r26502);
        mpfr_init(r26503);
        mpfr_init(r26504);
        mpfr_init_set_str(r26505, "-3/2", 10, MPFR_RNDN);
        mpfr_init(r26506);
        mpfr_init(r26507);
        mpfr_init(r26508);
        mpfr_init(r26509);
        mpfr_init(r26510);
}

double f_dm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r26474, b, MPFR_RNDN);
        ;
        mpfr_set_si(r26476, mpfr_cmp(r26474, r26475) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r26478, a, MPFR_RNDN);
        mpfr_div(r26479, r26474, r26478, MPFR_RNDN);
        mpfr_mul(r26480, r26477, r26479, MPFR_RNDN);
        ;
        mpfr_set_si(r26482, mpfr_cmp(r26474, r26481) <= 0, MPFR_RNDN);
        mpfr_neg(r26483, r26474, MPFR_RNDN);
        mpfr_mul(r26484, r26474, r26474, MPFR_RNDN);
        mpfr_set_d(r26485, c, MPFR_RNDN);
        ;
        mpfr_mul(r26487, r26486, r26478, MPFR_RNDN);
        mpfr_mul(r26488, r26485, r26487, MPFR_RNDN);
        mpfr_sub(r26489, r26484, r26488, MPFR_RNDN);
        mpfr_sqrt(r26490, r26489, MPFR_RNDN);
        mpfr_add(r26491, r26483, r26490, MPFR_RNDN);
        ;
        mpfr_div(r26493, r26492, r26487, MPFR_RNDN);
        mpfr_mul(r26494, r26491, r26493, MPFR_RNDN);
        ;
        mpfr_set_si(r26496, mpfr_cmp(r26474, r26495) <= 0, MPFR_RNDN);
        mpfr_sub(r26497, r26483, r26490, MPFR_RNDN);
        mpfr_cbrt(r26498, r26497, MPFR_RNDN);
        mpfr_div(r26499, r26486, r26498, MPFR_RNDN);
        mpfr_mul(r26500, r26498, r26498, MPFR_RNDN);
        mpfr_div(r26501, r26485, r26500, MPFR_RNDN);
        mpfr_div(r26502, r26501, r26486, MPFR_RNDN);
        mpfr_mul(r26503, r26499, r26502, MPFR_RNDN);
        mpfr_div(r26504, r26485, r26474, MPFR_RNDN);
        ;
        mpfr_div(r26506, r26505, r26486, MPFR_RNDN);
        mpfr_mul(r26507, r26504, r26506, MPFR_RNDN);
        if (mpfr_get_si(r26496, MPFR_RNDN)) { mpfr_set(r26508, r26503, MPFR_RNDN); } else { mpfr_set(r26508, r26507, MPFR_RNDN); };
        if (mpfr_get_si(r26482, MPFR_RNDN)) { mpfr_set(r26509, r26494, MPFR_RNDN); } else { mpfr_set(r26509, r26508, MPFR_RNDN); };
        if (mpfr_get_si(r26476, MPFR_RNDN)) { mpfr_set(r26510, r26480, MPFR_RNDN); } else { mpfr_set(r26510, r26509, MPFR_RNDN); };
        return mpfr_get_d(r26510, MPFR_RNDN);
}

