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

char *name = "Data.Colour.Matrix:determinant from colour-2.3.3, A";

double f_if(float x, float y, float z, float t, float a, float b, float c, float i, float j) {
        float r57160 = x;
        float r57161 = y;
        float r57162 = z;
        float r57163 = r57161 * r57162;
        float r57164 = t;
        float r57165 = a;
        float r57166 = r57164 * r57165;
        float r57167 = r57163 - r57166;
        float r57168 = r57160 * r57167;
        float r57169 = b;
        float r57170 = c;
        float r57171 = r57170 * r57162;
        float r57172 = i;
        float r57173 = r57164 * r57172;
        float r57174 = r57171 - r57173;
        float r57175 = r57169 * r57174;
        float r57176 = r57168 - r57175;
        float r57177 = j;
        float r57178 = r57170 * r57165;
        float r57179 = r57161 * r57172;
        float r57180 = r57178 - r57179;
        float r57181 = r57177 * r57180;
        float r57182 = r57176 + r57181;
        return r57182;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r57183 = x;
        double r57184 = y;
        double r57185 = z;
        double r57186 = r57184 * r57185;
        double r57187 = t;
        double r57188 = a;
        double r57189 = r57187 * r57188;
        double r57190 = r57186 - r57189;
        double r57191 = r57183 * r57190;
        double r57192 = b;
        double r57193 = c;
        double r57194 = r57193 * r57185;
        double r57195 = i;
        double r57196 = r57187 * r57195;
        double r57197 = r57194 - r57196;
        double r57198 = r57192 * r57197;
        double r57199 = r57191 - r57198;
        double r57200 = j;
        double r57201 = r57193 * r57188;
        double r57202 = r57184 * r57195;
        double r57203 = r57201 - r57202;
        double r57204 = r57200 * r57203;
        double r57205 = r57199 + r57204;
        return r57205;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j) {
        float r57206 = j;
        float r57207 = c;
        float r57208 = a;
        float r57209 = r57207 * r57208;
        float r57210 = y;
        float r57211 = i;
        float r57212 = r57210 * r57211;
        float r57213 = r57209 - r57212;
        float r57214 = r57206 * r57213;
        float r57215 = -2.806410457137367e+194;
        bool r57216 = r57214 <= r57215;
        float r57217 = x;
        float r57218 = z;
        float r57219 = r57210 * r57218;
        float r57220 = t;
        float r57221 = r57220 * r57208;
        float r57222 = r57219 - r57221;
        float r57223 = r57217 * r57222;
        float r57224 = b;
        float r57225 = r57207 * r57218;
        float r57226 = r57220 * r57211;
        float r57227 = r57225 - r57226;
        float r57228 = r57224 * r57227;
        float r57229 = r57223 - r57228;
        float r57230 = cbrt(r57213);
        float r57231 = r57230 * r57230;
        float r57232 = r57206 * r57231;
        float r57233 = r57232 * r57230;
        float r57234 = r57229 + r57233;
        float r57235 = 1.3394891645195909e+259;
        bool r57236 = r57214 <= r57235;
        float r57237 = r57206 * r57209;
        float r57238 = r57229 + r57237;
        float r57239 = -r57212;
        float r57240 = r57206 * r57239;
        float r57241 = r57238 + r57240;
        float r57242 = r57218 * r57210;
        float r57243 = r57208 * r57220;
        float r57244 = r57242 - r57243;
        float r57245 = r57244 * r57217;
        float r57246 = r57218 * r57207;
        float r57247 = r57246 - r57226;
        float r57248 = r57247 * r57224;
        float r57249 = r57245 - r57248;
        float r57250 = r57206 * r57207;
        float r57251 = r57208 * r57250;
        float r57252 = r57249 + r57251;
        float r57253 = r57236 ? r57241 : r57252;
        float r57254 = r57216 ? r57234 : r57253;
        return r57254;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r57255 = j;
        double r57256 = c;
        double r57257 = a;
        double r57258 = r57256 * r57257;
        double r57259 = y;
        double r57260 = i;
        double r57261 = r57259 * r57260;
        double r57262 = r57258 - r57261;
        double r57263 = r57255 * r57262;
        double r57264 = -2.806410457137367e+194;
        bool r57265 = r57263 <= r57264;
        double r57266 = x;
        double r57267 = z;
        double r57268 = r57259 * r57267;
        double r57269 = t;
        double r57270 = r57269 * r57257;
        double r57271 = r57268 - r57270;
        double r57272 = r57266 * r57271;
        double r57273 = b;
        double r57274 = r57256 * r57267;
        double r57275 = r57269 * r57260;
        double r57276 = r57274 - r57275;
        double r57277 = r57273 * r57276;
        double r57278 = r57272 - r57277;
        double r57279 = cbrt(r57262);
        double r57280 = r57279 * r57279;
        double r57281 = r57255 * r57280;
        double r57282 = r57281 * r57279;
        double r57283 = r57278 + r57282;
        double r57284 = 1.3394891645195909e+259;
        bool r57285 = r57263 <= r57284;
        double r57286 = r57255 * r57258;
        double r57287 = r57278 + r57286;
        double r57288 = -r57261;
        double r57289 = r57255 * r57288;
        double r57290 = r57287 + r57289;
        double r57291 = r57267 * r57259;
        double r57292 = r57257 * r57269;
        double r57293 = r57291 - r57292;
        double r57294 = r57293 * r57266;
        double r57295 = r57267 * r57256;
        double r57296 = r57295 - r57275;
        double r57297 = r57296 * r57273;
        double r57298 = r57294 - r57297;
        double r57299 = r57255 * r57256;
        double r57300 = r57257 * r57299;
        double r57301 = r57298 + r57300;
        double r57302 = r57285 ? r57290 : r57301;
        double r57303 = r57265 ? r57283 : r57302;
        return r57303;
}

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 r57304, r57305, r57306, r57307, r57308, r57309, r57310, r57311, r57312, r57313, r57314, r57315, r57316, r57317, r57318, r57319, r57320, r57321, r57322, r57323, r57324, r57325, r57326;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r57304);
        mpfr_init(r57305);
        mpfr_init(r57306);
        mpfr_init(r57307);
        mpfr_init(r57308);
        mpfr_init(r57309);
        mpfr_init(r57310);
        mpfr_init(r57311);
        mpfr_init(r57312);
        mpfr_init(r57313);
        mpfr_init(r57314);
        mpfr_init(r57315);
        mpfr_init(r57316);
        mpfr_init(r57317);
        mpfr_init(r57318);
        mpfr_init(r57319);
        mpfr_init(r57320);
        mpfr_init(r57321);
        mpfr_init(r57322);
        mpfr_init(r57323);
        mpfr_init(r57324);
        mpfr_init(r57325);
        mpfr_init(r57326);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        mpfr_set_d(r57304, x, MPFR_RNDN);
        mpfr_set_d(r57305, y, MPFR_RNDN);
        mpfr_set_d(r57306, z, MPFR_RNDN);
        mpfr_mul(r57307, r57305, r57306, MPFR_RNDN);
        mpfr_set_d(r57308, t, MPFR_RNDN);
        mpfr_set_d(r57309, a, MPFR_RNDN);
        mpfr_mul(r57310, r57308, r57309, MPFR_RNDN);
        mpfr_sub(r57311, r57307, r57310, MPFR_RNDN);
        mpfr_mul(r57312, r57304, r57311, MPFR_RNDN);
        mpfr_set_d(r57313, b, MPFR_RNDN);
        mpfr_set_d(r57314, c, MPFR_RNDN);
        mpfr_mul(r57315, r57314, r57306, MPFR_RNDN);
        mpfr_set_d(r57316, i, MPFR_RNDN);
        mpfr_mul(r57317, r57308, r57316, MPFR_RNDN);
        mpfr_sub(r57318, r57315, r57317, MPFR_RNDN);
        mpfr_mul(r57319, r57313, r57318, MPFR_RNDN);
        mpfr_sub(r57320, r57312, r57319, MPFR_RNDN);
        mpfr_set_d(r57321, j, MPFR_RNDN);
        mpfr_mul(r57322, r57314, r57309, MPFR_RNDN);
        mpfr_mul(r57323, r57305, r57316, MPFR_RNDN);
        mpfr_sub(r57324, r57322, r57323, MPFR_RNDN);
        mpfr_mul(r57325, r57321, r57324, MPFR_RNDN);
        mpfr_add(r57326, r57320, r57325, MPFR_RNDN);
        return mpfr_get_d(r57326, MPFR_RNDN);
}

static mpfr_t r57327, r57328, r57329, r57330, r57331, r57332, r57333, r57334, r57335, r57336, r57337, r57338, r57339, r57340, r57341, r57342, r57343, r57344, r57345, r57346, r57347, r57348, r57349, r57350, r57351, r57352, r57353, r57354, r57355, r57356, r57357, r57358, r57359, r57360, r57361, r57362, r57363, r57364, r57365, r57366, r57367, r57368, r57369, r57370, r57371, r57372, r57373, r57374, r57375;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r57327);
        mpfr_init(r57328);
        mpfr_init(r57329);
        mpfr_init(r57330);
        mpfr_init(r57331);
        mpfr_init(r57332);
        mpfr_init(r57333);
        mpfr_init(r57334);
        mpfr_init(r57335);
        mpfr_init_set_str(r57336, "-2.806410457137367e+194", 10, MPFR_RNDN);
        mpfr_init(r57337);
        mpfr_init(r57338);
        mpfr_init(r57339);
        mpfr_init(r57340);
        mpfr_init(r57341);
        mpfr_init(r57342);
        mpfr_init(r57343);
        mpfr_init(r57344);
        mpfr_init(r57345);
        mpfr_init(r57346);
        mpfr_init(r57347);
        mpfr_init(r57348);
        mpfr_init(r57349);
        mpfr_init(r57350);
        mpfr_init(r57351);
        mpfr_init(r57352);
        mpfr_init(r57353);
        mpfr_init(r57354);
        mpfr_init(r57355);
        mpfr_init_set_str(r57356, "1.3394891645195909e+259", 10, MPFR_RNDN);
        mpfr_init(r57357);
        mpfr_init(r57358);
        mpfr_init(r57359);
        mpfr_init(r57360);
        mpfr_init(r57361);
        mpfr_init(r57362);
        mpfr_init(r57363);
        mpfr_init(r57364);
        mpfr_init(r57365);
        mpfr_init(r57366);
        mpfr_init(r57367);
        mpfr_init(r57368);
        mpfr_init(r57369);
        mpfr_init(r57370);
        mpfr_init(r57371);
        mpfr_init(r57372);
        mpfr_init(r57373);
        mpfr_init(r57374);
        mpfr_init(r57375);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        mpfr_set_d(r57327, j, MPFR_RNDN);
        mpfr_set_d(r57328, c, MPFR_RNDN);
        mpfr_set_d(r57329, a, MPFR_RNDN);
        mpfr_mul(r57330, r57328, r57329, MPFR_RNDN);
        mpfr_set_d(r57331, y, MPFR_RNDN);
        mpfr_set_d(r57332, i, MPFR_RNDN);
        mpfr_mul(r57333, r57331, r57332, MPFR_RNDN);
        mpfr_sub(r57334, r57330, r57333, MPFR_RNDN);
        mpfr_mul(r57335, r57327, r57334, MPFR_RNDN);
        ;
        mpfr_set_si(r57337, mpfr_cmp(r57335, r57336) <= 0, MPFR_RNDN);
        mpfr_set_d(r57338, x, MPFR_RNDN);
        mpfr_set_d(r57339, z, MPFR_RNDN);
        mpfr_mul(r57340, r57331, r57339, MPFR_RNDN);
        mpfr_set_d(r57341, t, MPFR_RNDN);
        mpfr_mul(r57342, r57341, r57329, MPFR_RNDN);
        mpfr_sub(r57343, r57340, r57342, MPFR_RNDN);
        mpfr_mul(r57344, r57338, r57343, MPFR_RNDN);
        mpfr_set_d(r57345, b, MPFR_RNDN);
        mpfr_mul(r57346, r57328, r57339, MPFR_RNDN);
        mpfr_mul(r57347, r57341, r57332, MPFR_RNDN);
        mpfr_sub(r57348, r57346, r57347, MPFR_RNDN);
        mpfr_mul(r57349, r57345, r57348, MPFR_RNDN);
        mpfr_sub(r57350, r57344, r57349, MPFR_RNDN);
        mpfr_cbrt(r57351, r57334, MPFR_RNDN);
        mpfr_mul(r57352, r57351, r57351, MPFR_RNDN);
        mpfr_mul(r57353, r57327, r57352, MPFR_RNDN);
        mpfr_mul(r57354, r57353, r57351, MPFR_RNDN);
        mpfr_add(r57355, r57350, r57354, MPFR_RNDN);
        ;
        mpfr_set_si(r57357, mpfr_cmp(r57335, r57356) <= 0, MPFR_RNDN);
        mpfr_mul(r57358, r57327, r57330, MPFR_RNDN);
        mpfr_add(r57359, r57350, r57358, MPFR_RNDN);
        mpfr_neg(r57360, r57333, MPFR_RNDN);
        mpfr_mul(r57361, r57327, r57360, MPFR_RNDN);
        mpfr_add(r57362, r57359, r57361, MPFR_RNDN);
        mpfr_mul(r57363, r57339, r57331, MPFR_RNDN);
        mpfr_mul(r57364, r57329, r57341, MPFR_RNDN);
        mpfr_sub(r57365, r57363, r57364, MPFR_RNDN);
        mpfr_mul(r57366, r57365, r57338, MPFR_RNDN);
        mpfr_mul(r57367, r57339, r57328, MPFR_RNDN);
        mpfr_sub(r57368, r57367, r57347, MPFR_RNDN);
        mpfr_mul(r57369, r57368, r57345, MPFR_RNDN);
        mpfr_sub(r57370, r57366, r57369, MPFR_RNDN);
        mpfr_mul(r57371, r57327, r57328, MPFR_RNDN);
        mpfr_mul(r57372, r57329, r57371, MPFR_RNDN);
        mpfr_add(r57373, r57370, r57372, MPFR_RNDN);
        if (mpfr_get_si(r57357, MPFR_RNDN)) { mpfr_set(r57374, r57362, MPFR_RNDN); } else { mpfr_set(r57374, r57373, MPFR_RNDN); };
        if (mpfr_get_si(r57337, MPFR_RNDN)) { mpfr_set(r57375, r57355, MPFR_RNDN); } else { mpfr_set(r57375, r57374, MPFR_RNDN); };
        return mpfr_get_d(r57375, MPFR_RNDN);
}

static mpfr_t r57376, r57377, r57378, r57379, r57380, r57381, r57382, r57383, r57384, r57385, r57386, r57387, r57388, r57389, r57390, r57391, r57392, r57393, r57394, r57395, r57396, r57397, r57398, r57399, r57400, r57401, r57402, r57403, r57404, r57405, r57406, r57407, r57408, r57409, r57410, r57411, r57412, r57413, r57414, r57415, r57416, r57417, r57418, r57419, r57420, r57421, r57422, r57423, r57424;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r57376);
        mpfr_init(r57377);
        mpfr_init(r57378);
        mpfr_init(r57379);
        mpfr_init(r57380);
        mpfr_init(r57381);
        mpfr_init(r57382);
        mpfr_init(r57383);
        mpfr_init(r57384);
        mpfr_init_set_str(r57385, "-2.806410457137367e+194", 10, MPFR_RNDN);
        mpfr_init(r57386);
        mpfr_init(r57387);
        mpfr_init(r57388);
        mpfr_init(r57389);
        mpfr_init(r57390);
        mpfr_init(r57391);
        mpfr_init(r57392);
        mpfr_init(r57393);
        mpfr_init(r57394);
        mpfr_init(r57395);
        mpfr_init(r57396);
        mpfr_init(r57397);
        mpfr_init(r57398);
        mpfr_init(r57399);
        mpfr_init(r57400);
        mpfr_init(r57401);
        mpfr_init(r57402);
        mpfr_init(r57403);
        mpfr_init(r57404);
        mpfr_init_set_str(r57405, "1.3394891645195909e+259", 10, MPFR_RNDN);
        mpfr_init(r57406);
        mpfr_init(r57407);
        mpfr_init(r57408);
        mpfr_init(r57409);
        mpfr_init(r57410);
        mpfr_init(r57411);
        mpfr_init(r57412);
        mpfr_init(r57413);
        mpfr_init(r57414);
        mpfr_init(r57415);
        mpfr_init(r57416);
        mpfr_init(r57417);
        mpfr_init(r57418);
        mpfr_init(r57419);
        mpfr_init(r57420);
        mpfr_init(r57421);
        mpfr_init(r57422);
        mpfr_init(r57423);
        mpfr_init(r57424);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        mpfr_set_d(r57376, j, MPFR_RNDN);
        mpfr_set_d(r57377, c, MPFR_RNDN);
        mpfr_set_d(r57378, a, MPFR_RNDN);
        mpfr_mul(r57379, r57377, r57378, MPFR_RNDN);
        mpfr_set_d(r57380, y, MPFR_RNDN);
        mpfr_set_d(r57381, i, MPFR_RNDN);
        mpfr_mul(r57382, r57380, r57381, MPFR_RNDN);
        mpfr_sub(r57383, r57379, r57382, MPFR_RNDN);
        mpfr_mul(r57384, r57376, r57383, MPFR_RNDN);
        ;
        mpfr_set_si(r57386, mpfr_cmp(r57384, r57385) <= 0, MPFR_RNDN);
        mpfr_set_d(r57387, x, MPFR_RNDN);
        mpfr_set_d(r57388, z, MPFR_RNDN);
        mpfr_mul(r57389, r57380, r57388, MPFR_RNDN);
        mpfr_set_d(r57390, t, MPFR_RNDN);
        mpfr_mul(r57391, r57390, r57378, MPFR_RNDN);
        mpfr_sub(r57392, r57389, r57391, MPFR_RNDN);
        mpfr_mul(r57393, r57387, r57392, MPFR_RNDN);
        mpfr_set_d(r57394, b, MPFR_RNDN);
        mpfr_mul(r57395, r57377, r57388, MPFR_RNDN);
        mpfr_mul(r57396, r57390, r57381, MPFR_RNDN);
        mpfr_sub(r57397, r57395, r57396, MPFR_RNDN);
        mpfr_mul(r57398, r57394, r57397, MPFR_RNDN);
        mpfr_sub(r57399, r57393, r57398, MPFR_RNDN);
        mpfr_cbrt(r57400, r57383, MPFR_RNDN);
        mpfr_mul(r57401, r57400, r57400, MPFR_RNDN);
        mpfr_mul(r57402, r57376, r57401, MPFR_RNDN);
        mpfr_mul(r57403, r57402, r57400, MPFR_RNDN);
        mpfr_add(r57404, r57399, r57403, MPFR_RNDN);
        ;
        mpfr_set_si(r57406, mpfr_cmp(r57384, r57405) <= 0, MPFR_RNDN);
        mpfr_mul(r57407, r57376, r57379, MPFR_RNDN);
        mpfr_add(r57408, r57399, r57407, MPFR_RNDN);
        mpfr_neg(r57409, r57382, MPFR_RNDN);
        mpfr_mul(r57410, r57376, r57409, MPFR_RNDN);
        mpfr_add(r57411, r57408, r57410, MPFR_RNDN);
        mpfr_mul(r57412, r57388, r57380, MPFR_RNDN);
        mpfr_mul(r57413, r57378, r57390, MPFR_RNDN);
        mpfr_sub(r57414, r57412, r57413, MPFR_RNDN);
        mpfr_mul(r57415, r57414, r57387, MPFR_RNDN);
        mpfr_mul(r57416, r57388, r57377, MPFR_RNDN);
        mpfr_sub(r57417, r57416, r57396, MPFR_RNDN);
        mpfr_mul(r57418, r57417, r57394, MPFR_RNDN);
        mpfr_sub(r57419, r57415, r57418, MPFR_RNDN);
        mpfr_mul(r57420, r57376, r57377, MPFR_RNDN);
        mpfr_mul(r57421, r57378, r57420, MPFR_RNDN);
        mpfr_add(r57422, r57419, r57421, MPFR_RNDN);
        if (mpfr_get_si(r57406, MPFR_RNDN)) { mpfr_set(r57423, r57411, MPFR_RNDN); } else { mpfr_set(r57423, r57422, MPFR_RNDN); };
        if (mpfr_get_si(r57386, MPFR_RNDN)) { mpfr_set(r57424, r57404, MPFR_RNDN); } else { mpfr_set(r57424, r57423, MPFR_RNDN); };
        return mpfr_get_d(r57424, MPFR_RNDN);
}

