#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";

double f_if(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r27275 = x;
        float r27276 = 18.0;
        float r27277 = r27275 * r27276;
        float r27278 = y;
        float r27279 = r27277 * r27278;
        float r27280 = z;
        float r27281 = r27279 * r27280;
        float r27282 = t;
        float r27283 = r27281 * r27282;
        float r27284 = a;
        float r27285 = 4.0;
        float r27286 = r27284 * r27285;
        float r27287 = r27286 * r27282;
        float r27288 = r27283 - r27287;
        float r27289 = b;
        float r27290 = c;
        float r27291 = r27289 * r27290;
        float r27292 = r27288 + r27291;
        float r27293 = r27275 * r27285;
        float r27294 = i;
        float r27295 = r27293 * r27294;
        float r27296 = r27292 - r27295;
        float r27297 = j;
        float r27298 = 27.0;
        float r27299 = r27297 * r27298;
        float r27300 = k;
        float r27301 = r27299 * r27300;
        float r27302 = r27296 - r27301;
        return r27302;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r27303 = x;
        double r27304 = 18.0;
        double r27305 = r27303 * r27304;
        double r27306 = y;
        double r27307 = r27305 * r27306;
        double r27308 = z;
        double r27309 = r27307 * r27308;
        double r27310 = t;
        double r27311 = r27309 * r27310;
        double r27312 = a;
        double r27313 = 4.0;
        double r27314 = r27312 * r27313;
        double r27315 = r27314 * r27310;
        double r27316 = r27311 - r27315;
        double r27317 = b;
        double r27318 = c;
        double r27319 = r27317 * r27318;
        double r27320 = r27316 + r27319;
        double r27321 = r27303 * r27313;
        double r27322 = i;
        double r27323 = r27321 * r27322;
        double r27324 = r27320 - r27323;
        double r27325 = j;
        double r27326 = 27.0;
        double r27327 = r27325 * r27326;
        double r27328 = k;
        double r27329 = r27327 * r27328;
        double r27330 = r27324 - r27329;
        return r27330;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r27331 = x;
        float r27332 = y;
        float r27333 = 18.0;
        float r27334 = r27332 * r27333;
        float r27335 = r27331 * r27334;
        float r27336 = t;
        float r27337 = r27335 * r27336;
        float r27338 = z;
        float r27339 = a;
        float r27340 = -r27339;
        float r27341 = 4.0;
        float r27342 = r27336 * r27341;
        float r27343 = c;
        float r27344 = b;
        float r27345 = r27343 * r27344;
        float r27346 = fma(r27340, r27342, r27345);
        float r27347 = fma(r27337, r27338, r27346);
        float r27348 = i;
        float r27349 = r27341 * r27331;
        float r27350 = 27.0;
        float r27351 = k;
        float r27352 = r27350 * r27351;
        float r27353 = j;
        float r27354 = r27352 * r27353;
        float r27355 = fma(r27348, r27349, r27354);
        float r27356 = r27347 - r27355;
        float r27357 = -6.166804222831407e+305;
        bool r27358 = r27356 <= r27357;
        float r27359 = r27333 * r27331;
        float r27360 = r27338 * r27336;
        float r27361 = r27359 * r27360;
        float r27362 = fma(r27342, r27340, r27345);
        float r27363 = fma(r27332, r27361, r27362);
        float r27364 = r27353 * r27350;
        float r27365 = r27348 * r27331;
        float r27366 = r27341 * r27365;
        float r27367 = fma(r27364, r27351, r27366);
        float r27368 = r27363 - r27367;
        float r27369 = 1.545079988070211e+295;
        bool r27370 = r27356 <= r27369;
        float r27371 = r27336 * r27334;
        float r27372 = r27338 * r27331;
        float r27373 = fma(r27371, r27372, r27362);
        float r27374 = r27373 - r27367;
        float r27375 = r27370 ? r27356 : r27374;
        float r27376 = r27358 ? r27368 : r27375;
        return r27376;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r27377 = x;
        double r27378 = y;
        double r27379 = 18.0;
        double r27380 = r27378 * r27379;
        double r27381 = r27377 * r27380;
        double r27382 = t;
        double r27383 = r27381 * r27382;
        double r27384 = z;
        double r27385 = a;
        double r27386 = -r27385;
        double r27387 = 4.0;
        double r27388 = r27382 * r27387;
        double r27389 = c;
        double r27390 = b;
        double r27391 = r27389 * r27390;
        double r27392 = fma(r27386, r27388, r27391);
        double r27393 = fma(r27383, r27384, r27392);
        double r27394 = i;
        double r27395 = r27387 * r27377;
        double r27396 = 27.0;
        double r27397 = k;
        double r27398 = r27396 * r27397;
        double r27399 = j;
        double r27400 = r27398 * r27399;
        double r27401 = fma(r27394, r27395, r27400);
        double r27402 = r27393 - r27401;
        double r27403 = -6.166804222831407e+305;
        bool r27404 = r27402 <= r27403;
        double r27405 = r27379 * r27377;
        double r27406 = r27384 * r27382;
        double r27407 = r27405 * r27406;
        double r27408 = fma(r27388, r27386, r27391);
        double r27409 = fma(r27378, r27407, r27408);
        double r27410 = r27399 * r27396;
        double r27411 = r27394 * r27377;
        double r27412 = r27387 * r27411;
        double r27413 = fma(r27410, r27397, r27412);
        double r27414 = r27409 - r27413;
        double r27415 = 1.545079988070211e+295;
        bool r27416 = r27402 <= r27415;
        double r27417 = r27382 * r27380;
        double r27418 = r27384 * r27377;
        double r27419 = fma(r27417, r27418, r27408);
        double r27420 = r27419 - r27413;
        double r27421 = r27416 ? r27402 : r27420;
        double r27422 = r27404 ? r27414 : r27421;
        return r27422;
}

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 r27423, r27424, r27425, r27426, r27427, r27428, r27429, r27430, r27431, r27432, r27433, r27434, r27435, r27436, r27437, r27438, r27439, r27440, r27441, r27442, r27443, r27444, r27445, r27446, r27447, r27448, r27449, r27450;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r27423);
        mpfr_init_set_str(r27424, "18.0", 10, MPFR_RNDN);
        mpfr_init(r27425);
        mpfr_init(r27426);
        mpfr_init(r27427);
        mpfr_init(r27428);
        mpfr_init(r27429);
        mpfr_init(r27430);
        mpfr_init(r27431);
        mpfr_init(r27432);
        mpfr_init_set_str(r27433, "4.0", 10, MPFR_RNDN);
        mpfr_init(r27434);
        mpfr_init(r27435);
        mpfr_init(r27436);
        mpfr_init(r27437);
        mpfr_init(r27438);
        mpfr_init(r27439);
        mpfr_init(r27440);
        mpfr_init(r27441);
        mpfr_init(r27442);
        mpfr_init(r27443);
        mpfr_init(r27444);
        mpfr_init(r27445);
        mpfr_init_set_str(r27446, "27.0", 10, MPFR_RNDN);
        mpfr_init(r27447);
        mpfr_init(r27448);
        mpfr_init(r27449);
        mpfr_init(r27450);
}

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(r27423, x, MPFR_RNDN);
        ;
        mpfr_mul(r27425, r27423, r27424, MPFR_RNDN);
        mpfr_set_d(r27426, y, MPFR_RNDN);
        mpfr_mul(r27427, r27425, r27426, MPFR_RNDN);
        mpfr_set_d(r27428, z, MPFR_RNDN);
        mpfr_mul(r27429, r27427, r27428, MPFR_RNDN);
        mpfr_set_d(r27430, t, MPFR_RNDN);
        mpfr_mul(r27431, r27429, r27430, MPFR_RNDN);
        mpfr_set_d(r27432, a, MPFR_RNDN);
        ;
        mpfr_mul(r27434, r27432, r27433, MPFR_RNDN);
        mpfr_mul(r27435, r27434, r27430, MPFR_RNDN);
        mpfr_sub(r27436, r27431, r27435, MPFR_RNDN);
        mpfr_set_d(r27437, b, MPFR_RNDN);
        mpfr_set_d(r27438, c, MPFR_RNDN);
        mpfr_mul(r27439, r27437, r27438, MPFR_RNDN);
        mpfr_add(r27440, r27436, r27439, MPFR_RNDN);
        mpfr_mul(r27441, r27423, r27433, MPFR_RNDN);
        mpfr_set_d(r27442, i, MPFR_RNDN);
        mpfr_mul(r27443, r27441, r27442, MPFR_RNDN);
        mpfr_sub(r27444, r27440, r27443, MPFR_RNDN);
        mpfr_set_d(r27445, j, MPFR_RNDN);
        ;
        mpfr_mul(r27447, r27445, r27446, MPFR_RNDN);
        mpfr_set_d(r27448, k, MPFR_RNDN);
        mpfr_mul(r27449, r27447, r27448, MPFR_RNDN);
        mpfr_sub(r27450, r27444, r27449, MPFR_RNDN);
        return mpfr_get_d(r27450, MPFR_RNDN);
}

static mpfr_t r27451, r27452, r27453, r27454, r27455, r27456, r27457, r27458, r27459, r27460, r27461, r27462, r27463, r27464, r27465, r27466, r27467, r27468, r27469, r27470, r27471, r27472, r27473, r27474, r27475, r27476, r27477, r27478, r27479, r27480, r27481, r27482, r27483, r27484, r27485, r27486, r27487, r27488, r27489, r27490, r27491, r27492, r27493, r27494, r27495, r27496;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27451);
        mpfr_init(r27452);
        mpfr_init_set_str(r27453, "18.0", 10, MPFR_RNDN);
        mpfr_init(r27454);
        mpfr_init(r27455);
        mpfr_init(r27456);
        mpfr_init(r27457);
        mpfr_init(r27458);
        mpfr_init(r27459);
        mpfr_init(r27460);
        mpfr_init_set_str(r27461, "4.0", 10, MPFR_RNDN);
        mpfr_init(r27462);
        mpfr_init(r27463);
        mpfr_init(r27464);
        mpfr_init(r27465);
        mpfr_init(r27466);
        mpfr_init(r27467);
        mpfr_init(r27468);
        mpfr_init(r27469);
        mpfr_init_set_str(r27470, "27.0", 10, MPFR_RNDN);
        mpfr_init(r27471);
        mpfr_init(r27472);
        mpfr_init(r27473);
        mpfr_init(r27474);
        mpfr_init(r27475);
        mpfr_init(r27476);
        mpfr_init_set_str(r27477, "-6.166804222831407e+305", 10, MPFR_RNDN);
        mpfr_init(r27478);
        mpfr_init(r27479);
        mpfr_init(r27480);
        mpfr_init(r27481);
        mpfr_init(r27482);
        mpfr_init(r27483);
        mpfr_init(r27484);
        mpfr_init(r27485);
        mpfr_init(r27486);
        mpfr_init(r27487);
        mpfr_init(r27488);
        mpfr_init_set_str(r27489, "1.545079988070211e+295", 10, MPFR_RNDN);
        mpfr_init(r27490);
        mpfr_init(r27491);
        mpfr_init(r27492);
        mpfr_init(r27493);
        mpfr_init(r27494);
        mpfr_init(r27495);
        mpfr_init(r27496);
}

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(r27451, x, MPFR_RNDN);
        mpfr_set_d(r27452, y, MPFR_RNDN);
        ;
        mpfr_mul(r27454, r27452, r27453, MPFR_RNDN);
        mpfr_mul(r27455, r27451, r27454, MPFR_RNDN);
        mpfr_set_d(r27456, t, MPFR_RNDN);
        mpfr_mul(r27457, r27455, r27456, MPFR_RNDN);
        mpfr_set_d(r27458, z, MPFR_RNDN);
        mpfr_set_d(r27459, a, MPFR_RNDN);
        mpfr_neg(r27460, r27459, MPFR_RNDN);
        ;
        mpfr_mul(r27462, r27456, r27461, MPFR_RNDN);
        mpfr_set_d(r27463, c, MPFR_RNDN);
        mpfr_set_d(r27464, b, MPFR_RNDN);
        mpfr_mul(r27465, r27463, r27464, MPFR_RNDN);
        mpfr_fma(r27466, r27460, r27462, r27465, MPFR_RNDN);
        mpfr_fma(r27467, r27457, r27458, r27466, MPFR_RNDN);
        mpfr_set_d(r27468, i, MPFR_RNDN);
        mpfr_mul(r27469, r27461, r27451, MPFR_RNDN);
        ;
        mpfr_set_d(r27471, k, MPFR_RNDN);
        mpfr_mul(r27472, r27470, r27471, MPFR_RNDN);
        mpfr_set_d(r27473, j, MPFR_RNDN);
        mpfr_mul(r27474, r27472, r27473, MPFR_RNDN);
        mpfr_fma(r27475, r27468, r27469, r27474, MPFR_RNDN);
        mpfr_sub(r27476, r27467, r27475, MPFR_RNDN);
        ;
        mpfr_set_si(r27478, mpfr_cmp(r27476, r27477) <= 0, MPFR_RNDN);
        mpfr_mul(r27479, r27453, r27451, MPFR_RNDN);
        mpfr_mul(r27480, r27458, r27456, MPFR_RNDN);
        mpfr_mul(r27481, r27479, r27480, MPFR_RNDN);
        mpfr_fma(r27482, r27462, r27460, r27465, MPFR_RNDN);
        mpfr_fma(r27483, r27452, r27481, r27482, MPFR_RNDN);
        mpfr_mul(r27484, r27473, r27470, MPFR_RNDN);
        mpfr_mul(r27485, r27468, r27451, MPFR_RNDN);
        mpfr_mul(r27486, r27461, r27485, MPFR_RNDN);
        mpfr_fma(r27487, r27484, r27471, r27486, MPFR_RNDN);
        mpfr_sub(r27488, r27483, r27487, MPFR_RNDN);
        ;
        mpfr_set_si(r27490, mpfr_cmp(r27476, r27489) <= 0, MPFR_RNDN);
        mpfr_mul(r27491, r27456, r27454, MPFR_RNDN);
        mpfr_mul(r27492, r27458, r27451, MPFR_RNDN);
        mpfr_fma(r27493, r27491, r27492, r27482, MPFR_RNDN);
        mpfr_sub(r27494, r27493, r27487, MPFR_RNDN);
        if (mpfr_get_si(r27490, MPFR_RNDN)) { mpfr_set(r27495, r27476, MPFR_RNDN); } else { mpfr_set(r27495, r27494, MPFR_RNDN); };
        if (mpfr_get_si(r27478, MPFR_RNDN)) { mpfr_set(r27496, r27488, MPFR_RNDN); } else { mpfr_set(r27496, r27495, MPFR_RNDN); };
        return mpfr_get_d(r27496, MPFR_RNDN);
}

static mpfr_t r27497, r27498, r27499, r27500, r27501, r27502, r27503, r27504, r27505, r27506, r27507, r27508, r27509, r27510, r27511, r27512, r27513, r27514, r27515, r27516, r27517, r27518, r27519, r27520, r27521, r27522, r27523, r27524, r27525, r27526, r27527, r27528, r27529, r27530, r27531, r27532, r27533, r27534, r27535, r27536, r27537, r27538, r27539, r27540, r27541, r27542;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27497);
        mpfr_init(r27498);
        mpfr_init_set_str(r27499, "18.0", 10, MPFR_RNDN);
        mpfr_init(r27500);
        mpfr_init(r27501);
        mpfr_init(r27502);
        mpfr_init(r27503);
        mpfr_init(r27504);
        mpfr_init(r27505);
        mpfr_init(r27506);
        mpfr_init_set_str(r27507, "4.0", 10, MPFR_RNDN);
        mpfr_init(r27508);
        mpfr_init(r27509);
        mpfr_init(r27510);
        mpfr_init(r27511);
        mpfr_init(r27512);
        mpfr_init(r27513);
        mpfr_init(r27514);
        mpfr_init(r27515);
        mpfr_init_set_str(r27516, "27.0", 10, MPFR_RNDN);
        mpfr_init(r27517);
        mpfr_init(r27518);
        mpfr_init(r27519);
        mpfr_init(r27520);
        mpfr_init(r27521);
        mpfr_init(r27522);
        mpfr_init_set_str(r27523, "-6.166804222831407e+305", 10, MPFR_RNDN);
        mpfr_init(r27524);
        mpfr_init(r27525);
        mpfr_init(r27526);
        mpfr_init(r27527);
        mpfr_init(r27528);
        mpfr_init(r27529);
        mpfr_init(r27530);
        mpfr_init(r27531);
        mpfr_init(r27532);
        mpfr_init(r27533);
        mpfr_init(r27534);
        mpfr_init_set_str(r27535, "1.545079988070211e+295", 10, MPFR_RNDN);
        mpfr_init(r27536);
        mpfr_init(r27537);
        mpfr_init(r27538);
        mpfr_init(r27539);
        mpfr_init(r27540);
        mpfr_init(r27541);
        mpfr_init(r27542);
}

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(r27497, x, MPFR_RNDN);
        mpfr_set_d(r27498, y, MPFR_RNDN);
        ;
        mpfr_mul(r27500, r27498, r27499, MPFR_RNDN);
        mpfr_mul(r27501, r27497, r27500, MPFR_RNDN);
        mpfr_set_d(r27502, t, MPFR_RNDN);
        mpfr_mul(r27503, r27501, r27502, MPFR_RNDN);
        mpfr_set_d(r27504, z, MPFR_RNDN);
        mpfr_set_d(r27505, a, MPFR_RNDN);
        mpfr_neg(r27506, r27505, MPFR_RNDN);
        ;
        mpfr_mul(r27508, r27502, r27507, MPFR_RNDN);
        mpfr_set_d(r27509, c, MPFR_RNDN);
        mpfr_set_d(r27510, b, MPFR_RNDN);
        mpfr_mul(r27511, r27509, r27510, MPFR_RNDN);
        mpfr_fma(r27512, r27506, r27508, r27511, MPFR_RNDN);
        mpfr_fma(r27513, r27503, r27504, r27512, MPFR_RNDN);
        mpfr_set_d(r27514, i, MPFR_RNDN);
        mpfr_mul(r27515, r27507, r27497, MPFR_RNDN);
        ;
        mpfr_set_d(r27517, k, MPFR_RNDN);
        mpfr_mul(r27518, r27516, r27517, MPFR_RNDN);
        mpfr_set_d(r27519, j, MPFR_RNDN);
        mpfr_mul(r27520, r27518, r27519, MPFR_RNDN);
        mpfr_fma(r27521, r27514, r27515, r27520, MPFR_RNDN);
        mpfr_sub(r27522, r27513, r27521, MPFR_RNDN);
        ;
        mpfr_set_si(r27524, mpfr_cmp(r27522, r27523) <= 0, MPFR_RNDN);
        mpfr_mul(r27525, r27499, r27497, MPFR_RNDN);
        mpfr_mul(r27526, r27504, r27502, MPFR_RNDN);
        mpfr_mul(r27527, r27525, r27526, MPFR_RNDN);
        mpfr_fma(r27528, r27508, r27506, r27511, MPFR_RNDN);
        mpfr_fma(r27529, r27498, r27527, r27528, MPFR_RNDN);
        mpfr_mul(r27530, r27519, r27516, MPFR_RNDN);
        mpfr_mul(r27531, r27514, r27497, MPFR_RNDN);
        mpfr_mul(r27532, r27507, r27531, MPFR_RNDN);
        mpfr_fma(r27533, r27530, r27517, r27532, MPFR_RNDN);
        mpfr_sub(r27534, r27529, r27533, MPFR_RNDN);
        ;
        mpfr_set_si(r27536, mpfr_cmp(r27522, r27535) <= 0, MPFR_RNDN);
        mpfr_mul(r27537, r27502, r27500, MPFR_RNDN);
        mpfr_mul(r27538, r27504, r27497, MPFR_RNDN);
        mpfr_fma(r27539, r27537, r27538, r27528, MPFR_RNDN);
        mpfr_sub(r27540, r27539, r27533, MPFR_RNDN);
        if (mpfr_get_si(r27536, MPFR_RNDN)) { mpfr_set(r27541, r27522, MPFR_RNDN); } else { mpfr_set(r27541, r27540, MPFR_RNDN); };
        if (mpfr_get_si(r27524, MPFR_RNDN)) { mpfr_set(r27542, r27534, MPFR_RNDN); } else { mpfr_set(r27542, r27541, MPFR_RNDN); };
        return mpfr_get_d(r27542, MPFR_RNDN);
}

