#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 r54361 = x;
        float r54362 = 18.0;
        float r54363 = r54361 * r54362;
        float r54364 = y;
        float r54365 = r54363 * r54364;
        float r54366 = z;
        float r54367 = r54365 * r54366;
        float r54368 = t;
        float r54369 = r54367 * r54368;
        float r54370 = a;
        float r54371 = 4.0;
        float r54372 = r54370 * r54371;
        float r54373 = r54372 * r54368;
        float r54374 = r54369 - r54373;
        float r54375 = b;
        float r54376 = c;
        float r54377 = r54375 * r54376;
        float r54378 = r54374 + r54377;
        float r54379 = r54361 * r54371;
        float r54380 = i;
        float r54381 = r54379 * r54380;
        float r54382 = r54378 - r54381;
        float r54383 = j;
        float r54384 = 27.0;
        float r54385 = r54383 * r54384;
        float r54386 = k;
        float r54387 = r54385 * r54386;
        float r54388 = r54382 - r54387;
        return r54388;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r54389 = x;
        double r54390 = 18.0;
        double r54391 = r54389 * r54390;
        double r54392 = y;
        double r54393 = r54391 * r54392;
        double r54394 = z;
        double r54395 = r54393 * r54394;
        double r54396 = t;
        double r54397 = r54395 * r54396;
        double r54398 = a;
        double r54399 = 4.0;
        double r54400 = r54398 * r54399;
        double r54401 = r54400 * r54396;
        double r54402 = r54397 - r54401;
        double r54403 = b;
        double r54404 = c;
        double r54405 = r54403 * r54404;
        double r54406 = r54402 + r54405;
        double r54407 = r54389 * r54399;
        double r54408 = i;
        double r54409 = r54407 * r54408;
        double r54410 = r54406 - r54409;
        double r54411 = j;
        double r54412 = 27.0;
        double r54413 = r54411 * r54412;
        double r54414 = k;
        double r54415 = r54413 * r54414;
        double r54416 = r54410 - r54415;
        return r54416;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r54417 = z;
        float r54418 = -3.050748612494024e-80;
        bool r54419 = r54417 <= r54418;
        float r54420 = b;
        float r54421 = c;
        float r54422 = r54420 * r54421;
        float r54423 = 4.0;
        float r54424 = x;
        float r54425 = i;
        float r54426 = r54424 * r54425;
        float r54427 = a;
        float r54428 = t;
        float r54429 = r54427 * r54428;
        float r54430 = r54426 + r54429;
        float r54431 = r54423 * r54430;
        float r54432 = r54422 - r54431;
        float r54433 = 18.0;
        float r54434 = y;
        float r54435 = r54428 * r54424;
        float r54436 = r54434 * r54435;
        float r54437 = r54417 * r54436;
        float r54438 = r54433 * r54437;
        float r54439 = 27.0;
        float r54440 = k;
        float r54441 = j;
        float r54442 = r54440 * r54441;
        float r54443 = r54439 * r54442;
        float r54444 = r54438 - r54443;
        float r54445 = r54432 + r54444;
        float r54446 = 1.5124306376275835e-234;
        bool r54447 = r54417 <= r54446;
        float r54448 = r54421 * r54420;
        float r54449 = r54439 * r54441;
        float r54450 = r54449 * r54440;
        float r54451 = r54448 - r54450;
        float r54452 = r54428 * r54427;
        float r54453 = r54425 * r54424;
        float r54454 = r54452 + r54453;
        float r54455 = r54454 * r54423;
        float r54456 = r54451 - r54455;
        float r54457 = r54447 ? r54456 : r54445;
        float r54458 = r54419 ? r54445 : r54457;
        return r54458;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r54459 = z;
        double r54460 = -3.050748612494024e-80;
        bool r54461 = r54459 <= r54460;
        double r54462 = b;
        double r54463 = c;
        double r54464 = r54462 * r54463;
        double r54465 = 4.0;
        double r54466 = x;
        double r54467 = i;
        double r54468 = r54466 * r54467;
        double r54469 = a;
        double r54470 = t;
        double r54471 = r54469 * r54470;
        double r54472 = r54468 + r54471;
        double r54473 = r54465 * r54472;
        double r54474 = r54464 - r54473;
        double r54475 = 18.0;
        double r54476 = y;
        double r54477 = r54470 * r54466;
        double r54478 = r54476 * r54477;
        double r54479 = r54459 * r54478;
        double r54480 = r54475 * r54479;
        double r54481 = 27.0;
        double r54482 = k;
        double r54483 = j;
        double r54484 = r54482 * r54483;
        double r54485 = r54481 * r54484;
        double r54486 = r54480 - r54485;
        double r54487 = r54474 + r54486;
        double r54488 = 1.5124306376275835e-234;
        bool r54489 = r54459 <= r54488;
        double r54490 = r54463 * r54462;
        double r54491 = r54481 * r54483;
        double r54492 = r54491 * r54482;
        double r54493 = r54490 - r54492;
        double r54494 = r54470 * r54469;
        double r54495 = r54467 * r54466;
        double r54496 = r54494 + r54495;
        double r54497 = r54496 * r54465;
        double r54498 = r54493 - r54497;
        double r54499 = r54489 ? r54498 : r54487;
        double r54500 = r54461 ? r54487 : r54499;
        return r54500;
}

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 r54501, r54502, r54503, r54504, r54505, r54506, r54507, r54508, r54509, r54510, r54511, r54512, r54513, r54514, r54515, r54516, r54517, r54518, r54519, r54520, r54521, r54522, r54523, r54524, r54525, r54526, r54527, r54528;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54501);
        mpfr_init_set_str(r54502, "18.0", 10, MPFR_RNDN);
        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_set_str(r54511, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54512);
        mpfr_init(r54513);
        mpfr_init(r54514);
        mpfr_init(r54515);
        mpfr_init(r54516);
        mpfr_init(r54517);
        mpfr_init(r54518);
        mpfr_init(r54519);
        mpfr_init(r54520);
        mpfr_init(r54521);
        mpfr_init(r54522);
        mpfr_init(r54523);
        mpfr_init_set_str(r54524, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54525);
        mpfr_init(r54526);
        mpfr_init(r54527);
        mpfr_init(r54528);
}

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(r54501, x, MPFR_RNDN);
        ;
        mpfr_mul(r54503, r54501, r54502, MPFR_RNDN);
        mpfr_set_d(r54504, y, MPFR_RNDN);
        mpfr_mul(r54505, r54503, r54504, MPFR_RNDN);
        mpfr_set_d(r54506, z, MPFR_RNDN);
        mpfr_mul(r54507, r54505, r54506, MPFR_RNDN);
        mpfr_set_d(r54508, t, MPFR_RNDN);
        mpfr_mul(r54509, r54507, r54508, MPFR_RNDN);
        mpfr_set_d(r54510, a, MPFR_RNDN);
        ;
        mpfr_mul(r54512, r54510, r54511, MPFR_RNDN);
        mpfr_mul(r54513, r54512, r54508, MPFR_RNDN);
        mpfr_sub(r54514, r54509, r54513, MPFR_RNDN);
        mpfr_set_d(r54515, b, MPFR_RNDN);
        mpfr_set_d(r54516, c, MPFR_RNDN);
        mpfr_mul(r54517, r54515, r54516, MPFR_RNDN);
        mpfr_add(r54518, r54514, r54517, MPFR_RNDN);
        mpfr_mul(r54519, r54501, r54511, MPFR_RNDN);
        mpfr_set_d(r54520, i, MPFR_RNDN);
        mpfr_mul(r54521, r54519, r54520, MPFR_RNDN);
        mpfr_sub(r54522, r54518, r54521, MPFR_RNDN);
        mpfr_set_d(r54523, j, MPFR_RNDN);
        ;
        mpfr_mul(r54525, r54523, r54524, MPFR_RNDN);
        mpfr_set_d(r54526, k, MPFR_RNDN);
        mpfr_mul(r54527, r54525, r54526, MPFR_RNDN);
        mpfr_sub(r54528, r54522, r54527, MPFR_RNDN);
        return mpfr_get_d(r54528, MPFR_RNDN);
}

static mpfr_t 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, r54566, r54567, r54568, r54569, r54570;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54529);
        mpfr_init_set_str(r54530, "-3.050748612494024e-80", 10, MPFR_RNDN);
        mpfr_init(r54531);
        mpfr_init(r54532);
        mpfr_init(r54533);
        mpfr_init(r54534);
        mpfr_init_set_str(r54535, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54536);
        mpfr_init(r54537);
        mpfr_init(r54538);
        mpfr_init(r54539);
        mpfr_init(r54540);
        mpfr_init(r54541);
        mpfr_init(r54542);
        mpfr_init(r54543);
        mpfr_init(r54544);
        mpfr_init_set_str(r54545, "18.0", 10, MPFR_RNDN);
        mpfr_init(r54546);
        mpfr_init(r54547);
        mpfr_init(r54548);
        mpfr_init(r54549);
        mpfr_init(r54550);
        mpfr_init_set_str(r54551, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54552);
        mpfr_init(r54553);
        mpfr_init(r54554);
        mpfr_init(r54555);
        mpfr_init(r54556);
        mpfr_init(r54557);
        mpfr_init_set_str(r54558, "1.5124306376275835e-234", 10, MPFR_RNDN);
        mpfr_init(r54559);
        mpfr_init(r54560);
        mpfr_init(r54561);
        mpfr_init(r54562);
        mpfr_init(r54563);
        mpfr_init(r54564);
        mpfr_init(r54565);
        mpfr_init(r54566);
        mpfr_init(r54567);
        mpfr_init(r54568);
        mpfr_init(r54569);
        mpfr_init(r54570);
}

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(r54529, z, MPFR_RNDN);
        ;
        mpfr_set_si(r54531, mpfr_cmp(r54529, r54530) <= 0, MPFR_RNDN);
        mpfr_set_d(r54532, b, MPFR_RNDN);
        mpfr_set_d(r54533, c, MPFR_RNDN);
        mpfr_mul(r54534, r54532, r54533, MPFR_RNDN);
        ;
        mpfr_set_d(r54536, x, MPFR_RNDN);
        mpfr_set_d(r54537, i, MPFR_RNDN);
        mpfr_mul(r54538, r54536, r54537, MPFR_RNDN);
        mpfr_set_d(r54539, a, MPFR_RNDN);
        mpfr_set_d(r54540, t, MPFR_RNDN);
        mpfr_mul(r54541, r54539, r54540, MPFR_RNDN);
        mpfr_add(r54542, r54538, r54541, MPFR_RNDN);
        mpfr_mul(r54543, r54535, r54542, MPFR_RNDN);
        mpfr_sub(r54544, r54534, r54543, MPFR_RNDN);
        ;
        mpfr_set_d(r54546, y, MPFR_RNDN);
        mpfr_mul(r54547, r54540, r54536, MPFR_RNDN);
        mpfr_mul(r54548, r54546, r54547, MPFR_RNDN);
        mpfr_mul(r54549, r54529, r54548, MPFR_RNDN);
        mpfr_mul(r54550, r54545, r54549, MPFR_RNDN);
        ;
        mpfr_set_d(r54552, k, MPFR_RNDN);
        mpfr_set_d(r54553, j, MPFR_RNDN);
        mpfr_mul(r54554, r54552, r54553, MPFR_RNDN);
        mpfr_mul(r54555, r54551, r54554, MPFR_RNDN);
        mpfr_sub(r54556, r54550, r54555, MPFR_RNDN);
        mpfr_add(r54557, r54544, r54556, MPFR_RNDN);
        ;
        mpfr_set_si(r54559, mpfr_cmp(r54529, r54558) <= 0, MPFR_RNDN);
        mpfr_mul(r54560, r54533, r54532, MPFR_RNDN);
        mpfr_mul(r54561, r54551, r54553, MPFR_RNDN);
        mpfr_mul(r54562, r54561, r54552, MPFR_RNDN);
        mpfr_sub(r54563, r54560, r54562, MPFR_RNDN);
        mpfr_mul(r54564, r54540, r54539, MPFR_RNDN);
        mpfr_mul(r54565, r54537, r54536, MPFR_RNDN);
        mpfr_add(r54566, r54564, r54565, MPFR_RNDN);
        mpfr_mul(r54567, r54566, r54535, MPFR_RNDN);
        mpfr_sub(r54568, r54563, r54567, MPFR_RNDN);
        if (mpfr_get_si(r54559, MPFR_RNDN)) { mpfr_set(r54569, r54568, MPFR_RNDN); } else { mpfr_set(r54569, r54557, MPFR_RNDN); };
        if (mpfr_get_si(r54531, MPFR_RNDN)) { mpfr_set(r54570, r54557, MPFR_RNDN); } else { mpfr_set(r54570, r54569, MPFR_RNDN); };
        return mpfr_get_d(r54570, MPFR_RNDN);
}

static mpfr_t 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(r54571);
        mpfr_init_set_str(r54572, "-3.050748612494024e-80", 10, MPFR_RNDN);
        mpfr_init(r54573);
        mpfr_init(r54574);
        mpfr_init(r54575);
        mpfr_init(r54576);
        mpfr_init_set_str(r54577, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54578);
        mpfr_init(r54579);
        mpfr_init(r54580);
        mpfr_init(r54581);
        mpfr_init(r54582);
        mpfr_init(r54583);
        mpfr_init(r54584);
        mpfr_init(r54585);
        mpfr_init(r54586);
        mpfr_init_set_str(r54587, "18.0", 10, MPFR_RNDN);
        mpfr_init(r54588);
        mpfr_init(r54589);
        mpfr_init(r54590);
        mpfr_init(r54591);
        mpfr_init(r54592);
        mpfr_init_set_str(r54593, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54594);
        mpfr_init(r54595);
        mpfr_init(r54596);
        mpfr_init(r54597);
        mpfr_init(r54598);
        mpfr_init(r54599);
        mpfr_init_set_str(r54600, "1.5124306376275835e-234", 10, MPFR_RNDN);
        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(r54571, z, MPFR_RNDN);
        ;
        mpfr_set_si(r54573, mpfr_cmp(r54571, r54572) <= 0, MPFR_RNDN);
        mpfr_set_d(r54574, b, MPFR_RNDN);
        mpfr_set_d(r54575, c, MPFR_RNDN);
        mpfr_mul(r54576, r54574, r54575, MPFR_RNDN);
        ;
        mpfr_set_d(r54578, x, MPFR_RNDN);
        mpfr_set_d(r54579, i, MPFR_RNDN);
        mpfr_mul(r54580, r54578, r54579, MPFR_RNDN);
        mpfr_set_d(r54581, a, MPFR_RNDN);
        mpfr_set_d(r54582, t, MPFR_RNDN);
        mpfr_mul(r54583, r54581, r54582, MPFR_RNDN);
        mpfr_add(r54584, r54580, r54583, MPFR_RNDN);
        mpfr_mul(r54585, r54577, r54584, MPFR_RNDN);
        mpfr_sub(r54586, r54576, r54585, MPFR_RNDN);
        ;
        mpfr_set_d(r54588, y, MPFR_RNDN);
        mpfr_mul(r54589, r54582, r54578, MPFR_RNDN);
        mpfr_mul(r54590, r54588, r54589, MPFR_RNDN);
        mpfr_mul(r54591, r54571, r54590, MPFR_RNDN);
        mpfr_mul(r54592, r54587, r54591, MPFR_RNDN);
        ;
        mpfr_set_d(r54594, k, MPFR_RNDN);
        mpfr_set_d(r54595, j, MPFR_RNDN);
        mpfr_mul(r54596, r54594, r54595, MPFR_RNDN);
        mpfr_mul(r54597, r54593, r54596, MPFR_RNDN);
        mpfr_sub(r54598, r54592, r54597, MPFR_RNDN);
        mpfr_add(r54599, r54586, r54598, MPFR_RNDN);
        ;
        mpfr_set_si(r54601, mpfr_cmp(r54571, r54600) <= 0, MPFR_RNDN);
        mpfr_mul(r54602, r54575, r54574, MPFR_RNDN);
        mpfr_mul(r54603, r54593, r54595, MPFR_RNDN);
        mpfr_mul(r54604, r54603, r54594, MPFR_RNDN);
        mpfr_sub(r54605, r54602, r54604, MPFR_RNDN);
        mpfr_mul(r54606, r54582, r54581, MPFR_RNDN);
        mpfr_mul(r54607, r54579, r54578, MPFR_RNDN);
        mpfr_add(r54608, r54606, r54607, MPFR_RNDN);
        mpfr_mul(r54609, r54608, r54577, MPFR_RNDN);
        mpfr_sub(r54610, r54605, r54609, MPFR_RNDN);
        if (mpfr_get_si(r54601, MPFR_RNDN)) { mpfr_set(r54611, r54610, MPFR_RNDN); } else { mpfr_set(r54611, r54599, MPFR_RNDN); };
        if (mpfr_get_si(r54573, MPFR_RNDN)) { mpfr_set(r54612, r54599, MPFR_RNDN); } else { mpfr_set(r54612, r54611, MPFR_RNDN); };
        return mpfr_get_d(r54612, MPFR_RNDN);
}

