#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 r18230 = x;
        float r18231 = 18.0f;
        float r18232 = r18230 * r18231;
        float r18233 = y;
        float r18234 = r18232 * r18233;
        float r18235 = z;
        float r18236 = r18234 * r18235;
        float r18237 = t;
        float r18238 = r18236 * r18237;
        float r18239 = a;
        float r18240 = 4.0f;
        float r18241 = r18239 * r18240;
        float r18242 = r18241 * r18237;
        float r18243 = r18238 - r18242;
        float r18244 = b;
        float r18245 = c;
        float r18246 = r18244 * r18245;
        float r18247 = r18243 + r18246;
        float r18248 = r18230 * r18240;
        float r18249 = i;
        float r18250 = r18248 * r18249;
        float r18251 = r18247 - r18250;
        float r18252 = j;
        float r18253 = 27.0f;
        float r18254 = r18252 * r18253;
        float r18255 = k;
        float r18256 = r18254 * r18255;
        float r18257 = r18251 - r18256;
        return r18257;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r18258 = x;
        double r18259 = 18.0;
        double r18260 = r18258 * r18259;
        double r18261 = y;
        double r18262 = r18260 * r18261;
        double r18263 = z;
        double r18264 = r18262 * r18263;
        double r18265 = t;
        double r18266 = r18264 * r18265;
        double r18267 = a;
        double r18268 = 4.0;
        double r18269 = r18267 * r18268;
        double r18270 = r18269 * r18265;
        double r18271 = r18266 - r18270;
        double r18272 = b;
        double r18273 = c;
        double r18274 = r18272 * r18273;
        double r18275 = r18271 + r18274;
        double r18276 = r18258 * r18268;
        double r18277 = i;
        double r18278 = r18276 * r18277;
        double r18279 = r18275 - r18278;
        double r18280 = j;
        double r18281 = 27.0;
        double r18282 = r18280 * r18281;
        double r18283 = k;
        double r18284 = r18282 * r18283;
        double r18285 = r18279 - r18284;
        return r18285;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r18286 = t;
        float r18287 = z;
        float r18288 = r18286 * r18287;
        float r18289 = 18.0f;
        float r18290 = y;
        float r18291 = r18289 * r18290;
        float r18292 = x;
        float r18293 = r18291 * r18292;
        float r18294 = b;
        float r18295 = c;
        float r18296 = r18294 * r18295;
        float r18297 = fma(r18288, r18293, r18296);
        float r18298 = 4.0f;
        float r18299 = i;
        float r18300 = a;
        float r18301 = r18286 * r18300;
        float r18302 = fma(r18299, r18292, r18301);
        float r18303 = 27.0f;
        float r18304 = j;
        float r18305 = k;
        float r18306 = r18304 * r18305;
        float r18307 = r18303 * r18306;
        float r18308 = fma(r18298, r18302, r18307);
        float r18309 = r18297 - r18308;
        return r18309;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r18310 = t;
        double r18311 = z;
        double r18312 = r18310 * r18311;
        double r18313 = 18.0;
        double r18314 = y;
        double r18315 = r18313 * r18314;
        double r18316 = x;
        double r18317 = r18315 * r18316;
        double r18318 = b;
        double r18319 = c;
        double r18320 = r18318 * r18319;
        double r18321 = fma(r18312, r18317, r18320);
        double r18322 = 4.0;
        double r18323 = i;
        double r18324 = a;
        double r18325 = r18310 * r18324;
        double r18326 = fma(r18323, r18316, r18325);
        double r18327 = 27.0;
        double r18328 = j;
        double r18329 = k;
        double r18330 = r18328 * r18329;
        double r18331 = r18327 * r18330;
        double r18332 = fma(r18322, r18326, r18331);
        double r18333 = r18321 - r18332;
        return r18333;
}

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 r18334, r18335, r18336, r18337, r18338, r18339, r18340, r18341, r18342, r18343, r18344, r18345, r18346, r18347, r18348, r18349, r18350, r18351, r18352, r18353, r18354, r18355, r18356, r18357, r18358, r18359, r18360, r18361;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r18334);
        mpfr_init_set_str(r18335, "18.0", 10, MPFR_RNDN);
        mpfr_init(r18336);
        mpfr_init(r18337);
        mpfr_init(r18338);
        mpfr_init(r18339);
        mpfr_init(r18340);
        mpfr_init(r18341);
        mpfr_init(r18342);
        mpfr_init(r18343);
        mpfr_init_set_str(r18344, "4.0", 10, MPFR_RNDN);
        mpfr_init(r18345);
        mpfr_init(r18346);
        mpfr_init(r18347);
        mpfr_init(r18348);
        mpfr_init(r18349);
        mpfr_init(r18350);
        mpfr_init(r18351);
        mpfr_init(r18352);
        mpfr_init(r18353);
        mpfr_init(r18354);
        mpfr_init(r18355);
        mpfr_init(r18356);
        mpfr_init_set_str(r18357, "27.0", 10, MPFR_RNDN);
        mpfr_init(r18358);
        mpfr_init(r18359);
        mpfr_init(r18360);
        mpfr_init(r18361);
}

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(r18334, x, MPFR_RNDN);
        ;
        mpfr_mul(r18336, r18334, r18335, MPFR_RNDN);
        mpfr_set_d(r18337, y, MPFR_RNDN);
        mpfr_mul(r18338, r18336, r18337, MPFR_RNDN);
        mpfr_set_d(r18339, z, MPFR_RNDN);
        mpfr_mul(r18340, r18338, r18339, MPFR_RNDN);
        mpfr_set_d(r18341, t, MPFR_RNDN);
        mpfr_mul(r18342, r18340, r18341, MPFR_RNDN);
        mpfr_set_d(r18343, a, MPFR_RNDN);
        ;
        mpfr_mul(r18345, r18343, r18344, MPFR_RNDN);
        mpfr_mul(r18346, r18345, r18341, MPFR_RNDN);
        mpfr_sub(r18347, r18342, r18346, MPFR_RNDN);
        mpfr_set_d(r18348, b, MPFR_RNDN);
        mpfr_set_d(r18349, c, MPFR_RNDN);
        mpfr_mul(r18350, r18348, r18349, MPFR_RNDN);
        mpfr_add(r18351, r18347, r18350, MPFR_RNDN);
        mpfr_mul(r18352, r18334, r18344, MPFR_RNDN);
        mpfr_set_d(r18353, i, MPFR_RNDN);
        mpfr_mul(r18354, r18352, r18353, MPFR_RNDN);
        mpfr_sub(r18355, r18351, r18354, MPFR_RNDN);
        mpfr_set_d(r18356, j, MPFR_RNDN);
        ;
        mpfr_mul(r18358, r18356, r18357, MPFR_RNDN);
        mpfr_set_d(r18359, k, MPFR_RNDN);
        mpfr_mul(r18360, r18358, r18359, MPFR_RNDN);
        mpfr_sub(r18361, r18355, r18360, MPFR_RNDN);
        return mpfr_get_d(r18361, MPFR_RNDN);
}

static mpfr_t r18362, r18363, r18364, r18365, r18366, r18367, r18368, r18369, r18370, r18371, r18372, r18373, r18374, r18375, r18376, r18377, r18378, r18379, r18380, r18381, r18382, r18383, r18384, r18385;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18362);
        mpfr_init(r18363);
        mpfr_init(r18364);
        mpfr_init_set_str(r18365, "18.0", 10, MPFR_RNDN);
        mpfr_init(r18366);
        mpfr_init(r18367);
        mpfr_init(r18368);
        mpfr_init(r18369);
        mpfr_init(r18370);
        mpfr_init(r18371);
        mpfr_init(r18372);
        mpfr_init(r18373);
        mpfr_init_set_str(r18374, "4.0", 10, MPFR_RNDN);
        mpfr_init(r18375);
        mpfr_init(r18376);
        mpfr_init(r18377);
        mpfr_init(r18378);
        mpfr_init_set_str(r18379, "27.0", 10, MPFR_RNDN);
        mpfr_init(r18380);
        mpfr_init(r18381);
        mpfr_init(r18382);
        mpfr_init(r18383);
        mpfr_init(r18384);
        mpfr_init(r18385);
}

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(r18362, t, MPFR_RNDN);
        mpfr_set_d(r18363, z, MPFR_RNDN);
        mpfr_mul(r18364, r18362, r18363, MPFR_RNDN);
        ;
        mpfr_set_d(r18366, y, MPFR_RNDN);
        mpfr_mul(r18367, r18365, r18366, MPFR_RNDN);
        mpfr_set_d(r18368, x, MPFR_RNDN);
        mpfr_mul(r18369, r18367, r18368, MPFR_RNDN);
        mpfr_set_d(r18370, b, MPFR_RNDN);
        mpfr_set_d(r18371, c, MPFR_RNDN);
        mpfr_mul(r18372, r18370, r18371, MPFR_RNDN);
        mpfr_fma(r18373, r18364, r18369, r18372, MPFR_RNDN);
        ;
        mpfr_set_d(r18375, i, MPFR_RNDN);
        mpfr_set_d(r18376, a, MPFR_RNDN);
        mpfr_mul(r18377, r18362, r18376, MPFR_RNDN);
        mpfr_fma(r18378, r18375, r18368, r18377, MPFR_RNDN);
        ;
        mpfr_set_d(r18380, j, MPFR_RNDN);
        mpfr_set_d(r18381, k, MPFR_RNDN);
        mpfr_mul(r18382, r18380, r18381, MPFR_RNDN);
        mpfr_mul(r18383, r18379, r18382, MPFR_RNDN);
        mpfr_fma(r18384, r18374, r18378, r18383, MPFR_RNDN);
        mpfr_sub(r18385, r18373, r18384, MPFR_RNDN);
        return mpfr_get_d(r18385, MPFR_RNDN);
}

static mpfr_t r18386, r18387, r18388, r18389, r18390, r18391, r18392, r18393, r18394, r18395, r18396, r18397, r18398, r18399, r18400, r18401, r18402, r18403, r18404, r18405, r18406, r18407, r18408, r18409;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18386);
        mpfr_init(r18387);
        mpfr_init(r18388);
        mpfr_init_set_str(r18389, "18.0", 10, MPFR_RNDN);
        mpfr_init(r18390);
        mpfr_init(r18391);
        mpfr_init(r18392);
        mpfr_init(r18393);
        mpfr_init(r18394);
        mpfr_init(r18395);
        mpfr_init(r18396);
        mpfr_init(r18397);
        mpfr_init_set_str(r18398, "4.0", 10, MPFR_RNDN);
        mpfr_init(r18399);
        mpfr_init(r18400);
        mpfr_init(r18401);
        mpfr_init(r18402);
        mpfr_init_set_str(r18403, "27.0", 10, MPFR_RNDN);
        mpfr_init(r18404);
        mpfr_init(r18405);
        mpfr_init(r18406);
        mpfr_init(r18407);
        mpfr_init(r18408);
        mpfr_init(r18409);
}

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(r18386, t, MPFR_RNDN);
        mpfr_set_d(r18387, z, MPFR_RNDN);
        mpfr_mul(r18388, r18386, r18387, MPFR_RNDN);
        ;
        mpfr_set_d(r18390, y, MPFR_RNDN);
        mpfr_mul(r18391, r18389, r18390, MPFR_RNDN);
        mpfr_set_d(r18392, x, MPFR_RNDN);
        mpfr_mul(r18393, r18391, r18392, MPFR_RNDN);
        mpfr_set_d(r18394, b, MPFR_RNDN);
        mpfr_set_d(r18395, c, MPFR_RNDN);
        mpfr_mul(r18396, r18394, r18395, MPFR_RNDN);
        mpfr_fma(r18397, r18388, r18393, r18396, MPFR_RNDN);
        ;
        mpfr_set_d(r18399, i, MPFR_RNDN);
        mpfr_set_d(r18400, a, MPFR_RNDN);
        mpfr_mul(r18401, r18386, r18400, MPFR_RNDN);
        mpfr_fma(r18402, r18399, r18392, r18401, MPFR_RNDN);
        ;
        mpfr_set_d(r18404, j, MPFR_RNDN);
        mpfr_set_d(r18405, k, MPFR_RNDN);
        mpfr_mul(r18406, r18404, r18405, MPFR_RNDN);
        mpfr_mul(r18407, r18403, r18406, MPFR_RNDN);
        mpfr_fma(r18408, r18398, r18402, r18407, MPFR_RNDN);
        mpfr_sub(r18409, r18397, r18408, MPFR_RNDN);
        return mpfr_get_d(r18409, MPFR_RNDN);
}

