#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 r57094 = x;
        float r57095 = y;
        float r57096 = z;
        float r57097 = r57095 * r57096;
        float r57098 = t;
        float r57099 = a;
        float r57100 = r57098 * r57099;
        float r57101 = r57097 - r57100;
        float r57102 = r57094 * r57101;
        float r57103 = b;
        float r57104 = c;
        float r57105 = r57104 * r57096;
        float r57106 = i;
        float r57107 = r57098 * r57106;
        float r57108 = r57105 - r57107;
        float r57109 = r57103 * r57108;
        float r57110 = r57102 - r57109;
        float r57111 = j;
        float r57112 = r57104 * r57099;
        float r57113 = r57095 * r57106;
        float r57114 = r57112 - r57113;
        float r57115 = r57111 * r57114;
        float r57116 = r57110 + r57115;
        return r57116;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r57117 = x;
        double r57118 = y;
        double r57119 = z;
        double r57120 = r57118 * r57119;
        double r57121 = t;
        double r57122 = a;
        double r57123 = r57121 * r57122;
        double r57124 = r57120 - r57123;
        double r57125 = r57117 * r57124;
        double r57126 = b;
        double r57127 = c;
        double r57128 = r57127 * r57119;
        double r57129 = i;
        double r57130 = r57121 * r57129;
        double r57131 = r57128 - r57130;
        double r57132 = r57126 * r57131;
        double r57133 = r57125 - r57132;
        double r57134 = j;
        double r57135 = r57127 * r57122;
        double r57136 = r57118 * r57129;
        double r57137 = r57135 - r57136;
        double r57138 = r57134 * r57137;
        double r57139 = r57133 + r57138;
        return r57139;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j) {
        float r57140 = j;
        float r57141 = -4.177941133753861e+104;
        bool r57142 = r57140 <= r57141;
        float r57143 = x;
        float r57144 = y;
        float r57145 = z;
        float r57146 = r57144 * r57145;
        float r57147 = t;
        float r57148 = a;
        float r57149 = r57147 * r57148;
        float r57150 = r57146 - r57149;
        float r57151 = r57143 * r57150;
        float r57152 = b;
        float r57153 = c;
        float r57154 = r57153 * r57145;
        float r57155 = i;
        float r57156 = r57147 * r57155;
        float r57157 = r57154 - r57156;
        float r57158 = r57152 * r57157;
        float r57159 = r57151 - r57158;
        float r57160 = r57153 * r57148;
        float r57161 = r57144 * r57155;
        float r57162 = r57160 - r57161;
        float r57163 = r57140 * r57162;
        float r57164 = cbrt(r57163);
        float r57165 = r57164 * r57164;
        float r57166 = r57165 * r57164;
        float r57167 = r57159 + r57166;
        float r57168 = 8.402751868792608e+31;
        bool r57169 = r57140 <= r57168;
        float r57170 = r57145 * r57144;
        float r57171 = r57148 * r57147;
        float r57172 = r57170 - r57171;
        float r57173 = r57172 * r57143;
        float r57174 = r57145 * r57153;
        float r57175 = r57174 - r57156;
        float r57176 = r57175 * r57152;
        float r57177 = r57173 - r57176;
        float r57178 = r57148 * r57140;
        float r57179 = r57178 * r57153;
        float r57180 = -r57144;
        float r57181 = r57140 * r57155;
        float r57182 = r57180 * r57181;
        float r57183 = r57179 + r57182;
        float r57184 = r57177 + r57183;
        float r57185 = r57169 ? r57184 : r57167;
        float r57186 = r57142 ? r57167 : r57185;
        return r57186;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r57187 = j;
        double r57188 = -4.177941133753861e+104;
        bool r57189 = r57187 <= r57188;
        double r57190 = x;
        double r57191 = y;
        double r57192 = z;
        double r57193 = r57191 * r57192;
        double r57194 = t;
        double r57195 = a;
        double r57196 = r57194 * r57195;
        double r57197 = r57193 - r57196;
        double r57198 = r57190 * r57197;
        double r57199 = b;
        double r57200 = c;
        double r57201 = r57200 * r57192;
        double r57202 = i;
        double r57203 = r57194 * r57202;
        double r57204 = r57201 - r57203;
        double r57205 = r57199 * r57204;
        double r57206 = r57198 - r57205;
        double r57207 = r57200 * r57195;
        double r57208 = r57191 * r57202;
        double r57209 = r57207 - r57208;
        double r57210 = r57187 * r57209;
        double r57211 = cbrt(r57210);
        double r57212 = r57211 * r57211;
        double r57213 = r57212 * r57211;
        double r57214 = r57206 + r57213;
        double r57215 = 8.402751868792608e+31;
        bool r57216 = r57187 <= r57215;
        double r57217 = r57192 * r57191;
        double r57218 = r57195 * r57194;
        double r57219 = r57217 - r57218;
        double r57220 = r57219 * r57190;
        double r57221 = r57192 * r57200;
        double r57222 = r57221 - r57203;
        double r57223 = r57222 * r57199;
        double r57224 = r57220 - r57223;
        double r57225 = r57195 * r57187;
        double r57226 = r57225 * r57200;
        double r57227 = -r57191;
        double r57228 = r57187 * r57202;
        double r57229 = r57227 * r57228;
        double r57230 = r57226 + r57229;
        double r57231 = r57224 + r57230;
        double r57232 = r57216 ? r57231 : r57214;
        double r57233 = r57189 ? r57214 : r57232;
        return r57233;
}

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 r57234, r57235, r57236, r57237, r57238, r57239, r57240, r57241, r57242, r57243, r57244, r57245, r57246, r57247, r57248, r57249, r57250, r57251, r57252, r57253, r57254, r57255, r57256;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r57234);
        mpfr_init(r57235);
        mpfr_init(r57236);
        mpfr_init(r57237);
        mpfr_init(r57238);
        mpfr_init(r57239);
        mpfr_init(r57240);
        mpfr_init(r57241);
        mpfr_init(r57242);
        mpfr_init(r57243);
        mpfr_init(r57244);
        mpfr_init(r57245);
        mpfr_init(r57246);
        mpfr_init(r57247);
        mpfr_init(r57248);
        mpfr_init(r57249);
        mpfr_init(r57250);
        mpfr_init(r57251);
        mpfr_init(r57252);
        mpfr_init(r57253);
        mpfr_init(r57254);
        mpfr_init(r57255);
        mpfr_init(r57256);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        mpfr_set_d(r57234, x, MPFR_RNDN);
        mpfr_set_d(r57235, y, MPFR_RNDN);
        mpfr_set_d(r57236, z, MPFR_RNDN);
        mpfr_mul(r57237, r57235, r57236, MPFR_RNDN);
        mpfr_set_d(r57238, t, MPFR_RNDN);
        mpfr_set_d(r57239, a, MPFR_RNDN);
        mpfr_mul(r57240, r57238, r57239, MPFR_RNDN);
        mpfr_sub(r57241, r57237, r57240, MPFR_RNDN);
        mpfr_mul(r57242, r57234, r57241, MPFR_RNDN);
        mpfr_set_d(r57243, b, MPFR_RNDN);
        mpfr_set_d(r57244, c, MPFR_RNDN);
        mpfr_mul(r57245, r57244, r57236, MPFR_RNDN);
        mpfr_set_d(r57246, i, MPFR_RNDN);
        mpfr_mul(r57247, r57238, r57246, MPFR_RNDN);
        mpfr_sub(r57248, r57245, r57247, MPFR_RNDN);
        mpfr_mul(r57249, r57243, r57248, MPFR_RNDN);
        mpfr_sub(r57250, r57242, r57249, MPFR_RNDN);
        mpfr_set_d(r57251, j, MPFR_RNDN);
        mpfr_mul(r57252, r57244, r57239, MPFR_RNDN);
        mpfr_mul(r57253, r57235, r57246, MPFR_RNDN);
        mpfr_sub(r57254, r57252, r57253, MPFR_RNDN);
        mpfr_mul(r57255, r57251, r57254, MPFR_RNDN);
        mpfr_add(r57256, r57250, r57255, MPFR_RNDN);
        return mpfr_get_d(r57256, MPFR_RNDN);
}

static mpfr_t r57257, r57258, r57259, r57260, r57261, r57262, r57263, r57264, r57265, r57266, r57267, r57268, r57269, r57270, r57271, r57272, r57273, r57274, r57275, r57276, r57277, r57278, r57279, r57280, r57281, r57282, r57283, r57284, r57285, r57286, r57287, r57288, r57289, r57290, r57291, r57292, r57293, r57294, r57295, r57296, r57297, r57298, r57299, r57300, r57301, r57302, r57303;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r57257);
        mpfr_init_set_str(r57258, "-4.177941133753861e+104", 10, MPFR_RNDN);
        mpfr_init(r57259);
        mpfr_init(r57260);
        mpfr_init(r57261);
        mpfr_init(r57262);
        mpfr_init(r57263);
        mpfr_init(r57264);
        mpfr_init(r57265);
        mpfr_init(r57266);
        mpfr_init(r57267);
        mpfr_init(r57268);
        mpfr_init(r57269);
        mpfr_init(r57270);
        mpfr_init(r57271);
        mpfr_init(r57272);
        mpfr_init(r57273);
        mpfr_init(r57274);
        mpfr_init(r57275);
        mpfr_init(r57276);
        mpfr_init(r57277);
        mpfr_init(r57278);
        mpfr_init(r57279);
        mpfr_init(r57280);
        mpfr_init(r57281);
        mpfr_init(r57282);
        mpfr_init(r57283);
        mpfr_init(r57284);
        mpfr_init_set_str(r57285, "8.402751868792608e+31", 10, MPFR_RNDN);
        mpfr_init(r57286);
        mpfr_init(r57287);
        mpfr_init(r57288);
        mpfr_init(r57289);
        mpfr_init(r57290);
        mpfr_init(r57291);
        mpfr_init(r57292);
        mpfr_init(r57293);
        mpfr_init(r57294);
        mpfr_init(r57295);
        mpfr_init(r57296);
        mpfr_init(r57297);
        mpfr_init(r57298);
        mpfr_init(r57299);
        mpfr_init(r57300);
        mpfr_init(r57301);
        mpfr_init(r57302);
        mpfr_init(r57303);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        mpfr_set_d(r57257, j, MPFR_RNDN);
        ;
        mpfr_set_si(r57259, mpfr_cmp(r57257, r57258) <= 0, MPFR_RNDN);
        mpfr_set_d(r57260, x, MPFR_RNDN);
        mpfr_set_d(r57261, y, MPFR_RNDN);
        mpfr_set_d(r57262, z, MPFR_RNDN);
        mpfr_mul(r57263, r57261, r57262, MPFR_RNDN);
        mpfr_set_d(r57264, t, MPFR_RNDN);
        mpfr_set_d(r57265, a, MPFR_RNDN);
        mpfr_mul(r57266, r57264, r57265, MPFR_RNDN);
        mpfr_sub(r57267, r57263, r57266, MPFR_RNDN);
        mpfr_mul(r57268, r57260, r57267, MPFR_RNDN);
        mpfr_set_d(r57269, b, MPFR_RNDN);
        mpfr_set_d(r57270, c, MPFR_RNDN);
        mpfr_mul(r57271, r57270, r57262, MPFR_RNDN);
        mpfr_set_d(r57272, i, MPFR_RNDN);
        mpfr_mul(r57273, r57264, r57272, MPFR_RNDN);
        mpfr_sub(r57274, r57271, r57273, MPFR_RNDN);
        mpfr_mul(r57275, r57269, r57274, MPFR_RNDN);
        mpfr_sub(r57276, r57268, r57275, MPFR_RNDN);
        mpfr_mul(r57277, r57270, r57265, MPFR_RNDN);
        mpfr_mul(r57278, r57261, r57272, MPFR_RNDN);
        mpfr_sub(r57279, r57277, r57278, MPFR_RNDN);
        mpfr_mul(r57280, r57257, r57279, MPFR_RNDN);
        mpfr_cbrt(r57281, r57280, MPFR_RNDN);
        mpfr_mul(r57282, r57281, r57281, MPFR_RNDN);
        mpfr_mul(r57283, r57282, r57281, MPFR_RNDN);
        mpfr_add(r57284, r57276, r57283, MPFR_RNDN);
        ;
        mpfr_set_si(r57286, mpfr_cmp(r57257, r57285) <= 0, MPFR_RNDN);
        mpfr_mul(r57287, r57262, r57261, MPFR_RNDN);
        mpfr_mul(r57288, r57265, r57264, MPFR_RNDN);
        mpfr_sub(r57289, r57287, r57288, MPFR_RNDN);
        mpfr_mul(r57290, r57289, r57260, MPFR_RNDN);
        mpfr_mul(r57291, r57262, r57270, MPFR_RNDN);
        mpfr_sub(r57292, r57291, r57273, MPFR_RNDN);
        mpfr_mul(r57293, r57292, r57269, MPFR_RNDN);
        mpfr_sub(r57294, r57290, r57293, MPFR_RNDN);
        mpfr_mul(r57295, r57265, r57257, MPFR_RNDN);
        mpfr_mul(r57296, r57295, r57270, MPFR_RNDN);
        mpfr_neg(r57297, r57261, MPFR_RNDN);
        mpfr_mul(r57298, r57257, r57272, MPFR_RNDN);
        mpfr_mul(r57299, r57297, r57298, MPFR_RNDN);
        mpfr_add(r57300, r57296, r57299, MPFR_RNDN);
        mpfr_add(r57301, r57294, r57300, MPFR_RNDN);
        if (mpfr_get_si(r57286, MPFR_RNDN)) { mpfr_set(r57302, r57301, MPFR_RNDN); } else { mpfr_set(r57302, r57284, MPFR_RNDN); };
        if (mpfr_get_si(r57259, MPFR_RNDN)) { mpfr_set(r57303, r57284, MPFR_RNDN); } else { mpfr_set(r57303, r57302, MPFR_RNDN); };
        return mpfr_get_d(r57303, MPFR_RNDN);
}

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, r57327, r57328, r57329, r57330, r57331, r57332, r57333, r57334, r57335, r57336, r57337, r57338, r57339, r57340, r57341, r57342, r57343, r57344, r57345, r57346, r57347, r57348, r57349, r57350;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r57304);
        mpfr_init_set_str(r57305, "-4.177941133753861e+104", 10, MPFR_RNDN);
        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);
        mpfr_init(r57327);
        mpfr_init(r57328);
        mpfr_init(r57329);
        mpfr_init(r57330);
        mpfr_init(r57331);
        mpfr_init_set_str(r57332, "8.402751868792608e+31", 10, MPFR_RNDN);
        mpfr_init(r57333);
        mpfr_init(r57334);
        mpfr_init(r57335);
        mpfr_init(r57336);
        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);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        mpfr_set_d(r57304, j, MPFR_RNDN);
        ;
        mpfr_set_si(r57306, mpfr_cmp(r57304, r57305) <= 0, MPFR_RNDN);
        mpfr_set_d(r57307, x, MPFR_RNDN);
        mpfr_set_d(r57308, y, MPFR_RNDN);
        mpfr_set_d(r57309, z, MPFR_RNDN);
        mpfr_mul(r57310, r57308, r57309, MPFR_RNDN);
        mpfr_set_d(r57311, t, MPFR_RNDN);
        mpfr_set_d(r57312, a, MPFR_RNDN);
        mpfr_mul(r57313, r57311, r57312, MPFR_RNDN);
        mpfr_sub(r57314, r57310, r57313, MPFR_RNDN);
        mpfr_mul(r57315, r57307, r57314, MPFR_RNDN);
        mpfr_set_d(r57316, b, MPFR_RNDN);
        mpfr_set_d(r57317, c, MPFR_RNDN);
        mpfr_mul(r57318, r57317, r57309, MPFR_RNDN);
        mpfr_set_d(r57319, i, MPFR_RNDN);
        mpfr_mul(r57320, r57311, r57319, MPFR_RNDN);
        mpfr_sub(r57321, r57318, r57320, MPFR_RNDN);
        mpfr_mul(r57322, r57316, r57321, MPFR_RNDN);
        mpfr_sub(r57323, r57315, r57322, MPFR_RNDN);
        mpfr_mul(r57324, r57317, r57312, MPFR_RNDN);
        mpfr_mul(r57325, r57308, r57319, MPFR_RNDN);
        mpfr_sub(r57326, r57324, r57325, MPFR_RNDN);
        mpfr_mul(r57327, r57304, r57326, MPFR_RNDN);
        mpfr_cbrt(r57328, r57327, MPFR_RNDN);
        mpfr_mul(r57329, r57328, r57328, MPFR_RNDN);
        mpfr_mul(r57330, r57329, r57328, MPFR_RNDN);
        mpfr_add(r57331, r57323, r57330, MPFR_RNDN);
        ;
        mpfr_set_si(r57333, mpfr_cmp(r57304, r57332) <= 0, MPFR_RNDN);
        mpfr_mul(r57334, r57309, r57308, MPFR_RNDN);
        mpfr_mul(r57335, r57312, r57311, MPFR_RNDN);
        mpfr_sub(r57336, r57334, r57335, MPFR_RNDN);
        mpfr_mul(r57337, r57336, r57307, MPFR_RNDN);
        mpfr_mul(r57338, r57309, r57317, MPFR_RNDN);
        mpfr_sub(r57339, r57338, r57320, MPFR_RNDN);
        mpfr_mul(r57340, r57339, r57316, MPFR_RNDN);
        mpfr_sub(r57341, r57337, r57340, MPFR_RNDN);
        mpfr_mul(r57342, r57312, r57304, MPFR_RNDN);
        mpfr_mul(r57343, r57342, r57317, MPFR_RNDN);
        mpfr_neg(r57344, r57308, MPFR_RNDN);
        mpfr_mul(r57345, r57304, r57319, MPFR_RNDN);
        mpfr_mul(r57346, r57344, r57345, MPFR_RNDN);
        mpfr_add(r57347, r57343, r57346, MPFR_RNDN);
        mpfr_add(r57348, r57341, r57347, MPFR_RNDN);
        if (mpfr_get_si(r57333, MPFR_RNDN)) { mpfr_set(r57349, r57348, MPFR_RNDN); } else { mpfr_set(r57349, r57331, MPFR_RNDN); };
        if (mpfr_get_si(r57306, MPFR_RNDN)) { mpfr_set(r57350, r57331, MPFR_RNDN); } else { mpfr_set(r57350, r57349, MPFR_RNDN); };
        return mpfr_get_d(r57350, MPFR_RNDN);
}

