\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)
\begin{array}{l}
\mathbf{if}\;x \le -1.3908394767462318 \cdot 10^{-09}:\\
\;\;\;\;\left(c \cdot t - i \cdot y\right) \cdot j + \left(\left(y \cdot z - a \cdot t\right) \cdot x - \sqrt[3]{z \cdot c - i \cdot a} \cdot \left(b \cdot \left(\sqrt[3]{z \cdot c - i \cdot a} \cdot \sqrt[3]{z \cdot c - i \cdot a}\right)\right)\right)\\
\mathbf{elif}\;x \le -1.1954740575885239 \cdot 10^{-185}:\\
\;\;\;\;\left(c \cdot t - i \cdot y\right) \cdot j + \left(\left(x \cdot \left(y \cdot z\right) - \left(x \cdot t\right) \cdot a\right) - \left(\left(i \cdot b\right) \cdot \left(-a\right) + \left(b \cdot z\right) \cdot c\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(c \cdot t - i \cdot y\right) \cdot j + \left(\left(\left(z \cdot x\right) \cdot y - \left(x \cdot t\right) \cdot a\right) - b \cdot \left(z \cdot c - i \cdot a\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r23791356 = x;
double r23791357 = y;
double r23791358 = z;
double r23791359 = r23791357 * r23791358;
double r23791360 = t;
double r23791361 = a;
double r23791362 = r23791360 * r23791361;
double r23791363 = r23791359 - r23791362;
double r23791364 = r23791356 * r23791363;
double r23791365 = b;
double r23791366 = c;
double r23791367 = r23791366 * r23791358;
double r23791368 = i;
double r23791369 = r23791368 * r23791361;
double r23791370 = r23791367 - r23791369;
double r23791371 = r23791365 * r23791370;
double r23791372 = r23791364 - r23791371;
double r23791373 = j;
double r23791374 = r23791366 * r23791360;
double r23791375 = r23791368 * r23791357;
double r23791376 = r23791374 - r23791375;
double r23791377 = r23791373 * r23791376;
double r23791378 = r23791372 + r23791377;
return r23791378;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r23791379 = x;
double r23791380 = -1.3908394767462318e-09;
bool r23791381 = r23791379 <= r23791380;
double r23791382 = c;
double r23791383 = t;
double r23791384 = r23791382 * r23791383;
double r23791385 = i;
double r23791386 = y;
double r23791387 = r23791385 * r23791386;
double r23791388 = r23791384 - r23791387;
double r23791389 = j;
double r23791390 = r23791388 * r23791389;
double r23791391 = z;
double r23791392 = r23791386 * r23791391;
double r23791393 = a;
double r23791394 = r23791393 * r23791383;
double r23791395 = r23791392 - r23791394;
double r23791396 = r23791395 * r23791379;
double r23791397 = r23791391 * r23791382;
double r23791398 = r23791385 * r23791393;
double r23791399 = r23791397 - r23791398;
double r23791400 = cbrt(r23791399);
double r23791401 = b;
double r23791402 = r23791400 * r23791400;
double r23791403 = r23791401 * r23791402;
double r23791404 = r23791400 * r23791403;
double r23791405 = r23791396 - r23791404;
double r23791406 = r23791390 + r23791405;
double r23791407 = -1.1954740575885239e-185;
bool r23791408 = r23791379 <= r23791407;
double r23791409 = r23791379 * r23791392;
double r23791410 = r23791379 * r23791383;
double r23791411 = r23791410 * r23791393;
double r23791412 = r23791409 - r23791411;
double r23791413 = r23791385 * r23791401;
double r23791414 = -r23791393;
double r23791415 = r23791413 * r23791414;
double r23791416 = r23791401 * r23791391;
double r23791417 = r23791416 * r23791382;
double r23791418 = r23791415 + r23791417;
double r23791419 = r23791412 - r23791418;
double r23791420 = r23791390 + r23791419;
double r23791421 = r23791391 * r23791379;
double r23791422 = r23791421 * r23791386;
double r23791423 = r23791422 - r23791411;
double r23791424 = r23791401 * r23791399;
double r23791425 = r23791423 - r23791424;
double r23791426 = r23791390 + r23791425;
double r23791427 = r23791408 ? r23791420 : r23791426;
double r23791428 = r23791381 ? r23791406 : r23791427;
return r23791428;
}




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.8 |
|---|---|
| Target | 17.0 |
| Herbie | 11.6 |
if x < -1.3908394767462318e-09Initial program 7.6
rmApplied add-cube-cbrt7.8
Applied associate-*r*7.8
if -1.3908394767462318e-09 < x < -1.1954740575885239e-185Initial program 14.8
rmApplied add-cube-cbrt15.1
Applied associate-*l*15.1
Taylor expanded around inf 12.8
rmApplied sub-neg12.8
Applied distribute-lft-in12.8
Applied distribute-lft-in12.8
Simplified13.3
Simplified11.9
if -1.1954740575885239e-185 < x Initial program 13.9
rmApplied add-cube-cbrt14.2
Applied associate-*l*14.2
Taylor expanded around inf 13.8
rmApplied associate-*r*13.0
Taylor expanded around inf 12.7
Simplified12.7
Final simplification11.6
herbie shell --seed 2019165
(FPCore (x y z t a b c i j)
:name "Linear.Matrix:det33 from linear-1.19.1.3"
:herbie-target
(if (< t -8.120978919195912e-33) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t -4.712553818218485e-169) (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (/ (* j (- (pow (* c t) 2.0) (pow (* i y) 2.0))) (+ (* c t) (* i y)))) (if (< t -7.633533346031584e-308) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t 1.0535888557455487e-139) (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (/ (* j (- (pow (* c t) 2.0) (pow (* i y) 2.0))) (+ (* c t) (* i y)))) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j)))))))
(+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (* j (- (* c t) (* i y)))))