#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 r26382 = b;
        float r26383 = -r26382;
        float r26384 = r26382 * r26382;
        float r26385 = 3;
        float r26386 = a;
        float r26387 = r26385 * r26386;
        float r26388 = c;
        float r26389 = r26387 * r26388;
        float r26390 = r26384 - r26389;
        float r26391 = sqrt(r26390);
        float r26392 = r26383 + r26391;
        float r26393 = r26392 / r26387;
        return r26393;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r26394 = b;
        double r26395 = -r26394;
        double r26396 = r26394 * r26394;
        double r26397 = 3;
        double r26398 = a;
        double r26399 = r26397 * r26398;
        double r26400 = c;
        double r26401 = r26399 * r26400;
        double r26402 = r26396 - r26401;
        double r26403 = sqrt(r26402);
        double r26404 = r26395 + r26403;
        double r26405 = r26404 / r26399;
        return r26405;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r26406 = 3/2;
        float r26407 = -r26406;
        float r26408 = b;
        float r26409 = r26407 / r26408;
        float r26410 = -3.330226014690885e-67;
        bool r26411 = r26409 <= r26410;
        float r26412 = c;
        float r26413 = -r26412;
        float r26414 = a;
        float r26415 = 3;
        float r26416 = r26414 * r26415;
        float r26417 = r26408 * r26408;
        float r26418 = fma(r26416, r26413, r26417);
        float r26419 = sqrt(r26418);
        float r26420 = r26419 + r26408;
        float r26421 = r26413 / r26420;
        float r26422 = -7.036172839470016e-307;
        bool r26423 = r26409 <= r26422;
        float r26424 = r26408 + r26408;
        float r26425 = r26413 / r26424;
        float r26426 = 4.002029844616973e-107;
        bool r26427 = r26409 <= r26426;
        float r26428 = r26406 * r26414;
        float r26429 = r26408 / r26412;
        float r26430 = r26428 / r26429;
        float r26431 = r26430 - r26424;
        float r26432 = r26431 / r26416;
        float r26433 = -r26408;
        float r26434 = r26412 * r26416;
        float r26435 = r26417 - r26434;
        float r26436 = sqrt(r26435);
        float r26437 = r26433 + r26436;
        float r26438 = r26437 / r26416;
        float r26439 = r26427 ? r26432 : r26438;
        float r26440 = r26423 ? r26425 : r26439;
        float r26441 = r26411 ? r26421 : r26440;
        return r26441;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r26442 = 3/2;
        double r26443 = -r26442;
        double r26444 = b;
        double r26445 = r26443 / r26444;
        double r26446 = -3.330226014690885e-67;
        bool r26447 = r26445 <= r26446;
        double r26448 = c;
        double r26449 = -r26448;
        double r26450 = a;
        double r26451 = 3;
        double r26452 = r26450 * r26451;
        double r26453 = r26444 * r26444;
        double r26454 = fma(r26452, r26449, r26453);
        double r26455 = sqrt(r26454);
        double r26456 = r26455 + r26444;
        double r26457 = r26449 / r26456;
        double r26458 = -7.036172839470016e-307;
        bool r26459 = r26445 <= r26458;
        double r26460 = r26444 + r26444;
        double r26461 = r26449 / r26460;
        double r26462 = 4.002029844616973e-107;
        bool r26463 = r26445 <= r26462;
        double r26464 = r26442 * r26450;
        double r26465 = r26444 / r26448;
        double r26466 = r26464 / r26465;
        double r26467 = r26466 - r26460;
        double r26468 = r26467 / r26452;
        double r26469 = -r26444;
        double r26470 = r26448 * r26452;
        double r26471 = r26453 - r26470;
        double r26472 = sqrt(r26471);
        double r26473 = r26469 + r26472;
        double r26474 = r26473 / r26452;
        double r26475 = r26463 ? r26468 : r26474;
        double r26476 = r26459 ? r26461 : r26475;
        double r26477 = r26447 ? r26457 : r26476;
        return r26477;
}

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 r26478, r26479, r26480, r26481, r26482, r26483, r26484, r26485, r26486, r26487, r26488, r26489;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r26478);
        mpfr_init(r26479);
        mpfr_init(r26480);
        mpfr_init_set_str(r26481, "3", 10, MPFR_RNDN);
        mpfr_init(r26482);
        mpfr_init(r26483);
        mpfr_init(r26484);
        mpfr_init(r26485);
        mpfr_init(r26486);
        mpfr_init(r26487);
        mpfr_init(r26488);
        mpfr_init(r26489);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r26478, b, MPFR_RNDN);
        mpfr_neg(r26479, r26478, MPFR_RNDN);
        mpfr_mul(r26480, r26478, r26478, MPFR_RNDN);
        ;
        mpfr_set_d(r26482, a, MPFR_RNDN);
        mpfr_mul(r26483, r26481, r26482, MPFR_RNDN);
        mpfr_set_d(r26484, c, MPFR_RNDN);
        mpfr_mul(r26485, r26483, r26484, MPFR_RNDN);
        mpfr_sub(r26486, r26480, r26485, MPFR_RNDN);
        mpfr_sqrt(r26487, r26486, MPFR_RNDN);
        mpfr_add(r26488, r26479, r26487, MPFR_RNDN);
        mpfr_div(r26489, r26488, r26483, MPFR_RNDN);
        return mpfr_get_d(r26489, MPFR_RNDN);
}

static mpfr_t r26490, r26491, r26492, r26493, r26494, r26495, r26496, r26497, r26498, r26499, r26500, r26501, r26502, r26503, r26504, r26505, r26506, r26507, r26508, r26509, r26510, r26511, r26512, r26513, r26514, r26515, r26516, r26517, r26518, r26519, r26520, r26521, r26522, r26523, r26524, r26525;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init_set_str(r26490, "3/2", 10, MPFR_RNDN);
        mpfr_init(r26491);
        mpfr_init(r26492);
        mpfr_init(r26493);
        mpfr_init_set_str(r26494, "-3.330226014690885e-67", 10, MPFR_RNDN);
        mpfr_init(r26495);
        mpfr_init(r26496);
        mpfr_init(r26497);
        mpfr_init(r26498);
        mpfr_init_set_str(r26499, "3", 10, MPFR_RNDN);
        mpfr_init(r26500);
        mpfr_init(r26501);
        mpfr_init(r26502);
        mpfr_init(r26503);
        mpfr_init(r26504);
        mpfr_init(r26505);
        mpfr_init_set_str(r26506, "-7.036172839470016e-307", 10, MPFR_RNDN);
        mpfr_init(r26507);
        mpfr_init(r26508);
        mpfr_init(r26509);
        mpfr_init_set_str(r26510, "4.002029844616973e-107", 10, MPFR_RNDN);
        mpfr_init(r26511);
        mpfr_init(r26512);
        mpfr_init(r26513);
        mpfr_init(r26514);
        mpfr_init(r26515);
        mpfr_init(r26516);
        mpfr_init(r26517);
        mpfr_init(r26518);
        mpfr_init(r26519);
        mpfr_init(r26520);
        mpfr_init(r26521);
        mpfr_init(r26522);
        mpfr_init(r26523);
        mpfr_init(r26524);
        mpfr_init(r26525);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        ;
        mpfr_neg(r26491, r26490, MPFR_RNDN);
        mpfr_set_d(r26492, b, MPFR_RNDN);
        mpfr_div(r26493, r26491, r26492, MPFR_RNDN);
        ;
        mpfr_set_si(r26495, mpfr_cmp(r26493, r26494) <= 0, MPFR_RNDN);
        mpfr_set_d(r26496, c, MPFR_RNDN);
        mpfr_neg(r26497, r26496, MPFR_RNDN);
        mpfr_set_d(r26498, a, MPFR_RNDN);
        ;
        mpfr_mul(r26500, r26498, r26499, MPFR_RNDN);
        mpfr_mul(r26501, r26492, r26492, MPFR_RNDN);
        mpfr_fma(r26502, r26500, r26497, r26501, MPFR_RNDN);
        mpfr_sqrt(r26503, r26502, MPFR_RNDN);
        mpfr_add(r26504, r26503, r26492, MPFR_RNDN);
        mpfr_div(r26505, r26497, r26504, MPFR_RNDN);
        ;
        mpfr_set_si(r26507, mpfr_cmp(r26493, r26506) <= 0, MPFR_RNDN);
        mpfr_add(r26508, r26492, r26492, MPFR_RNDN);
        mpfr_div(r26509, r26497, r26508, MPFR_RNDN);
        ;
        mpfr_set_si(r26511, mpfr_cmp(r26493, r26510) <= 0, MPFR_RNDN);
        mpfr_mul(r26512, r26490, r26498, MPFR_RNDN);
        mpfr_div(r26513, r26492, r26496, MPFR_RNDN);
        mpfr_div(r26514, r26512, r26513, MPFR_RNDN);
        mpfr_sub(r26515, r26514, r26508, MPFR_RNDN);
        mpfr_div(r26516, r26515, r26500, MPFR_RNDN);
        mpfr_neg(r26517, r26492, MPFR_RNDN);
        mpfr_mul(r26518, r26496, r26500, MPFR_RNDN);
        mpfr_sub(r26519, r26501, r26518, MPFR_RNDN);
        mpfr_sqrt(r26520, r26519, MPFR_RNDN);
        mpfr_add(r26521, r26517, r26520, MPFR_RNDN);
        mpfr_div(r26522, r26521, r26500, MPFR_RNDN);
        if (mpfr_get_si(r26511, MPFR_RNDN)) { mpfr_set(r26523, r26516, MPFR_RNDN); } else { mpfr_set(r26523, r26522, MPFR_RNDN); };
        if (mpfr_get_si(r26507, MPFR_RNDN)) { mpfr_set(r26524, r26509, MPFR_RNDN); } else { mpfr_set(r26524, r26523, MPFR_RNDN); };
        if (mpfr_get_si(r26495, MPFR_RNDN)) { mpfr_set(r26525, r26505, MPFR_RNDN); } else { mpfr_set(r26525, r26524, MPFR_RNDN); };
        return mpfr_get_d(r26525, MPFR_RNDN);
}

static mpfr_t r26526, r26527, r26528, r26529, r26530, r26531, r26532, r26533, r26534, r26535, r26536, r26537, r26538, r26539, r26540, r26541, r26542, r26543, r26544, r26545, r26546, r26547, r26548, r26549, r26550, r26551, r26552, r26553, r26554, r26555, r26556, r26557, r26558, r26559, r26560, r26561;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init_set_str(r26526, "3/2", 10, MPFR_RNDN);
        mpfr_init(r26527);
        mpfr_init(r26528);
        mpfr_init(r26529);
        mpfr_init_set_str(r26530, "-3.330226014690885e-67", 10, MPFR_RNDN);
        mpfr_init(r26531);
        mpfr_init(r26532);
        mpfr_init(r26533);
        mpfr_init(r26534);
        mpfr_init_set_str(r26535, "3", 10, MPFR_RNDN);
        mpfr_init(r26536);
        mpfr_init(r26537);
        mpfr_init(r26538);
        mpfr_init(r26539);
        mpfr_init(r26540);
        mpfr_init(r26541);
        mpfr_init_set_str(r26542, "-7.036172839470016e-307", 10, MPFR_RNDN);
        mpfr_init(r26543);
        mpfr_init(r26544);
        mpfr_init(r26545);
        mpfr_init_set_str(r26546, "4.002029844616973e-107", 10, MPFR_RNDN);
        mpfr_init(r26547);
        mpfr_init(r26548);
        mpfr_init(r26549);
        mpfr_init(r26550);
        mpfr_init(r26551);
        mpfr_init(r26552);
        mpfr_init(r26553);
        mpfr_init(r26554);
        mpfr_init(r26555);
        mpfr_init(r26556);
        mpfr_init(r26557);
        mpfr_init(r26558);
        mpfr_init(r26559);
        mpfr_init(r26560);
        mpfr_init(r26561);
}

double f_dm(double a, double b, double c, double __attribute__((unused)) d) {
        ;
        mpfr_neg(r26527, r26526, MPFR_RNDN);
        mpfr_set_d(r26528, b, MPFR_RNDN);
        mpfr_div(r26529, r26527, r26528, MPFR_RNDN);
        ;
        mpfr_set_si(r26531, mpfr_cmp(r26529, r26530) <= 0, MPFR_RNDN);
        mpfr_set_d(r26532, c, MPFR_RNDN);
        mpfr_neg(r26533, r26532, MPFR_RNDN);
        mpfr_set_d(r26534, a, MPFR_RNDN);
        ;
        mpfr_mul(r26536, r26534, r26535, MPFR_RNDN);
        mpfr_mul(r26537, r26528, r26528, MPFR_RNDN);
        mpfr_fma(r26538, r26536, r26533, r26537, MPFR_RNDN);
        mpfr_sqrt(r26539, r26538, MPFR_RNDN);
        mpfr_add(r26540, r26539, r26528, MPFR_RNDN);
        mpfr_div(r26541, r26533, r26540, MPFR_RNDN);
        ;
        mpfr_set_si(r26543, mpfr_cmp(r26529, r26542) <= 0, MPFR_RNDN);
        mpfr_add(r26544, r26528, r26528, MPFR_RNDN);
        mpfr_div(r26545, r26533, r26544, MPFR_RNDN);
        ;
        mpfr_set_si(r26547, mpfr_cmp(r26529, r26546) <= 0, MPFR_RNDN);
        mpfr_mul(r26548, r26526, r26534, MPFR_RNDN);
        mpfr_div(r26549, r26528, r26532, MPFR_RNDN);
        mpfr_div(r26550, r26548, r26549, MPFR_RNDN);
        mpfr_sub(r26551, r26550, r26544, MPFR_RNDN);
        mpfr_div(r26552, r26551, r26536, MPFR_RNDN);
        mpfr_neg(r26553, r26528, MPFR_RNDN);
        mpfr_mul(r26554, r26532, r26536, MPFR_RNDN);
        mpfr_sub(r26555, r26537, r26554, MPFR_RNDN);
        mpfr_sqrt(r26556, r26555, MPFR_RNDN);
        mpfr_add(r26557, r26553, r26556, MPFR_RNDN);
        mpfr_div(r26558, r26557, r26536, MPFR_RNDN);
        if (mpfr_get_si(r26547, MPFR_RNDN)) { mpfr_set(r26559, r26552, MPFR_RNDN); } else { mpfr_set(r26559, r26558, MPFR_RNDN); };
        if (mpfr_get_si(r26543, MPFR_RNDN)) { mpfr_set(r26560, r26545, MPFR_RNDN); } else { mpfr_set(r26560, r26559, MPFR_RNDN); };
        if (mpfr_get_si(r26531, MPFR_RNDN)) { mpfr_set(r26561, r26541, MPFR_RNDN); } else { mpfr_set(r26561, r26560, MPFR_RNDN); };
        return mpfr_get_d(r26561, MPFR_RNDN);
}

