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

char *name = "Linear.Matrix:det33 from linear-1.19.1.3";

double f_if(float x, float y, float z, float t, float a, float b, float c, float i, float j) {
        float r45199 = x;
        float r45200 = y;
        float r45201 = z;
        float r45202 = r45200 * r45201;
        float r45203 = t;
        float r45204 = a;
        float r45205 = r45203 * r45204;
        float r45206 = r45202 - r45205;
        float r45207 = r45199 * r45206;
        float r45208 = b;
        float r45209 = c;
        float r45210 = r45209 * r45201;
        float r45211 = i;
        float r45212 = r45211 * r45204;
        float r45213 = r45210 - r45212;
        float r45214 = r45208 * r45213;
        float r45215 = r45207 - r45214;
        float r45216 = j;
        float r45217 = r45209 * r45203;
        float r45218 = r45211 * r45200;
        float r45219 = r45217 - r45218;
        float r45220 = r45216 * r45219;
        float r45221 = r45215 + r45220;
        return r45221;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r45222 = x;
        double r45223 = y;
        double r45224 = z;
        double r45225 = r45223 * r45224;
        double r45226 = t;
        double r45227 = a;
        double r45228 = r45226 * r45227;
        double r45229 = r45225 - r45228;
        double r45230 = r45222 * r45229;
        double r45231 = b;
        double r45232 = c;
        double r45233 = r45232 * r45224;
        double r45234 = i;
        double r45235 = r45234 * r45227;
        double r45236 = r45233 - r45235;
        double r45237 = r45231 * r45236;
        double r45238 = r45230 - r45237;
        double r45239 = j;
        double r45240 = r45232 * r45226;
        double r45241 = r45234 * r45223;
        double r45242 = r45240 - r45241;
        double r45243 = r45239 * r45242;
        double r45244 = r45238 + r45243;
        return r45244;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j) {
        float r45245 = a;
        float r45246 = 2.3403364003398004e+122f;
        bool r45247 = r45245 <= r45246;
        float r45248 = x;
        float r45249 = y;
        float r45250 = z;
        float r45251 = r45249 * r45250;
        float r45252 = t;
        float r45253 = r45252 * r45245;
        float r45254 = r45251 - r45253;
        float r45255 = r45248 * r45254;
        float r45256 = b;
        float r45257 = c;
        float r45258 = r45257 * r45250;
        float r45259 = i;
        float r45260 = r45259 * r45245;
        float r45261 = r45258 - r45260;
        float r45262 = r45256 * r45261;
        float r45263 = r45255 - r45262;
        float r45264 = j;
        float r45265 = r45257 * r45252;
        float r45266 = r45259 * r45249;
        float r45267 = r45265 - r45266;
        float r45268 = r45264 * r45267;
        float r45269 = cbrt(r45268);
        float r45270 = r45269 * (r45269 * r45269);
        float r45271 = r45263 + r45270;
        float r45272 = r45252 * r45257;
        float r45273 = r45249 * r45259;
        float r45274 = r45272 - r45273;
        float r45275 = r45264 * r45274;
        float r45276 = r45256 * r45250;
        float r45277 = r45276 * r45257;
        float r45278 = r45275 - r45277;
        float r45279 = r45256 * r45259;
        float r45280 = r45248 * r45252;
        float r45281 = r45279 - r45280;
        float r45282 = r45281 * r45245;
        float r45283 = r45278 + r45282;
        float r45284 = r45247 ? r45271 : r45283;
        return r45284;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r45285 = a;
        double r45286 = 2.3403364003398004e+122;
        bool r45287 = r45285 <= r45286;
        double r45288 = x;
        double r45289 = y;
        double r45290 = z;
        double r45291 = r45289 * r45290;
        double r45292 = t;
        double r45293 = r45292 * r45285;
        double r45294 = r45291 - r45293;
        double r45295 = r45288 * r45294;
        double r45296 = b;
        double r45297 = c;
        double r45298 = r45297 * r45290;
        double r45299 = i;
        double r45300 = r45299 * r45285;
        double r45301 = r45298 - r45300;
        double r45302 = r45296 * r45301;
        double r45303 = r45295 - r45302;
        double r45304 = j;
        double r45305 = r45297 * r45292;
        double r45306 = r45299 * r45289;
        double r45307 = r45305 - r45306;
        double r45308 = r45304 * r45307;
        double r45309 = cbrt(r45308);
        double r45310 = r45309 * (r45309 * r45309);
        double r45311 = r45303 + r45310;
        double r45312 = r45292 * r45297;
        double r45313 = r45289 * r45299;
        double r45314 = r45312 - r45313;
        double r45315 = r45304 * r45314;
        double r45316 = r45296 * r45290;
        double r45317 = r45316 * r45297;
        double r45318 = r45315 - r45317;
        double r45319 = r45296 * r45299;
        double r45320 = r45288 * r45292;
        double r45321 = r45319 - r45320;
        double r45322 = r45321 * r45285;
        double r45323 = r45318 + r45322;
        double r45324 = r45287 ? r45311 : r45323;
        return r45324;
}

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 r45325, r45326, r45327, r45328, r45329, r45330, r45331, r45332, r45333, r45334, r45335, r45336, r45337, r45338, r45339, r45340, r45341, r45342, r45343, r45344, r45345, r45346, r45347;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r45325);
        mpfr_init(r45326);
        mpfr_init(r45327);
        mpfr_init(r45328);
        mpfr_init(r45329);
        mpfr_init(r45330);
        mpfr_init(r45331);
        mpfr_init(r45332);
        mpfr_init(r45333);
        mpfr_init(r45334);
        mpfr_init(r45335);
        mpfr_init(r45336);
        mpfr_init(r45337);
        mpfr_init(r45338);
        mpfr_init(r45339);
        mpfr_init(r45340);
        mpfr_init(r45341);
        mpfr_init(r45342);
        mpfr_init(r45343);
        mpfr_init(r45344);
        mpfr_init(r45345);
        mpfr_init(r45346);
        mpfr_init(r45347);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        mpfr_set_d(r45325, x, MPFR_RNDN);
        mpfr_set_d(r45326, y, MPFR_RNDN);
        mpfr_set_d(r45327, z, MPFR_RNDN);
        mpfr_mul(r45328, r45326, r45327, MPFR_RNDN);
        mpfr_set_d(r45329, t, MPFR_RNDN);
        mpfr_set_d(r45330, a, MPFR_RNDN);
        mpfr_mul(r45331, r45329, r45330, MPFR_RNDN);
        mpfr_sub(r45332, r45328, r45331, MPFR_RNDN);
        mpfr_mul(r45333, r45325, r45332, MPFR_RNDN);
        mpfr_set_d(r45334, b, MPFR_RNDN);
        mpfr_set_d(r45335, c, MPFR_RNDN);
        mpfr_mul(r45336, r45335, r45327, MPFR_RNDN);
        mpfr_set_d(r45337, i, MPFR_RNDN);
        mpfr_mul(r45338, r45337, r45330, MPFR_RNDN);
        mpfr_sub(r45339, r45336, r45338, MPFR_RNDN);
        mpfr_mul(r45340, r45334, r45339, MPFR_RNDN);
        mpfr_sub(r45341, r45333, r45340, MPFR_RNDN);
        mpfr_set_d(r45342, j, MPFR_RNDN);
        mpfr_mul(r45343, r45335, r45329, MPFR_RNDN);
        mpfr_mul(r45344, r45337, r45326, MPFR_RNDN);
        mpfr_sub(r45345, r45343, r45344, MPFR_RNDN);
        mpfr_mul(r45346, r45342, r45345, MPFR_RNDN);
        mpfr_add(r45347, r45341, r45346, MPFR_RNDN);
        return mpfr_get_d(r45347, MPFR_RNDN);
}

static mpfr_t r45348, r45349, r45350, r45351, r45352, r45353, r45354, r45355, r45356, r45357, r45358, r45359, r45360, r45361, r45362, r45363, r45364, r45365, r45366, r45367, r45368, r45369, r45370, r45371, r45372, r45373, r45374, r45375, r45376, r45377, r45378, r45379, r45380, r45381, r45382, r45383, r45384, r45385, r45386, r45387;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r45348);
        mpfr_init_set_str(r45349, "2.3403364003398004e+122", 10, MPFR_RNDN);
        mpfr_init(r45350);
        mpfr_init(r45351);
        mpfr_init(r45352);
        mpfr_init(r45353);
        mpfr_init(r45354);
        mpfr_init(r45355);
        mpfr_init(r45356);
        mpfr_init(r45357);
        mpfr_init(r45358);
        mpfr_init(r45359);
        mpfr_init(r45360);
        mpfr_init(r45361);
        mpfr_init(r45362);
        mpfr_init(r45363);
        mpfr_init(r45364);
        mpfr_init(r45365);
        mpfr_init(r45366);
        mpfr_init(r45367);
        mpfr_init(r45368);
        mpfr_init(r45369);
        mpfr_init(r45370);
        mpfr_init(r45371);
        mpfr_init(r45372);
        mpfr_init(r45373);
        mpfr_init(r45374);
        mpfr_init(r45375);
        mpfr_init(r45376);
        mpfr_init(r45377);
        mpfr_init(r45378);
        mpfr_init(r45379);
        mpfr_init(r45380);
        mpfr_init(r45381);
        mpfr_init(r45382);
        mpfr_init(r45383);
        mpfr_init(r45384);
        mpfr_init(r45385);
        mpfr_init(r45386);
        mpfr_init(r45387);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        mpfr_set_d(r45348, a, MPFR_RNDN);
        ;
        mpfr_set_si(r45350, mpfr_cmp(r45348, r45349) <= 0, MPFR_RNDN);
        mpfr_set_d(r45351, x, MPFR_RNDN);
        mpfr_set_d(r45352, y, MPFR_RNDN);
        mpfr_set_d(r45353, z, MPFR_RNDN);
        mpfr_mul(r45354, r45352, r45353, MPFR_RNDN);
        mpfr_set_d(r45355, t, MPFR_RNDN);
        mpfr_mul(r45356, r45355, r45348, MPFR_RNDN);
        mpfr_sub(r45357, r45354, r45356, MPFR_RNDN);
        mpfr_mul(r45358, r45351, r45357, MPFR_RNDN);
        mpfr_set_d(r45359, b, MPFR_RNDN);
        mpfr_set_d(r45360, c, MPFR_RNDN);
        mpfr_mul(r45361, r45360, r45353, MPFR_RNDN);
        mpfr_set_d(r45362, i, MPFR_RNDN);
        mpfr_mul(r45363, r45362, r45348, MPFR_RNDN);
        mpfr_sub(r45364, r45361, r45363, MPFR_RNDN);
        mpfr_mul(r45365, r45359, r45364, MPFR_RNDN);
        mpfr_sub(r45366, r45358, r45365, MPFR_RNDN);
        mpfr_set_d(r45367, j, MPFR_RNDN);
        mpfr_mul(r45368, r45360, r45355, MPFR_RNDN);
        mpfr_mul(r45369, r45362, r45352, MPFR_RNDN);
        mpfr_sub(r45370, r45368, r45369, MPFR_RNDN);
        mpfr_mul(r45371, r45367, r45370, MPFR_RNDN);
        mpfr_cbrt(r45372, r45371, MPFR_RNDN);
        mpfr_mul(r45373, r45372, r45372, MPFR_RNDN); mpfr_mul(r45373, r45373, r45372, MPFR_RNDN);
        mpfr_add(r45374, r45366, r45373, MPFR_RNDN);
        mpfr_mul(r45375, r45355, r45360, MPFR_RNDN);
        mpfr_mul(r45376, r45352, r45362, MPFR_RNDN);
        mpfr_sub(r45377, r45375, r45376, MPFR_RNDN);
        mpfr_mul(r45378, r45367, r45377, MPFR_RNDN);
        mpfr_mul(r45379, r45359, r45353, MPFR_RNDN);
        mpfr_mul(r45380, r45379, r45360, MPFR_RNDN);
        mpfr_sub(r45381, r45378, r45380, MPFR_RNDN);
        mpfr_mul(r45382, r45359, r45362, MPFR_RNDN);
        mpfr_mul(r45383, r45351, r45355, MPFR_RNDN);
        mpfr_sub(r45384, r45382, r45383, MPFR_RNDN);
        mpfr_mul(r45385, r45384, r45348, MPFR_RNDN);
        mpfr_add(r45386, r45381, r45385, MPFR_RNDN);
        if (mpfr_get_si(r45350, MPFR_RNDN)) { mpfr_set(r45387, r45374, MPFR_RNDN); } else { mpfr_set(r45387, r45386, MPFR_RNDN); };
        return mpfr_get_d(r45387, MPFR_RNDN);
}

static mpfr_t r45388, r45389, r45390, r45391, r45392, r45393, r45394, r45395, r45396, r45397, r45398, r45399, r45400, r45401, r45402, r45403, r45404, r45405, r45406, r45407, r45408, r45409, r45410, r45411, r45412, r45413, r45414, r45415, r45416, r45417, r45418, r45419, r45420, r45421, r45422, r45423, r45424, r45425, r45426, r45427;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r45388);
        mpfr_init_set_str(r45389, "2.3403364003398004e+122", 10, MPFR_RNDN);
        mpfr_init(r45390);
        mpfr_init(r45391);
        mpfr_init(r45392);
        mpfr_init(r45393);
        mpfr_init(r45394);
        mpfr_init(r45395);
        mpfr_init(r45396);
        mpfr_init(r45397);
        mpfr_init(r45398);
        mpfr_init(r45399);
        mpfr_init(r45400);
        mpfr_init(r45401);
        mpfr_init(r45402);
        mpfr_init(r45403);
        mpfr_init(r45404);
        mpfr_init(r45405);
        mpfr_init(r45406);
        mpfr_init(r45407);
        mpfr_init(r45408);
        mpfr_init(r45409);
        mpfr_init(r45410);
        mpfr_init(r45411);
        mpfr_init(r45412);
        mpfr_init(r45413);
        mpfr_init(r45414);
        mpfr_init(r45415);
        mpfr_init(r45416);
        mpfr_init(r45417);
        mpfr_init(r45418);
        mpfr_init(r45419);
        mpfr_init(r45420);
        mpfr_init(r45421);
        mpfr_init(r45422);
        mpfr_init(r45423);
        mpfr_init(r45424);
        mpfr_init(r45425);
        mpfr_init(r45426);
        mpfr_init(r45427);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        mpfr_set_d(r45388, a, MPFR_RNDN);
        ;
        mpfr_set_si(r45390, mpfr_cmp(r45388, r45389) <= 0, MPFR_RNDN);
        mpfr_set_d(r45391, x, MPFR_RNDN);
        mpfr_set_d(r45392, y, MPFR_RNDN);
        mpfr_set_d(r45393, z, MPFR_RNDN);
        mpfr_mul(r45394, r45392, r45393, MPFR_RNDN);
        mpfr_set_d(r45395, t, MPFR_RNDN);
        mpfr_mul(r45396, r45395, r45388, MPFR_RNDN);
        mpfr_sub(r45397, r45394, r45396, MPFR_RNDN);
        mpfr_mul(r45398, r45391, r45397, MPFR_RNDN);
        mpfr_set_d(r45399, b, MPFR_RNDN);
        mpfr_set_d(r45400, c, MPFR_RNDN);
        mpfr_mul(r45401, r45400, r45393, MPFR_RNDN);
        mpfr_set_d(r45402, i, MPFR_RNDN);
        mpfr_mul(r45403, r45402, r45388, MPFR_RNDN);
        mpfr_sub(r45404, r45401, r45403, MPFR_RNDN);
        mpfr_mul(r45405, r45399, r45404, MPFR_RNDN);
        mpfr_sub(r45406, r45398, r45405, MPFR_RNDN);
        mpfr_set_d(r45407, j, MPFR_RNDN);
        mpfr_mul(r45408, r45400, r45395, MPFR_RNDN);
        mpfr_mul(r45409, r45402, r45392, MPFR_RNDN);
        mpfr_sub(r45410, r45408, r45409, MPFR_RNDN);
        mpfr_mul(r45411, r45407, r45410, MPFR_RNDN);
        mpfr_cbrt(r45412, r45411, MPFR_RNDN);
        mpfr_mul(r45413, r45412, r45412, MPFR_RNDN); mpfr_mul(r45413, r45413, r45412, MPFR_RNDN);
        mpfr_add(r45414, r45406, r45413, MPFR_RNDN);
        mpfr_mul(r45415, r45395, r45400, MPFR_RNDN);
        mpfr_mul(r45416, r45392, r45402, MPFR_RNDN);
        mpfr_sub(r45417, r45415, r45416, MPFR_RNDN);
        mpfr_mul(r45418, r45407, r45417, MPFR_RNDN);
        mpfr_mul(r45419, r45399, r45393, MPFR_RNDN);
        mpfr_mul(r45420, r45419, r45400, MPFR_RNDN);
        mpfr_sub(r45421, r45418, r45420, MPFR_RNDN);
        mpfr_mul(r45422, r45399, r45402, MPFR_RNDN);
        mpfr_mul(r45423, r45391, r45395, MPFR_RNDN);
        mpfr_sub(r45424, r45422, r45423, MPFR_RNDN);
        mpfr_mul(r45425, r45424, r45388, MPFR_RNDN);
        mpfr_add(r45426, r45421, r45425, MPFR_RNDN);
        if (mpfr_get_si(r45390, MPFR_RNDN)) { mpfr_set(r45427, r45414, MPFR_RNDN); } else { mpfr_set(r45427, r45426, MPFR_RNDN); };
        return mpfr_get_d(r45427, MPFR_RNDN);
}

