\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 -2.88745775492739174 \cdot 10^{-157}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(j \cdot \left(\sqrt[3]{c \cdot t - i \cdot y} \cdot \sqrt[3]{c \cdot t - i \cdot y}\right)\right) \cdot \sqrt[3]{c \cdot t - i \cdot y}\\
\mathbf{elif}\;x \le 1.4823283017637211 \cdot 10^{-217}:\\
\;\;\;\;\left(0 - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(\sqrt[3]{j \cdot \left(c \cdot t - i \cdot y\right)} \cdot \sqrt[3]{j \cdot \left(c \cdot t - i \cdot y\right)}\right) \cdot \sqrt[3]{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 r598519 = x;
double r598520 = y;
double r598521 = z;
double r598522 = r598520 * r598521;
double r598523 = t;
double r598524 = a;
double r598525 = r598523 * r598524;
double r598526 = r598522 - r598525;
double r598527 = r598519 * r598526;
double r598528 = b;
double r598529 = c;
double r598530 = r598529 * r598521;
double r598531 = i;
double r598532 = r598531 * r598524;
double r598533 = r598530 - r598532;
double r598534 = r598528 * r598533;
double r598535 = r598527 - r598534;
double r598536 = j;
double r598537 = r598529 * r598523;
double r598538 = r598531 * r598520;
double r598539 = r598537 - r598538;
double r598540 = r598536 * r598539;
double r598541 = r598535 + r598540;
return r598541;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r598542 = x;
double r598543 = -2.8874577549273917e-157;
bool r598544 = r598542 <= r598543;
double r598545 = y;
double r598546 = z;
double r598547 = r598545 * r598546;
double r598548 = t;
double r598549 = a;
double r598550 = r598548 * r598549;
double r598551 = r598547 - r598550;
double r598552 = r598542 * r598551;
double r598553 = b;
double r598554 = c;
double r598555 = r598554 * r598546;
double r598556 = i;
double r598557 = r598556 * r598549;
double r598558 = r598555 - r598557;
double r598559 = r598553 * r598558;
double r598560 = r598552 - r598559;
double r598561 = j;
double r598562 = r598554 * r598548;
double r598563 = r598556 * r598545;
double r598564 = r598562 - r598563;
double r598565 = cbrt(r598564);
double r598566 = r598565 * r598565;
double r598567 = r598561 * r598566;
double r598568 = r598567 * r598565;
double r598569 = r598560 + r598568;
double r598570 = 1.482328301763721e-217;
bool r598571 = r598542 <= r598570;
double r598572 = 0.0;
double r598573 = r598572 - r598559;
double r598574 = r598561 * r598564;
double r598575 = r598573 + r598574;
double r598576 = cbrt(r598574);
double r598577 = r598576 * r598576;
double r598578 = r598577 * r598576;
double r598579 = r598560 + r598578;
double r598580 = r598571 ? r598575 : r598579;
double r598581 = r598544 ? r598569 : r598580;
return r598581;
}




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.8 |
| Herbie | 12.1 |
if x < -2.8874577549273917e-157Initial program 9.3
rmApplied add-cube-cbrt9.6
Applied associate-*r*9.6
if -2.8874577549273917e-157 < x < 1.482328301763721e-217Initial program 17.9
Taylor expanded around 0 17.3
if 1.482328301763721e-217 < x Initial program 10.8
rmApplied add-cube-cbrt11.0
Final simplification12.1
herbie shell --seed 2020036
(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)))))