\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}\;j \le -7.230020761502895504952278131466171914023 \cdot 10^{-109}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) \cdot \left(\sqrt[3]{b} \cdot \left(c \cdot z - i \cdot a\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{elif}\;j \le 2.841837214549664549498805049411080034753 \cdot 10^{59}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + b \cdot \left(-i \cdot a\right)\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-i \cdot \left(j \cdot y\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + \left(b \cdot i\right) \cdot \left(-a\right)\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r443397 = x;
double r443398 = y;
double r443399 = z;
double r443400 = r443398 * r443399;
double r443401 = t;
double r443402 = a;
double r443403 = r443401 * r443402;
double r443404 = r443400 - r443403;
double r443405 = r443397 * r443404;
double r443406 = b;
double r443407 = c;
double r443408 = r443407 * r443399;
double r443409 = i;
double r443410 = r443409 * r443402;
double r443411 = r443408 - r443410;
double r443412 = r443406 * r443411;
double r443413 = r443405 - r443412;
double r443414 = j;
double r443415 = r443407 * r443401;
double r443416 = r443409 * r443398;
double r443417 = r443415 - r443416;
double r443418 = r443414 * r443417;
double r443419 = r443413 + r443418;
return r443419;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r443420 = j;
double r443421 = -7.2300207615028955e-109;
bool r443422 = r443420 <= r443421;
double r443423 = x;
double r443424 = y;
double r443425 = z;
double r443426 = r443424 * r443425;
double r443427 = t;
double r443428 = a;
double r443429 = r443427 * r443428;
double r443430 = r443426 - r443429;
double r443431 = r443423 * r443430;
double r443432 = b;
double r443433 = cbrt(r443432);
double r443434 = r443433 * r443433;
double r443435 = c;
double r443436 = r443435 * r443425;
double r443437 = i;
double r443438 = r443437 * r443428;
double r443439 = r443436 - r443438;
double r443440 = r443433 * r443439;
double r443441 = r443434 * r443440;
double r443442 = r443431 - r443441;
double r443443 = r443435 * r443427;
double r443444 = r443437 * r443424;
double r443445 = r443443 - r443444;
double r443446 = r443420 * r443445;
double r443447 = r443442 + r443446;
double r443448 = 2.8418372145496645e+59;
bool r443449 = r443420 <= r443448;
double r443450 = r443432 * r443435;
double r443451 = r443425 * r443450;
double r443452 = -r443438;
double r443453 = r443432 * r443452;
double r443454 = r443451 + r443453;
double r443455 = r443431 - r443454;
double r443456 = r443420 * r443435;
double r443457 = r443427 * r443456;
double r443458 = r443420 * r443424;
double r443459 = r443437 * r443458;
double r443460 = -r443459;
double r443461 = r443457 + r443460;
double r443462 = r443455 + r443461;
double r443463 = r443432 * r443437;
double r443464 = -r443428;
double r443465 = r443463 * r443464;
double r443466 = r443451 + r443465;
double r443467 = r443431 - r443466;
double r443468 = r443467 + r443446;
double r443469 = r443449 ? r443462 : r443468;
double r443470 = r443422 ? r443447 : r443469;
return r443470;
}




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.1 |
|---|---|
| Target | 15.9 |
| Herbie | 9.6 |
if j < -7.2300207615028955e-109Initial program 8.8
rmApplied add-cube-cbrt9.1
Applied associate-*l*9.1
if -7.2300207615028955e-109 < j < 2.8418372145496645e+59Initial program 15.3
rmApplied sub-neg15.3
Applied distribute-lft-in15.3
Simplified15.5
rmApplied sub-neg15.5
Applied distribute-lft-in15.5
Simplified13.2
Simplified10.5
if 2.8418372145496645e+59 < j Initial program 6.8
rmApplied sub-neg6.8
Applied distribute-lft-in6.8
Simplified7.1
rmApplied distribute-rgt-neg-in7.1
Applied associate-*r*7.5
Final simplification9.6
herbie shell --seed 2019323
(FPCore (x y z t a b c i j)
:name "Linear.Matrix:det33 from linear-1.19.1.3"
:precision binary64
: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) (pow (* i y) 2))) (+ (* 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) (pow (* i y) 2))) (+ (* 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)))))