\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 -5.80326359791015632964819365758088171029 \cdot 10^{70} \lor \neg \left(j \le 4.463308820438120290570369630487564696852 \cdot 10^{-42}\right):\\
\;\;\;\;\left(\left(x \cdot \left(y \cdot z\right) + \left(-a \cdot \left(x \cdot t\right)\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\sqrt[3]{x \cdot \left(y \cdot z - t \cdot a\right)} \cdot \sqrt[3]{x \cdot \left(y \cdot z - t \cdot a\right)}\right) \cdot \sqrt[3]{x \cdot \left(y \cdot z - t \cdot a\right)} - b \cdot \left(c \cdot z - i \cdot a\right)\right) + \left(t \cdot \left(j \cdot c\right) + \left(-i \cdot \left(j \cdot y\right)\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 r390604 = x;
double r390605 = y;
double r390606 = z;
double r390607 = r390605 * r390606;
double r390608 = t;
double r390609 = a;
double r390610 = r390608 * r390609;
double r390611 = r390607 - r390610;
double r390612 = r390604 * r390611;
double r390613 = b;
double r390614 = c;
double r390615 = r390614 * r390606;
double r390616 = i;
double r390617 = r390616 * r390609;
double r390618 = r390615 - r390617;
double r390619 = r390613 * r390618;
double r390620 = r390612 - r390619;
double r390621 = j;
double r390622 = r390614 * r390608;
double r390623 = r390616 * r390605;
double r390624 = r390622 - r390623;
double r390625 = r390621 * r390624;
double r390626 = r390620 + r390625;
return r390626;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r390627 = j;
double r390628 = -5.803263597910156e+70;
bool r390629 = r390627 <= r390628;
double r390630 = 4.46330882043812e-42;
bool r390631 = r390627 <= r390630;
double r390632 = !r390631;
bool r390633 = r390629 || r390632;
double r390634 = x;
double r390635 = y;
double r390636 = z;
double r390637 = r390635 * r390636;
double r390638 = r390634 * r390637;
double r390639 = a;
double r390640 = t;
double r390641 = r390634 * r390640;
double r390642 = r390639 * r390641;
double r390643 = -r390642;
double r390644 = r390638 + r390643;
double r390645 = b;
double r390646 = c;
double r390647 = r390646 * r390636;
double r390648 = i;
double r390649 = r390648 * r390639;
double r390650 = r390647 - r390649;
double r390651 = r390645 * r390650;
double r390652 = r390644 - r390651;
double r390653 = r390646 * r390640;
double r390654 = r390648 * r390635;
double r390655 = r390653 - r390654;
double r390656 = r390627 * r390655;
double r390657 = r390652 + r390656;
double r390658 = r390640 * r390639;
double r390659 = r390637 - r390658;
double r390660 = r390634 * r390659;
double r390661 = cbrt(r390660);
double r390662 = r390661 * r390661;
double r390663 = r390662 * r390661;
double r390664 = r390663 - r390651;
double r390665 = r390627 * r390646;
double r390666 = r390640 * r390665;
double r390667 = r390627 * r390635;
double r390668 = r390648 * r390667;
double r390669 = -r390668;
double r390670 = r390666 + r390669;
double r390671 = r390664 + r390670;
double r390672 = r390633 ? r390657 : r390671;
return r390672;
}




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 | 11.6 |
|---|---|
| Target | 15.6 |
| Herbie | 9.1 |
if j < -5.803263597910156e+70 or 4.46330882043812e-42 < j Initial program 7.1
rmApplied sub-neg7.1
Applied distribute-lft-in7.1
Simplified7.6
if -5.803263597910156e+70 < j < 4.46330882043812e-42Initial program 14.3
rmApplied add-cube-cbrt14.7
rmApplied sub-neg14.7
Applied distribute-lft-in14.7
Simplified12.5
Simplified10.1
Final simplification9.1
herbie shell --seed 2019209
(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.1209789191959122e-33) (- (* x (- (* z y) (* a t))) (- (* b (- (* z c) (* a i))) (* (- (* c t) (* y i)) j))) (if (< t -4.7125538182184851e-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.63353334603158369e-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)))))