#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 r55891 = x;
        float r55892 = y;
        float r55893 = z;
        float r55894 = r55892 * r55893;
        float r55895 = t;
        float r55896 = a;
        float r55897 = r55895 * r55896;
        float r55898 = r55894 - r55897;
        float r55899 = r55891 * r55898;
        float r55900 = b;
        float r55901 = c;
        float r55902 = r55901 * r55893;
        float r55903 = i;
        float r55904 = r55895 * r55903;
        float r55905 = r55902 - r55904;
        float r55906 = r55900 * r55905;
        float r55907 = r55899 - r55906;
        float r55908 = j;
        float r55909 = r55901 * r55896;
        float r55910 = r55892 * r55903;
        float r55911 = r55909 - r55910;
        float r55912 = r55908 * r55911;
        float r55913 = r55907 + r55912;
        return r55913;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r55914 = x;
        double r55915 = y;
        double r55916 = z;
        double r55917 = r55915 * r55916;
        double r55918 = t;
        double r55919 = a;
        double r55920 = r55918 * r55919;
        double r55921 = r55917 - r55920;
        double r55922 = r55914 * r55921;
        double r55923 = b;
        double r55924 = c;
        double r55925 = r55924 * r55916;
        double r55926 = i;
        double r55927 = r55918 * r55926;
        double r55928 = r55925 - r55927;
        double r55929 = r55923 * r55928;
        double r55930 = r55922 - r55929;
        double r55931 = j;
        double r55932 = r55924 * r55919;
        double r55933 = r55915 * r55926;
        double r55934 = r55932 - r55933;
        double r55935 = r55931 * r55934;
        double r55936 = r55930 + r55935;
        return r55936;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j) {
        float r55937 = x;
        float r55938 = y;
        float r55939 = z;
        float r55940 = r55938 * r55939;
        float r55941 = t;
        float r55942 = a;
        float r55943 = r55941 * r55942;
        float r55944 = r55940 - r55943;
        float r55945 = r55937 * r55944;
        float r55946 = b;
        float r55947 = c;
        float r55948 = r55947 * r55939;
        float r55949 = i;
        float r55950 = r55941 * r55949;
        float r55951 = r55948 - r55950;
        float r55952 = r55946 * r55951;
        float r55953 = r55945 - r55952;
        float r55954 = j;
        float r55955 = r55947 * r55942;
        float r55956 = r55954 * r55955;
        float r55957 = r55953 + r55956;
        float r55958 = r55938 * r55949;
        float r55959 = -r55958;
        float r55960 = r55954 * r55959;
        float r55961 = r55957 + r55960;
        return r55961;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r55962 = x;
        double r55963 = y;
        double r55964 = z;
        double r55965 = r55963 * r55964;
        double r55966 = t;
        double r55967 = a;
        double r55968 = r55966 * r55967;
        double r55969 = r55965 - r55968;
        double r55970 = r55962 * r55969;
        double r55971 = b;
        double r55972 = c;
        double r55973 = r55972 * r55964;
        double r55974 = i;
        double r55975 = r55966 * r55974;
        double r55976 = r55973 - r55975;
        double r55977 = r55971 * r55976;
        double r55978 = r55970 - r55977;
        double r55979 = j;
        double r55980 = r55972 * r55967;
        double r55981 = r55979 * r55980;
        double r55982 = r55978 + r55981;
        double r55983 = r55963 * r55974;
        double r55984 = -r55983;
        double r55985 = r55979 * r55984;
        double r55986 = r55982 + r55985;
        return r55986;
}

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 r55987, r55988, r55989, r55990, r55991, r55992, r55993, r55994, r55995, r55996, r55997, r55998, r55999, r56000, r56001, r56002, r56003, r56004, r56005, r56006, r56007, r56008, r56009;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55987);
        mpfr_init(r55988);
        mpfr_init(r55989);
        mpfr_init(r55990);
        mpfr_init(r55991);
        mpfr_init(r55992);
        mpfr_init(r55993);
        mpfr_init(r55994);
        mpfr_init(r55995);
        mpfr_init(r55996);
        mpfr_init(r55997);
        mpfr_init(r55998);
        mpfr_init(r55999);
        mpfr_init(r56000);
        mpfr_init(r56001);
        mpfr_init(r56002);
        mpfr_init(r56003);
        mpfr_init(r56004);
        mpfr_init(r56005);
        mpfr_init(r56006);
        mpfr_init(r56007);
        mpfr_init(r56008);
        mpfr_init(r56009);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        mpfr_set_d(r55987, x, MPFR_RNDN);
        mpfr_set_d(r55988, y, MPFR_RNDN);
        mpfr_set_d(r55989, z, MPFR_RNDN);
        mpfr_mul(r55990, r55988, r55989, MPFR_RNDN);
        mpfr_set_d(r55991, t, MPFR_RNDN);
        mpfr_set_d(r55992, a, MPFR_RNDN);
        mpfr_mul(r55993, r55991, r55992, MPFR_RNDN);
        mpfr_sub(r55994, r55990, r55993, MPFR_RNDN);
        mpfr_mul(r55995, r55987, r55994, MPFR_RNDN);
        mpfr_set_d(r55996, b, MPFR_RNDN);
        mpfr_set_d(r55997, c, MPFR_RNDN);
        mpfr_mul(r55998, r55997, r55989, MPFR_RNDN);
        mpfr_set_d(r55999, i, MPFR_RNDN);
        mpfr_mul(r56000, r55991, r55999, MPFR_RNDN);
        mpfr_sub(r56001, r55998, r56000, MPFR_RNDN);
        mpfr_mul(r56002, r55996, r56001, MPFR_RNDN);
        mpfr_sub(r56003, r55995, r56002, MPFR_RNDN);
        mpfr_set_d(r56004, j, MPFR_RNDN);
        mpfr_mul(r56005, r55997, r55992, MPFR_RNDN);
        mpfr_mul(r56006, r55988, r55999, MPFR_RNDN);
        mpfr_sub(r56007, r56005, r56006, MPFR_RNDN);
        mpfr_mul(r56008, r56004, r56007, MPFR_RNDN);
        mpfr_add(r56009, r56003, r56008, MPFR_RNDN);
        return mpfr_get_d(r56009, MPFR_RNDN);
}

static mpfr_t r56010, r56011, r56012, r56013, r56014, r56015, r56016, r56017, r56018, r56019, r56020, r56021, r56022, r56023, r56024, r56025, r56026, r56027, r56028, r56029, r56030, r56031, r56032, r56033, r56034;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56010);
        mpfr_init(r56011);
        mpfr_init(r56012);
        mpfr_init(r56013);
        mpfr_init(r56014);
        mpfr_init(r56015);
        mpfr_init(r56016);
        mpfr_init(r56017);
        mpfr_init(r56018);
        mpfr_init(r56019);
        mpfr_init(r56020);
        mpfr_init(r56021);
        mpfr_init(r56022);
        mpfr_init(r56023);
        mpfr_init(r56024);
        mpfr_init(r56025);
        mpfr_init(r56026);
        mpfr_init(r56027);
        mpfr_init(r56028);
        mpfr_init(r56029);
        mpfr_init(r56030);
        mpfr_init(r56031);
        mpfr_init(r56032);
        mpfr_init(r56033);
        mpfr_init(r56034);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        mpfr_set_d(r56010, x, MPFR_RNDN);
        mpfr_set_d(r56011, y, MPFR_RNDN);
        mpfr_set_d(r56012, z, MPFR_RNDN);
        mpfr_mul(r56013, r56011, r56012, MPFR_RNDN);
        mpfr_set_d(r56014, t, MPFR_RNDN);
        mpfr_set_d(r56015, a, MPFR_RNDN);
        mpfr_mul(r56016, r56014, r56015, MPFR_RNDN);
        mpfr_sub(r56017, r56013, r56016, MPFR_RNDN);
        mpfr_mul(r56018, r56010, r56017, MPFR_RNDN);
        mpfr_set_d(r56019, b, MPFR_RNDN);
        mpfr_set_d(r56020, c, MPFR_RNDN);
        mpfr_mul(r56021, r56020, r56012, MPFR_RNDN);
        mpfr_set_d(r56022, i, MPFR_RNDN);
        mpfr_mul(r56023, r56014, r56022, MPFR_RNDN);
        mpfr_sub(r56024, r56021, r56023, MPFR_RNDN);
        mpfr_mul(r56025, r56019, r56024, MPFR_RNDN);
        mpfr_sub(r56026, r56018, r56025, MPFR_RNDN);
        mpfr_set_d(r56027, j, MPFR_RNDN);
        mpfr_mul(r56028, r56020, r56015, MPFR_RNDN);
        mpfr_mul(r56029, r56027, r56028, MPFR_RNDN);
        mpfr_add(r56030, r56026, r56029, MPFR_RNDN);
        mpfr_mul(r56031, r56011, r56022, MPFR_RNDN);
        mpfr_neg(r56032, r56031, MPFR_RNDN);
        mpfr_mul(r56033, r56027, r56032, MPFR_RNDN);
        mpfr_add(r56034, r56030, r56033, MPFR_RNDN);
        return mpfr_get_d(r56034, MPFR_RNDN);
}

static mpfr_t r56035, r56036, r56037, r56038, r56039, r56040, r56041, r56042, r56043, r56044, r56045, r56046, r56047, r56048, r56049, r56050, r56051, r56052, r56053, r56054, r56055, r56056, r56057, r56058, r56059;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56035);
        mpfr_init(r56036);
        mpfr_init(r56037);
        mpfr_init(r56038);
        mpfr_init(r56039);
        mpfr_init(r56040);
        mpfr_init(r56041);
        mpfr_init(r56042);
        mpfr_init(r56043);
        mpfr_init(r56044);
        mpfr_init(r56045);
        mpfr_init(r56046);
        mpfr_init(r56047);
        mpfr_init(r56048);
        mpfr_init(r56049);
        mpfr_init(r56050);
        mpfr_init(r56051);
        mpfr_init(r56052);
        mpfr_init(r56053);
        mpfr_init(r56054);
        mpfr_init(r56055);
        mpfr_init(r56056);
        mpfr_init(r56057);
        mpfr_init(r56058);
        mpfr_init(r56059);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        mpfr_set_d(r56035, x, MPFR_RNDN);
        mpfr_set_d(r56036, y, MPFR_RNDN);
        mpfr_set_d(r56037, z, MPFR_RNDN);
        mpfr_mul(r56038, r56036, r56037, MPFR_RNDN);
        mpfr_set_d(r56039, t, MPFR_RNDN);
        mpfr_set_d(r56040, a, MPFR_RNDN);
        mpfr_mul(r56041, r56039, r56040, MPFR_RNDN);
        mpfr_sub(r56042, r56038, r56041, MPFR_RNDN);
        mpfr_mul(r56043, r56035, r56042, MPFR_RNDN);
        mpfr_set_d(r56044, b, MPFR_RNDN);
        mpfr_set_d(r56045, c, MPFR_RNDN);
        mpfr_mul(r56046, r56045, r56037, MPFR_RNDN);
        mpfr_set_d(r56047, i, MPFR_RNDN);
        mpfr_mul(r56048, r56039, r56047, MPFR_RNDN);
        mpfr_sub(r56049, r56046, r56048, MPFR_RNDN);
        mpfr_mul(r56050, r56044, r56049, MPFR_RNDN);
        mpfr_sub(r56051, r56043, r56050, MPFR_RNDN);
        mpfr_set_d(r56052, j, MPFR_RNDN);
        mpfr_mul(r56053, r56045, r56040, MPFR_RNDN);
        mpfr_mul(r56054, r56052, r56053, MPFR_RNDN);
        mpfr_add(r56055, r56051, r56054, MPFR_RNDN);
        mpfr_mul(r56056, r56036, r56047, MPFR_RNDN);
        mpfr_neg(r56057, r56056, MPFR_RNDN);
        mpfr_mul(r56058, r56052, r56057, MPFR_RNDN);
        mpfr_add(r56059, r56055, r56058, MPFR_RNDN);
        return mpfr_get_d(r56059, MPFR_RNDN);
}

