\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - t \cdot i\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)
\begin{array}{l}
\mathbf{if}\;x \le -1917941933.5076723:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(b \cdot \left(c \cdot z\right) + \left(\sqrt[3]{b \cdot \left(-t \cdot i\right)} \cdot \sqrt[3]{b \cdot \left(-t \cdot i\right)}\right) \cdot \sqrt[3]{b \cdot \left(-t \cdot i\right)}\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\\
\mathbf{elif}\;x \le 7.0802173377050655 \cdot 10^{-137}:\\
\;\;\;\;\left(\left(\left(x \cdot y\right) \cdot z + 1 \cdot \left(-1 \cdot \left(a \cdot \left(x \cdot t\right)\right)\right)\right) - \left(b \cdot \left(c \cdot z\right) + b \cdot \left(-t \cdot i\right)\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(x \cdot \left(y \cdot z\right) + 1 \cdot \left(-1 \cdot \left(a \cdot \left(x \cdot t\right)\right)\right)\right) - \left(\left(b \cdot c\right) \cdot z + b \cdot \left(-t \cdot i\right)\right)\right) + j \cdot \left(c \cdot a - y \cdot i\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r970294 = x;
double r970295 = y;
double r970296 = z;
double r970297 = r970295 * r970296;
double r970298 = t;
double r970299 = a;
double r970300 = r970298 * r970299;
double r970301 = r970297 - r970300;
double r970302 = r970294 * r970301;
double r970303 = b;
double r970304 = c;
double r970305 = r970304 * r970296;
double r970306 = i;
double r970307 = r970298 * r970306;
double r970308 = r970305 - r970307;
double r970309 = r970303 * r970308;
double r970310 = r970302 - r970309;
double r970311 = j;
double r970312 = r970304 * r970299;
double r970313 = r970295 * r970306;
double r970314 = r970312 - r970313;
double r970315 = r970311 * r970314;
double r970316 = r970310 + r970315;
return r970316;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r970317 = x;
double r970318 = -1917941933.5076723;
bool r970319 = r970317 <= r970318;
double r970320 = y;
double r970321 = z;
double r970322 = r970320 * r970321;
double r970323 = t;
double r970324 = a;
double r970325 = r970323 * r970324;
double r970326 = r970322 - r970325;
double r970327 = r970317 * r970326;
double r970328 = b;
double r970329 = c;
double r970330 = r970329 * r970321;
double r970331 = r970328 * r970330;
double r970332 = i;
double r970333 = r970323 * r970332;
double r970334 = -r970333;
double r970335 = r970328 * r970334;
double r970336 = cbrt(r970335);
double r970337 = r970336 * r970336;
double r970338 = r970337 * r970336;
double r970339 = r970331 + r970338;
double r970340 = r970327 - r970339;
double r970341 = j;
double r970342 = r970329 * r970324;
double r970343 = r970320 * r970332;
double r970344 = r970342 - r970343;
double r970345 = r970341 * r970344;
double r970346 = r970340 + r970345;
double r970347 = 7.0802173377050655e-137;
bool r970348 = r970317 <= r970347;
double r970349 = r970317 * r970320;
double r970350 = r970349 * r970321;
double r970351 = 1.0;
double r970352 = -1.0;
double r970353 = r970317 * r970323;
double r970354 = r970324 * r970353;
double r970355 = r970352 * r970354;
double r970356 = r970351 * r970355;
double r970357 = r970350 + r970356;
double r970358 = r970331 + r970335;
double r970359 = r970357 - r970358;
double r970360 = r970359 + r970345;
double r970361 = r970317 * r970322;
double r970362 = r970361 + r970356;
double r970363 = r970328 * r970329;
double r970364 = r970363 * r970321;
double r970365 = r970364 + r970335;
double r970366 = r970362 - r970365;
double r970367 = r970366 + r970345;
double r970368 = r970348 ? r970360 : r970367;
double r970369 = r970319 ? r970346 : r970368;
return r970369;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b




Bits error versus c




Bits error versus i




Bits error versus j
Results
| Original | 12.4 |
|---|---|
| Target | 20.1 |
| Herbie | 10.4 |
if x < -1917941933.5076723Initial program 8.1
rmApplied sub-neg8.1
Applied distribute-lft-in8.1
rmApplied add-cube-cbrt8.2
if -1917941933.5076723 < x < 7.0802173377050655e-137Initial program 15.3
rmApplied sub-neg15.3
Applied distribute-lft-in15.3
rmApplied sub-neg15.3
Applied distribute-lft-in15.3
rmApplied *-un-lft-identity15.3
Applied associate-*l*15.3
Simplified12.6
rmApplied associate-*r*9.6
if 7.0802173377050655e-137 < x Initial program 10.5
rmApplied sub-neg10.5
Applied distribute-lft-in10.5
rmApplied sub-neg10.5
Applied distribute-lft-in10.5
rmApplied *-un-lft-identity10.5
Applied associate-*l*10.5
Simplified12.5
rmApplied associate-*r*12.8
Final simplification10.4
herbie shell --seed 2020089
(FPCore (x y z t a b c i j)
:name "Data.Colour.Matrix:determinant from colour-2.3.3, A"
:precision binary64
:herbie-target
(if (< x -1.469694296777705e-64) (+ (- (* x (- (* y z) (* t a))) (/ (* b (- (pow (* c z) 2) (pow (* t i) 2))) (+ (* c z) (* t i)))) (* j (- (* c a) (* y i)))) (if (< x 3.2113527362226803e-147) (- (* (- (* b i) (* x a)) t) (- (* z (* c b)) (* j (- (* c a) (* y i))))) (+ (- (* x (- (* y z) (* t a))) (/ (* b (- (pow (* c z) 2) (pow (* t i) 2))) (+ (* c z) (* t i)))) (* j (- (* c a) (* y i))))))
(+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* t i)))) (* j (- (* c a) (* y i)))))