#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 r27177 = x;
        float r27178 = 18.0;
        float r27179 = r27177 * r27178;
        float r27180 = y;
        float r27181 = r27179 * r27180;
        float r27182 = z;
        float r27183 = r27181 * r27182;
        float r27184 = t;
        float r27185 = r27183 * r27184;
        float r27186 = a;
        float r27187 = 4.0;
        float r27188 = r27186 * r27187;
        float r27189 = r27188 * r27184;
        float r27190 = r27185 - r27189;
        float r27191 = b;
        float r27192 = c;
        float r27193 = r27191 * r27192;
        float r27194 = r27190 + r27193;
        float r27195 = r27177 * r27187;
        float r27196 = i;
        float r27197 = r27195 * r27196;
        float r27198 = r27194 - r27197;
        float r27199 = j;
        float r27200 = 27.0;
        float r27201 = r27199 * r27200;
        float r27202 = k;
        float r27203 = r27201 * r27202;
        float r27204 = r27198 - r27203;
        return r27204;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r27205 = x;
        double r27206 = 18.0;
        double r27207 = r27205 * r27206;
        double r27208 = y;
        double r27209 = r27207 * r27208;
        double r27210 = z;
        double r27211 = r27209 * r27210;
        double r27212 = t;
        double r27213 = r27211 * r27212;
        double r27214 = a;
        double r27215 = 4.0;
        double r27216 = r27214 * r27215;
        double r27217 = r27216 * r27212;
        double r27218 = r27213 - r27217;
        double r27219 = b;
        double r27220 = c;
        double r27221 = r27219 * r27220;
        double r27222 = r27218 + r27221;
        double r27223 = r27205 * r27215;
        double r27224 = i;
        double r27225 = r27223 * r27224;
        double r27226 = r27222 - r27225;
        double r27227 = j;
        double r27228 = 27.0;
        double r27229 = r27227 * r27228;
        double r27230 = k;
        double r27231 = r27229 * r27230;
        double r27232 = r27226 - r27231;
        return r27232;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r27233 = c;
        float r27234 = b;
        float r27235 = r27233 * r27234;
        float r27236 = k;
        float r27237 = 27.0;
        float r27238 = j;
        float r27239 = r27237 * r27238;
        float r27240 = r27236 * r27239;
        float r27241 = r27235 - r27240;
        float r27242 = x;
        float r27243 = i;
        float r27244 = 4.0;
        float r27245 = r27243 * r27244;
        float r27246 = t;
        float r27247 = y;
        float r27248 = r27246 * r27247;
        float r27249 = z;
        float r27250 = 18.0;
        float r27251 = r27249 * r27250;
        float r27252 = r27248 * r27251;
        float r27253 = r27245 - r27252;
        float r27254 = r27242 * r27253;
        float r27255 = r27241 - r27254;
        float r27256 = a;
        float r27257 = r27244 * r27256;
        float r27258 = -r27257;
        float r27259 = r27258 * r27246;
        float r27260 = r27255 + r27259;
        float r27261 = -5.616957732692031e+307;
        bool r27262 = r27260 <= r27261;
        float r27263 = r27234 * r27233;
        float r27264 = r27242 * r27244;
        float r27265 = r27243 * r27264;
        float r27266 = r27263 - r27265;
        float r27267 = r27237 * r27236;
        float r27268 = r27238 * r27267;
        float r27269 = r27266 - r27268;
        float r27270 = r27247 * r27250;
        float r27271 = r27242 * r27270;
        float r27272 = r27249 * r27271;
        float r27273 = r27272 - r27257;
        float r27274 = r27246 * r27273;
        float r27275 = r27269 + r27274;
        float r27276 = 4.420985580696635e+287;
        bool r27277 = r27260 <= r27276;
        float r27278 = r27277 ? r27260 : r27275;
        float r27279 = r27262 ? r27275 : r27278;
        return r27279;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r27280 = c;
        double r27281 = b;
        double r27282 = r27280 * r27281;
        double r27283 = k;
        double r27284 = 27.0;
        double r27285 = j;
        double r27286 = r27284 * r27285;
        double r27287 = r27283 * r27286;
        double r27288 = r27282 - r27287;
        double r27289 = x;
        double r27290 = i;
        double r27291 = 4.0;
        double r27292 = r27290 * r27291;
        double r27293 = t;
        double r27294 = y;
        double r27295 = r27293 * r27294;
        double r27296 = z;
        double r27297 = 18.0;
        double r27298 = r27296 * r27297;
        double r27299 = r27295 * r27298;
        double r27300 = r27292 - r27299;
        double r27301 = r27289 * r27300;
        double r27302 = r27288 - r27301;
        double r27303 = a;
        double r27304 = r27291 * r27303;
        double r27305 = -r27304;
        double r27306 = r27305 * r27293;
        double r27307 = r27302 + r27306;
        double r27308 = -5.616957732692031e+307;
        bool r27309 = r27307 <= r27308;
        double r27310 = r27281 * r27280;
        double r27311 = r27289 * r27291;
        double r27312 = r27290 * r27311;
        double r27313 = r27310 - r27312;
        double r27314 = r27284 * r27283;
        double r27315 = r27285 * r27314;
        double r27316 = r27313 - r27315;
        double r27317 = r27294 * r27297;
        double r27318 = r27289 * r27317;
        double r27319 = r27296 * r27318;
        double r27320 = r27319 - r27304;
        double r27321 = r27293 * r27320;
        double r27322 = r27316 + r27321;
        double r27323 = 4.420985580696635e+287;
        bool r27324 = r27307 <= r27323;
        double r27325 = r27324 ? r27307 : r27322;
        double r27326 = r27309 ? r27322 : r27325;
        return r27326;
}

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 r27327, r27328, r27329, r27330, r27331, r27332, r27333, r27334, r27335, r27336, r27337, r27338, r27339, r27340, r27341, r27342, r27343, r27344, r27345, r27346, r27347, r27348, r27349, r27350, r27351, r27352, r27353, r27354;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r27327);
        mpfr_init_set_str(r27328, "18.0", 10, MPFR_RNDN);
        mpfr_init(r27329);
        mpfr_init(r27330);
        mpfr_init(r27331);
        mpfr_init(r27332);
        mpfr_init(r27333);
        mpfr_init(r27334);
        mpfr_init(r27335);
        mpfr_init(r27336);
        mpfr_init_set_str(r27337, "4.0", 10, MPFR_RNDN);
        mpfr_init(r27338);
        mpfr_init(r27339);
        mpfr_init(r27340);
        mpfr_init(r27341);
        mpfr_init(r27342);
        mpfr_init(r27343);
        mpfr_init(r27344);
        mpfr_init(r27345);
        mpfr_init(r27346);
        mpfr_init(r27347);
        mpfr_init(r27348);
        mpfr_init(r27349);
        mpfr_init_set_str(r27350, "27.0", 10, MPFR_RNDN);
        mpfr_init(r27351);
        mpfr_init(r27352);
        mpfr_init(r27353);
        mpfr_init(r27354);
}

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(r27327, x, MPFR_RNDN);
        ;
        mpfr_mul(r27329, r27327, r27328, MPFR_RNDN);
        mpfr_set_d(r27330, y, MPFR_RNDN);
        mpfr_mul(r27331, r27329, r27330, MPFR_RNDN);
        mpfr_set_d(r27332, z, MPFR_RNDN);
        mpfr_mul(r27333, r27331, r27332, MPFR_RNDN);
        mpfr_set_d(r27334, t, MPFR_RNDN);
        mpfr_mul(r27335, r27333, r27334, MPFR_RNDN);
        mpfr_set_d(r27336, a, MPFR_RNDN);
        ;
        mpfr_mul(r27338, r27336, r27337, MPFR_RNDN);
        mpfr_mul(r27339, r27338, r27334, MPFR_RNDN);
        mpfr_sub(r27340, r27335, r27339, MPFR_RNDN);
        mpfr_set_d(r27341, b, MPFR_RNDN);
        mpfr_set_d(r27342, c, MPFR_RNDN);
        mpfr_mul(r27343, r27341, r27342, MPFR_RNDN);
        mpfr_add(r27344, r27340, r27343, MPFR_RNDN);
        mpfr_mul(r27345, r27327, r27337, MPFR_RNDN);
        mpfr_set_d(r27346, i, MPFR_RNDN);
        mpfr_mul(r27347, r27345, r27346, MPFR_RNDN);
        mpfr_sub(r27348, r27344, r27347, MPFR_RNDN);
        mpfr_set_d(r27349, j, MPFR_RNDN);
        ;
        mpfr_mul(r27351, r27349, r27350, MPFR_RNDN);
        mpfr_set_d(r27352, k, MPFR_RNDN);
        mpfr_mul(r27353, r27351, r27352, MPFR_RNDN);
        mpfr_sub(r27354, r27348, r27353, MPFR_RNDN);
        return mpfr_get_d(r27354, MPFR_RNDN);
}

static mpfr_t r27355, r27356, r27357, r27358, r27359, r27360, r27361, r27362, r27363, r27364, r27365, r27366, r27367, r27368, r27369, r27370, r27371, r27372, r27373, r27374, r27375, r27376, r27377, r27378, r27379, r27380, r27381, r27382, r27383, r27384, r27385, r27386, r27387, r27388, r27389, r27390, r27391, r27392, r27393, r27394, r27395, r27396, r27397, r27398, r27399, r27400, r27401;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27355);
        mpfr_init(r27356);
        mpfr_init(r27357);
        mpfr_init(r27358);
        mpfr_init_set_str(r27359, "27.0", 10, MPFR_RNDN);
        mpfr_init(r27360);
        mpfr_init(r27361);
        mpfr_init(r27362);
        mpfr_init(r27363);
        mpfr_init(r27364);
        mpfr_init(r27365);
        mpfr_init_set_str(r27366, "4.0", 10, MPFR_RNDN);
        mpfr_init(r27367);
        mpfr_init(r27368);
        mpfr_init(r27369);
        mpfr_init(r27370);
        mpfr_init(r27371);
        mpfr_init_set_str(r27372, "18.0", 10, MPFR_RNDN);
        mpfr_init(r27373);
        mpfr_init(r27374);
        mpfr_init(r27375);
        mpfr_init(r27376);
        mpfr_init(r27377);
        mpfr_init(r27378);
        mpfr_init(r27379);
        mpfr_init(r27380);
        mpfr_init(r27381);
        mpfr_init(r27382);
        mpfr_init_set_str(r27383, "-5.616957732692031e+307", 10, MPFR_RNDN);
        mpfr_init(r27384);
        mpfr_init(r27385);
        mpfr_init(r27386);
        mpfr_init(r27387);
        mpfr_init(r27388);
        mpfr_init(r27389);
        mpfr_init(r27390);
        mpfr_init(r27391);
        mpfr_init(r27392);
        mpfr_init(r27393);
        mpfr_init(r27394);
        mpfr_init(r27395);
        mpfr_init(r27396);
        mpfr_init(r27397);
        mpfr_init_set_str(r27398, "4.420985580696635e+287", 10, MPFR_RNDN);
        mpfr_init(r27399);
        mpfr_init(r27400);
        mpfr_init(r27401);
}

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(r27355, c, MPFR_RNDN);
        mpfr_set_d(r27356, b, MPFR_RNDN);
        mpfr_mul(r27357, r27355, r27356, MPFR_RNDN);
        mpfr_set_d(r27358, k, MPFR_RNDN);
        ;
        mpfr_set_d(r27360, j, MPFR_RNDN);
        mpfr_mul(r27361, r27359, r27360, MPFR_RNDN);
        mpfr_mul(r27362, r27358, r27361, MPFR_RNDN);
        mpfr_sub(r27363, r27357, r27362, MPFR_RNDN);
        mpfr_set_d(r27364, x, MPFR_RNDN);
        mpfr_set_d(r27365, i, MPFR_RNDN);
        ;
        mpfr_mul(r27367, r27365, r27366, MPFR_RNDN);
        mpfr_set_d(r27368, t, MPFR_RNDN);
        mpfr_set_d(r27369, y, MPFR_RNDN);
        mpfr_mul(r27370, r27368, r27369, MPFR_RNDN);
        mpfr_set_d(r27371, z, MPFR_RNDN);
        ;
        mpfr_mul(r27373, r27371, r27372, MPFR_RNDN);
        mpfr_mul(r27374, r27370, r27373, MPFR_RNDN);
        mpfr_sub(r27375, r27367, r27374, MPFR_RNDN);
        mpfr_mul(r27376, r27364, r27375, MPFR_RNDN);
        mpfr_sub(r27377, r27363, r27376, MPFR_RNDN);
        mpfr_set_d(r27378, a, MPFR_RNDN);
        mpfr_mul(r27379, r27366, r27378, MPFR_RNDN);
        mpfr_neg(r27380, r27379, MPFR_RNDN);
        mpfr_mul(r27381, r27380, r27368, MPFR_RNDN);
        mpfr_add(r27382, r27377, r27381, MPFR_RNDN);
        ;
        mpfr_set_si(r27384, mpfr_cmp(r27382, r27383) <= 0, MPFR_RNDN);
        mpfr_mul(r27385, r27356, r27355, MPFR_RNDN);
        mpfr_mul(r27386, r27364, r27366, MPFR_RNDN);
        mpfr_mul(r27387, r27365, r27386, MPFR_RNDN);
        mpfr_sub(r27388, r27385, r27387, MPFR_RNDN);
        mpfr_mul(r27389, r27359, r27358, MPFR_RNDN);
        mpfr_mul(r27390, r27360, r27389, MPFR_RNDN);
        mpfr_sub(r27391, r27388, r27390, MPFR_RNDN);
        mpfr_mul(r27392, r27369, r27372, MPFR_RNDN);
        mpfr_mul(r27393, r27364, r27392, MPFR_RNDN);
        mpfr_mul(r27394, r27371, r27393, MPFR_RNDN);
        mpfr_sub(r27395, r27394, r27379, MPFR_RNDN);
        mpfr_mul(r27396, r27368, r27395, MPFR_RNDN);
        mpfr_add(r27397, r27391, r27396, MPFR_RNDN);
        ;
        mpfr_set_si(r27399, mpfr_cmp(r27382, r27398) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r27399, MPFR_RNDN)) { mpfr_set(r27400, r27382, MPFR_RNDN); } else { mpfr_set(r27400, r27397, MPFR_RNDN); };
        if (mpfr_get_si(r27384, MPFR_RNDN)) { mpfr_set(r27401, r27397, MPFR_RNDN); } else { mpfr_set(r27401, r27400, MPFR_RNDN); };
        return mpfr_get_d(r27401, MPFR_RNDN);
}

static mpfr_t r27402, r27403, r27404, r27405, r27406, r27407, r27408, r27409, r27410, r27411, r27412, r27413, r27414, r27415, r27416, r27417, r27418, r27419, r27420, r27421, r27422, 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27402);
        mpfr_init(r27403);
        mpfr_init(r27404);
        mpfr_init(r27405);
        mpfr_init_set_str(r27406, "27.0", 10, MPFR_RNDN);
        mpfr_init(r27407);
        mpfr_init(r27408);
        mpfr_init(r27409);
        mpfr_init(r27410);
        mpfr_init(r27411);
        mpfr_init(r27412);
        mpfr_init_set_str(r27413, "4.0", 10, MPFR_RNDN);
        mpfr_init(r27414);
        mpfr_init(r27415);
        mpfr_init(r27416);
        mpfr_init(r27417);
        mpfr_init(r27418);
        mpfr_init_set_str(r27419, "18.0", 10, MPFR_RNDN);
        mpfr_init(r27420);
        mpfr_init(r27421);
        mpfr_init(r27422);
        mpfr_init(r27423);
        mpfr_init(r27424);
        mpfr_init(r27425);
        mpfr_init(r27426);
        mpfr_init(r27427);
        mpfr_init(r27428);
        mpfr_init(r27429);
        mpfr_init_set_str(r27430, "-5.616957732692031e+307", 10, MPFR_RNDN);
        mpfr_init(r27431);
        mpfr_init(r27432);
        mpfr_init(r27433);
        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_set_str(r27445, "4.420985580696635e+287", 10, MPFR_RNDN);
        mpfr_init(r27446);
        mpfr_init(r27447);
        mpfr_init(r27448);
}

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(r27402, c, MPFR_RNDN);
        mpfr_set_d(r27403, b, MPFR_RNDN);
        mpfr_mul(r27404, r27402, r27403, MPFR_RNDN);
        mpfr_set_d(r27405, k, MPFR_RNDN);
        ;
        mpfr_set_d(r27407, j, MPFR_RNDN);
        mpfr_mul(r27408, r27406, r27407, MPFR_RNDN);
        mpfr_mul(r27409, r27405, r27408, MPFR_RNDN);
        mpfr_sub(r27410, r27404, r27409, MPFR_RNDN);
        mpfr_set_d(r27411, x, MPFR_RNDN);
        mpfr_set_d(r27412, i, MPFR_RNDN);
        ;
        mpfr_mul(r27414, r27412, r27413, MPFR_RNDN);
        mpfr_set_d(r27415, t, MPFR_RNDN);
        mpfr_set_d(r27416, y, MPFR_RNDN);
        mpfr_mul(r27417, r27415, r27416, MPFR_RNDN);
        mpfr_set_d(r27418, z, MPFR_RNDN);
        ;
        mpfr_mul(r27420, r27418, r27419, MPFR_RNDN);
        mpfr_mul(r27421, r27417, r27420, MPFR_RNDN);
        mpfr_sub(r27422, r27414, r27421, MPFR_RNDN);
        mpfr_mul(r27423, r27411, r27422, MPFR_RNDN);
        mpfr_sub(r27424, r27410, r27423, MPFR_RNDN);
        mpfr_set_d(r27425, a, MPFR_RNDN);
        mpfr_mul(r27426, r27413, r27425, MPFR_RNDN);
        mpfr_neg(r27427, r27426, MPFR_RNDN);
        mpfr_mul(r27428, r27427, r27415, MPFR_RNDN);
        mpfr_add(r27429, r27424, r27428, MPFR_RNDN);
        ;
        mpfr_set_si(r27431, mpfr_cmp(r27429, r27430) <= 0, MPFR_RNDN);
        mpfr_mul(r27432, r27403, r27402, MPFR_RNDN);
        mpfr_mul(r27433, r27411, r27413, MPFR_RNDN);
        mpfr_mul(r27434, r27412, r27433, MPFR_RNDN);
        mpfr_sub(r27435, r27432, r27434, MPFR_RNDN);
        mpfr_mul(r27436, r27406, r27405, MPFR_RNDN);
        mpfr_mul(r27437, r27407, r27436, MPFR_RNDN);
        mpfr_sub(r27438, r27435, r27437, MPFR_RNDN);
        mpfr_mul(r27439, r27416, r27419, MPFR_RNDN);
        mpfr_mul(r27440, r27411, r27439, MPFR_RNDN);
        mpfr_mul(r27441, r27418, r27440, MPFR_RNDN);
        mpfr_sub(r27442, r27441, r27426, MPFR_RNDN);
        mpfr_mul(r27443, r27415, r27442, MPFR_RNDN);
        mpfr_add(r27444, r27438, r27443, MPFR_RNDN);
        ;
        mpfr_set_si(r27446, mpfr_cmp(r27429, r27445) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r27446, MPFR_RNDN)) { mpfr_set(r27447, r27429, MPFR_RNDN); } else { mpfr_set(r27447, r27444, MPFR_RNDN); };
        if (mpfr_get_si(r27431, MPFR_RNDN)) { mpfr_set(r27448, r27444, MPFR_RNDN); } else { mpfr_set(r27448, r27447, MPFR_RNDN); };
        return mpfr_get_d(r27448, MPFR_RNDN);
}

