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

char *name = "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, E";

double f_if(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r54341 = x;
        float r54342 = 18.0;
        float r54343 = r54341 * r54342;
        float r54344 = y;
        float r54345 = r54343 * r54344;
        float r54346 = z;
        float r54347 = r54345 * r54346;
        float r54348 = t;
        float r54349 = r54347 * r54348;
        float r54350 = a;
        float r54351 = 4.0;
        float r54352 = r54350 * r54351;
        float r54353 = r54352 * r54348;
        float r54354 = r54349 - r54353;
        float r54355 = b;
        float r54356 = c;
        float r54357 = r54355 * r54356;
        float r54358 = r54354 + r54357;
        float r54359 = r54341 * r54351;
        float r54360 = i;
        float r54361 = r54359 * r54360;
        float r54362 = r54358 - r54361;
        float r54363 = j;
        float r54364 = 27.0;
        float r54365 = r54363 * r54364;
        float r54366 = k;
        float r54367 = r54365 * r54366;
        float r54368 = r54362 - r54367;
        return r54368;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r54369 = x;
        double r54370 = 18.0;
        double r54371 = r54369 * r54370;
        double r54372 = y;
        double r54373 = r54371 * r54372;
        double r54374 = z;
        double r54375 = r54373 * r54374;
        double r54376 = t;
        double r54377 = r54375 * r54376;
        double r54378 = a;
        double r54379 = 4.0;
        double r54380 = r54378 * r54379;
        double r54381 = r54380 * r54376;
        double r54382 = r54377 - r54381;
        double r54383 = b;
        double r54384 = c;
        double r54385 = r54383 * r54384;
        double r54386 = r54382 + r54385;
        double r54387 = r54369 * r54379;
        double r54388 = i;
        double r54389 = r54387 * r54388;
        double r54390 = r54386 - r54389;
        double r54391 = j;
        double r54392 = 27.0;
        double r54393 = r54391 * r54392;
        double r54394 = k;
        double r54395 = r54393 * r54394;
        double r54396 = r54390 - r54395;
        return r54396;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r54397 = z;
        float r54398 = -5.38122143438205e-09;
        bool r54399 = r54397 <= r54398;
        float r54400 = b;
        float r54401 = c;
        float r54402 = r54400 * r54401;
        float r54403 = 4.0;
        float r54404 = x;
        float r54405 = i;
        float r54406 = r54404 * r54405;
        float r54407 = a;
        float r54408 = t;
        float r54409 = r54407 * r54408;
        float r54410 = r54406 + r54409;
        float r54411 = r54403 * r54410;
        float r54412 = r54402 - r54411;
        float r54413 = 18.0;
        float r54414 = r54413 * r54404;
        float r54415 = y;
        float r54416 = r54414 * r54415;
        float r54417 = r54408 * r54416;
        float r54418 = r54417 * r54397;
        float r54419 = 27.0;
        float r54420 = k;
        float r54421 = j;
        float r54422 = r54420 * r54421;
        float r54423 = r54419 * r54422;
        float r54424 = r54418 - r54423;
        float r54425 = r54412 + r54424;
        float r54426 = 1.620828576697051e-140;
        bool r54427 = r54397 <= r54426;
        float r54428 = r54415 * r54397;
        float r54429 = r54414 * r54428;
        float r54430 = r54408 * r54429;
        float r54431 = cbrt(r54430);
        float r54432 = r54431 * r54431;
        float r54433 = r54432 * r54431;
        float r54434 = r54433 - r54423;
        float r54435 = r54412 + r54434;
        float r54436 = r54408 * r54404;
        float r54437 = r54415 * r54436;
        float r54438 = r54397 * r54437;
        float r54439 = r54413 * r54438;
        float r54440 = r54439 - r54423;
        float r54441 = r54412 + r54440;
        float r54442 = r54427 ? r54435 : r54441;
        float r54443 = r54399 ? r54425 : r54442;
        return r54443;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r54444 = z;
        double r54445 = -5.38122143438205e-09;
        bool r54446 = r54444 <= r54445;
        double r54447 = b;
        double r54448 = c;
        double r54449 = r54447 * r54448;
        double r54450 = 4.0;
        double r54451 = x;
        double r54452 = i;
        double r54453 = r54451 * r54452;
        double r54454 = a;
        double r54455 = t;
        double r54456 = r54454 * r54455;
        double r54457 = r54453 + r54456;
        double r54458 = r54450 * r54457;
        double r54459 = r54449 - r54458;
        double r54460 = 18.0;
        double r54461 = r54460 * r54451;
        double r54462 = y;
        double r54463 = r54461 * r54462;
        double r54464 = r54455 * r54463;
        double r54465 = r54464 * r54444;
        double r54466 = 27.0;
        double r54467 = k;
        double r54468 = j;
        double r54469 = r54467 * r54468;
        double r54470 = r54466 * r54469;
        double r54471 = r54465 - r54470;
        double r54472 = r54459 + r54471;
        double r54473 = 1.620828576697051e-140;
        bool r54474 = r54444 <= r54473;
        double r54475 = r54462 * r54444;
        double r54476 = r54461 * r54475;
        double r54477 = r54455 * r54476;
        double r54478 = cbrt(r54477);
        double r54479 = r54478 * r54478;
        double r54480 = r54479 * r54478;
        double r54481 = r54480 - r54470;
        double r54482 = r54459 + r54481;
        double r54483 = r54455 * r54451;
        double r54484 = r54462 * r54483;
        double r54485 = r54444 * r54484;
        double r54486 = r54460 * r54485;
        double r54487 = r54486 - r54470;
        double r54488 = r54459 + r54487;
        double r54489 = r54474 ? r54482 : r54488;
        double r54490 = r54446 ? r54472 : r54489;
        return r54490;
}

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 r54491, r54492, r54493, r54494, r54495, r54496, r54497, r54498, r54499, r54500, r54501, r54502, r54503, r54504, r54505, r54506, r54507, r54508, r54509, r54510, r54511, r54512, r54513, r54514, r54515, r54516, r54517, r54518;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54491);
        mpfr_init_set_str(r54492, "18.0", 10, MPFR_RNDN);
        mpfr_init(r54493);
        mpfr_init(r54494);
        mpfr_init(r54495);
        mpfr_init(r54496);
        mpfr_init(r54497);
        mpfr_init(r54498);
        mpfr_init(r54499);
        mpfr_init(r54500);
        mpfr_init_set_str(r54501, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54502);
        mpfr_init(r54503);
        mpfr_init(r54504);
        mpfr_init(r54505);
        mpfr_init(r54506);
        mpfr_init(r54507);
        mpfr_init(r54508);
        mpfr_init(r54509);
        mpfr_init(r54510);
        mpfr_init(r54511);
        mpfr_init(r54512);
        mpfr_init(r54513);
        mpfr_init_set_str(r54514, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54515);
        mpfr_init(r54516);
        mpfr_init(r54517);
        mpfr_init(r54518);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        mpfr_set_d(r54491, x, MPFR_RNDN);
        ;
        mpfr_mul(r54493, r54491, r54492, MPFR_RNDN);
        mpfr_set_d(r54494, y, MPFR_RNDN);
        mpfr_mul(r54495, r54493, r54494, MPFR_RNDN);
        mpfr_set_d(r54496, z, MPFR_RNDN);
        mpfr_mul(r54497, r54495, r54496, MPFR_RNDN);
        mpfr_set_d(r54498, t, MPFR_RNDN);
        mpfr_mul(r54499, r54497, r54498, MPFR_RNDN);
        mpfr_set_d(r54500, a, MPFR_RNDN);
        ;
        mpfr_mul(r54502, r54500, r54501, MPFR_RNDN);
        mpfr_mul(r54503, r54502, r54498, MPFR_RNDN);
        mpfr_sub(r54504, r54499, r54503, MPFR_RNDN);
        mpfr_set_d(r54505, b, MPFR_RNDN);
        mpfr_set_d(r54506, c, MPFR_RNDN);
        mpfr_mul(r54507, r54505, r54506, MPFR_RNDN);
        mpfr_add(r54508, r54504, r54507, MPFR_RNDN);
        mpfr_mul(r54509, r54491, r54501, MPFR_RNDN);
        mpfr_set_d(r54510, i, MPFR_RNDN);
        mpfr_mul(r54511, r54509, r54510, MPFR_RNDN);
        mpfr_sub(r54512, r54508, r54511, MPFR_RNDN);
        mpfr_set_d(r54513, j, MPFR_RNDN);
        ;
        mpfr_mul(r54515, r54513, r54514, MPFR_RNDN);
        mpfr_set_d(r54516, k, MPFR_RNDN);
        mpfr_mul(r54517, r54515, r54516, MPFR_RNDN);
        mpfr_sub(r54518, r54512, r54517, MPFR_RNDN);
        return mpfr_get_d(r54518, MPFR_RNDN);
}

static mpfr_t r54519, r54520, r54521, r54522, r54523, r54524, r54525, r54526, r54527, r54528, r54529, r54530, r54531, r54532, r54533, r54534, r54535, r54536, r54537, r54538, r54539, r54540, r54541, r54542, r54543, r54544, r54545, r54546, r54547, r54548, r54549, r54550, r54551, r54552, r54553, r54554, r54555, r54556, r54557, r54558, r54559, r54560, r54561, r54562, r54563, r54564, r54565;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54519);
        mpfr_init_set_str(r54520, "-5.38122143438205e-09", 10, MPFR_RNDN);
        mpfr_init(r54521);
        mpfr_init(r54522);
        mpfr_init(r54523);
        mpfr_init(r54524);
        mpfr_init_set_str(r54525, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54526);
        mpfr_init(r54527);
        mpfr_init(r54528);
        mpfr_init(r54529);
        mpfr_init(r54530);
        mpfr_init(r54531);
        mpfr_init(r54532);
        mpfr_init(r54533);
        mpfr_init(r54534);
        mpfr_init_set_str(r54535, "18.0", 10, MPFR_RNDN);
        mpfr_init(r54536);
        mpfr_init(r54537);
        mpfr_init(r54538);
        mpfr_init(r54539);
        mpfr_init(r54540);
        mpfr_init_set_str(r54541, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54542);
        mpfr_init(r54543);
        mpfr_init(r54544);
        mpfr_init(r54545);
        mpfr_init(r54546);
        mpfr_init(r54547);
        mpfr_init_set_str(r54548, "1.620828576697051e-140", 10, MPFR_RNDN);
        mpfr_init(r54549);
        mpfr_init(r54550);
        mpfr_init(r54551);
        mpfr_init(r54552);
        mpfr_init(r54553);
        mpfr_init(r54554);
        mpfr_init(r54555);
        mpfr_init(r54556);
        mpfr_init(r54557);
        mpfr_init(r54558);
        mpfr_init(r54559);
        mpfr_init(r54560);
        mpfr_init(r54561);
        mpfr_init(r54562);
        mpfr_init(r54563);
        mpfr_init(r54564);
        mpfr_init(r54565);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        mpfr_set_d(r54519, z, MPFR_RNDN);
        ;
        mpfr_set_si(r54521, mpfr_cmp(r54519, r54520) <= 0, MPFR_RNDN);
        mpfr_set_d(r54522, b, MPFR_RNDN);
        mpfr_set_d(r54523, c, MPFR_RNDN);
        mpfr_mul(r54524, r54522, r54523, MPFR_RNDN);
        ;
        mpfr_set_d(r54526, x, MPFR_RNDN);
        mpfr_set_d(r54527, i, MPFR_RNDN);
        mpfr_mul(r54528, r54526, r54527, MPFR_RNDN);
        mpfr_set_d(r54529, a, MPFR_RNDN);
        mpfr_set_d(r54530, t, MPFR_RNDN);
        mpfr_mul(r54531, r54529, r54530, MPFR_RNDN);
        mpfr_add(r54532, r54528, r54531, MPFR_RNDN);
        mpfr_mul(r54533, r54525, r54532, MPFR_RNDN);
        mpfr_sub(r54534, r54524, r54533, MPFR_RNDN);
        ;
        mpfr_mul(r54536, r54535, r54526, MPFR_RNDN);
        mpfr_set_d(r54537, y, MPFR_RNDN);
        mpfr_mul(r54538, r54536, r54537, MPFR_RNDN);
        mpfr_mul(r54539, r54530, r54538, MPFR_RNDN);
        mpfr_mul(r54540, r54539, r54519, MPFR_RNDN);
        ;
        mpfr_set_d(r54542, k, MPFR_RNDN);
        mpfr_set_d(r54543, j, MPFR_RNDN);
        mpfr_mul(r54544, r54542, r54543, MPFR_RNDN);
        mpfr_mul(r54545, r54541, r54544, MPFR_RNDN);
        mpfr_sub(r54546, r54540, r54545, MPFR_RNDN);
        mpfr_add(r54547, r54534, r54546, MPFR_RNDN);
        ;
        mpfr_set_si(r54549, mpfr_cmp(r54519, r54548) <= 0, MPFR_RNDN);
        mpfr_mul(r54550, r54537, r54519, MPFR_RNDN);
        mpfr_mul(r54551, r54536, r54550, MPFR_RNDN);
        mpfr_mul(r54552, r54530, r54551, MPFR_RNDN);
        mpfr_cbrt(r54553, r54552, MPFR_RNDN);
        mpfr_mul(r54554, r54553, r54553, MPFR_RNDN);
        mpfr_mul(r54555, r54554, r54553, MPFR_RNDN);
        mpfr_sub(r54556, r54555, r54545, MPFR_RNDN);
        mpfr_add(r54557, r54534, r54556, MPFR_RNDN);
        mpfr_mul(r54558, r54530, r54526, MPFR_RNDN);
        mpfr_mul(r54559, r54537, r54558, MPFR_RNDN);
        mpfr_mul(r54560, r54519, r54559, MPFR_RNDN);
        mpfr_mul(r54561, r54535, r54560, MPFR_RNDN);
        mpfr_sub(r54562, r54561, r54545, MPFR_RNDN);
        mpfr_add(r54563, r54534, r54562, MPFR_RNDN);
        if (mpfr_get_si(r54549, MPFR_RNDN)) { mpfr_set(r54564, r54557, MPFR_RNDN); } else { mpfr_set(r54564, r54563, MPFR_RNDN); };
        if (mpfr_get_si(r54521, MPFR_RNDN)) { mpfr_set(r54565, r54547, MPFR_RNDN); } else { mpfr_set(r54565, r54564, MPFR_RNDN); };
        return mpfr_get_d(r54565, MPFR_RNDN);
}

static mpfr_t r54566, r54567, r54568, r54569, r54570, r54571, r54572, r54573, r54574, r54575, r54576, r54577, r54578, r54579, r54580, r54581, r54582, r54583, r54584, r54585, r54586, r54587, r54588, r54589, r54590, r54591, r54592, r54593, r54594, r54595, r54596, r54597, r54598, r54599, r54600, r54601, r54602, r54603, r54604, r54605, r54606, r54607, r54608, r54609, r54610, r54611, r54612;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54566);
        mpfr_init_set_str(r54567, "-5.38122143438205e-09", 10, MPFR_RNDN);
        mpfr_init(r54568);
        mpfr_init(r54569);
        mpfr_init(r54570);
        mpfr_init(r54571);
        mpfr_init_set_str(r54572, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54573);
        mpfr_init(r54574);
        mpfr_init(r54575);
        mpfr_init(r54576);
        mpfr_init(r54577);
        mpfr_init(r54578);
        mpfr_init(r54579);
        mpfr_init(r54580);
        mpfr_init(r54581);
        mpfr_init_set_str(r54582, "18.0", 10, MPFR_RNDN);
        mpfr_init(r54583);
        mpfr_init(r54584);
        mpfr_init(r54585);
        mpfr_init(r54586);
        mpfr_init(r54587);
        mpfr_init_set_str(r54588, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54589);
        mpfr_init(r54590);
        mpfr_init(r54591);
        mpfr_init(r54592);
        mpfr_init(r54593);
        mpfr_init(r54594);
        mpfr_init_set_str(r54595, "1.620828576697051e-140", 10, MPFR_RNDN);
        mpfr_init(r54596);
        mpfr_init(r54597);
        mpfr_init(r54598);
        mpfr_init(r54599);
        mpfr_init(r54600);
        mpfr_init(r54601);
        mpfr_init(r54602);
        mpfr_init(r54603);
        mpfr_init(r54604);
        mpfr_init(r54605);
        mpfr_init(r54606);
        mpfr_init(r54607);
        mpfr_init(r54608);
        mpfr_init(r54609);
        mpfr_init(r54610);
        mpfr_init(r54611);
        mpfr_init(r54612);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        mpfr_set_d(r54566, z, MPFR_RNDN);
        ;
        mpfr_set_si(r54568, mpfr_cmp(r54566, r54567) <= 0, MPFR_RNDN);
        mpfr_set_d(r54569, b, MPFR_RNDN);
        mpfr_set_d(r54570, c, MPFR_RNDN);
        mpfr_mul(r54571, r54569, r54570, MPFR_RNDN);
        ;
        mpfr_set_d(r54573, x, MPFR_RNDN);
        mpfr_set_d(r54574, i, MPFR_RNDN);
        mpfr_mul(r54575, r54573, r54574, MPFR_RNDN);
        mpfr_set_d(r54576, a, MPFR_RNDN);
        mpfr_set_d(r54577, t, MPFR_RNDN);
        mpfr_mul(r54578, r54576, r54577, MPFR_RNDN);
        mpfr_add(r54579, r54575, r54578, MPFR_RNDN);
        mpfr_mul(r54580, r54572, r54579, MPFR_RNDN);
        mpfr_sub(r54581, r54571, r54580, MPFR_RNDN);
        ;
        mpfr_mul(r54583, r54582, r54573, MPFR_RNDN);
        mpfr_set_d(r54584, y, MPFR_RNDN);
        mpfr_mul(r54585, r54583, r54584, MPFR_RNDN);
        mpfr_mul(r54586, r54577, r54585, MPFR_RNDN);
        mpfr_mul(r54587, r54586, r54566, MPFR_RNDN);
        ;
        mpfr_set_d(r54589, k, MPFR_RNDN);
        mpfr_set_d(r54590, j, MPFR_RNDN);
        mpfr_mul(r54591, r54589, r54590, MPFR_RNDN);
        mpfr_mul(r54592, r54588, r54591, MPFR_RNDN);
        mpfr_sub(r54593, r54587, r54592, MPFR_RNDN);
        mpfr_add(r54594, r54581, r54593, MPFR_RNDN);
        ;
        mpfr_set_si(r54596, mpfr_cmp(r54566, r54595) <= 0, MPFR_RNDN);
        mpfr_mul(r54597, r54584, r54566, MPFR_RNDN);
        mpfr_mul(r54598, r54583, r54597, MPFR_RNDN);
        mpfr_mul(r54599, r54577, r54598, MPFR_RNDN);
        mpfr_cbrt(r54600, r54599, MPFR_RNDN);
        mpfr_mul(r54601, r54600, r54600, MPFR_RNDN);
        mpfr_mul(r54602, r54601, r54600, MPFR_RNDN);
        mpfr_sub(r54603, r54602, r54592, MPFR_RNDN);
        mpfr_add(r54604, r54581, r54603, MPFR_RNDN);
        mpfr_mul(r54605, r54577, r54573, MPFR_RNDN);
        mpfr_mul(r54606, r54584, r54605, MPFR_RNDN);
        mpfr_mul(r54607, r54566, r54606, MPFR_RNDN);
        mpfr_mul(r54608, r54582, r54607, MPFR_RNDN);
        mpfr_sub(r54609, r54608, r54592, MPFR_RNDN);
        mpfr_add(r54610, r54581, r54609, MPFR_RNDN);
        if (mpfr_get_si(r54596, MPFR_RNDN)) { mpfr_set(r54611, r54604, MPFR_RNDN); } else { mpfr_set(r54611, r54610, MPFR_RNDN); };
        if (mpfr_get_si(r54568, MPFR_RNDN)) { mpfr_set(r54612, r54594, MPFR_RNDN); } else { mpfr_set(r54612, r54611, MPFR_RNDN); };
        return mpfr_get_d(r54612, MPFR_RNDN);
}

