\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}\;y \le -3.7660897539695966 \cdot 10^{+46}:\\
\;\;\;\;\left(c \cdot t - y \cdot i\right) \cdot j + \left(\left(\left(x \cdot z\right) \cdot y - \left(t \cdot x\right) \cdot a\right) - \left(\left(a \cdot i\right) \cdot \left(-b\right) + c \cdot \left(z \cdot b\right)\right)\right)\\
\mathbf{elif}\;y \le -3.0526732160857206 \cdot 10^{-237}:\\
\;\;\;\;\left(c \cdot t - y \cdot i\right) \cdot j + \left(x \cdot \left(z \cdot y - a \cdot t\right) - \left(\left(\sqrt[3]{z \cdot c - a \cdot i} \cdot \sqrt[3]{z \cdot c - a \cdot i}\right) \cdot b\right) \cdot \sqrt[3]{z \cdot c - a \cdot i}\right)\\
\mathbf{elif}\;y \le 1.2995606612721459 \cdot 10^{-272}:\\
\;\;\;\;\left(\left(x \cdot \left(z \cdot y\right) - \left(t \cdot x\right) \cdot a\right) - \left(z \cdot \left(b \cdot c\right) + \left(a \cdot i\right) \cdot \left(-b\right)\right)\right) + \left(c \cdot t - y \cdot i\right) \cdot j\\
\mathbf{elif}\;y \le 5.00542406503329 \cdot 10^{-24}:\\
\;\;\;\;\left(c \cdot t - y \cdot i\right) \cdot j + \left(\left(x \cdot \left(z \cdot y\right) - \left(t \cdot x\right) \cdot a\right) - \left(i \cdot \left(a \cdot \left(-b\right)\right) + c \cdot \left(z \cdot b\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(c \cdot t - y \cdot i\right) \cdot j + \left(\left(\left(x \cdot z\right) \cdot y - \left(t \cdot x\right) \cdot a\right) - \left(\left(a \cdot i\right) \cdot \left(-b\right) + c \cdot \left(z \cdot b\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 r11138575 = x;
double r11138576 = y;
double r11138577 = z;
double r11138578 = r11138576 * r11138577;
double r11138579 = t;
double r11138580 = a;
double r11138581 = r11138579 * r11138580;
double r11138582 = r11138578 - r11138581;
double r11138583 = r11138575 * r11138582;
double r11138584 = b;
double r11138585 = c;
double r11138586 = r11138585 * r11138577;
double r11138587 = i;
double r11138588 = r11138587 * r11138580;
double r11138589 = r11138586 - r11138588;
double r11138590 = r11138584 * r11138589;
double r11138591 = r11138583 - r11138590;
double r11138592 = j;
double r11138593 = r11138585 * r11138579;
double r11138594 = r11138587 * r11138576;
double r11138595 = r11138593 - r11138594;
double r11138596 = r11138592 * r11138595;
double r11138597 = r11138591 + r11138596;
return r11138597;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r11138598 = y;
double r11138599 = -3.7660897539695966e+46;
bool r11138600 = r11138598 <= r11138599;
double r11138601 = c;
double r11138602 = t;
double r11138603 = r11138601 * r11138602;
double r11138604 = i;
double r11138605 = r11138598 * r11138604;
double r11138606 = r11138603 - r11138605;
double r11138607 = j;
double r11138608 = r11138606 * r11138607;
double r11138609 = x;
double r11138610 = z;
double r11138611 = r11138609 * r11138610;
double r11138612 = r11138611 * r11138598;
double r11138613 = r11138602 * r11138609;
double r11138614 = a;
double r11138615 = r11138613 * r11138614;
double r11138616 = r11138612 - r11138615;
double r11138617 = r11138614 * r11138604;
double r11138618 = b;
double r11138619 = -r11138618;
double r11138620 = r11138617 * r11138619;
double r11138621 = r11138610 * r11138618;
double r11138622 = r11138601 * r11138621;
double r11138623 = r11138620 + r11138622;
double r11138624 = r11138616 - r11138623;
double r11138625 = r11138608 + r11138624;
double r11138626 = -3.0526732160857206e-237;
bool r11138627 = r11138598 <= r11138626;
double r11138628 = r11138610 * r11138598;
double r11138629 = r11138614 * r11138602;
double r11138630 = r11138628 - r11138629;
double r11138631 = r11138609 * r11138630;
double r11138632 = r11138610 * r11138601;
double r11138633 = r11138632 - r11138617;
double r11138634 = cbrt(r11138633);
double r11138635 = r11138634 * r11138634;
double r11138636 = r11138635 * r11138618;
double r11138637 = r11138636 * r11138634;
double r11138638 = r11138631 - r11138637;
double r11138639 = r11138608 + r11138638;
double r11138640 = 1.2995606612721459e-272;
bool r11138641 = r11138598 <= r11138640;
double r11138642 = r11138609 * r11138628;
double r11138643 = r11138642 - r11138615;
double r11138644 = r11138618 * r11138601;
double r11138645 = r11138610 * r11138644;
double r11138646 = r11138645 + r11138620;
double r11138647 = r11138643 - r11138646;
double r11138648 = r11138647 + r11138608;
double r11138649 = 5.00542406503329e-24;
bool r11138650 = r11138598 <= r11138649;
double r11138651 = r11138614 * r11138619;
double r11138652 = r11138604 * r11138651;
double r11138653 = r11138652 + r11138622;
double r11138654 = r11138643 - r11138653;
double r11138655 = r11138608 + r11138654;
double r11138656 = r11138650 ? r11138655 : r11138625;
double r11138657 = r11138641 ? r11138648 : r11138656;
double r11138658 = r11138627 ? r11138639 : r11138657;
double r11138659 = r11138600 ? r11138625 : r11138658;
return r11138659;
}




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.9 |
|---|---|
| Target | 15.6 |
| Herbie | 10.1 |
if y < -3.7660897539695966e+46 or 5.00542406503329e-24 < y Initial program 16.6
rmApplied sub-neg16.6
Applied distribute-rgt-in16.6
rmApplied associate-*l*16.5
Taylor expanded around inf 15.8
rmApplied associate-*r*12.0
if -3.7660897539695966e+46 < y < -3.0526732160857206e-237Initial program 8.6
rmApplied add-cube-cbrt9.0
Applied associate-*r*9.0
if -3.0526732160857206e-237 < y < 1.2995606612721459e-272Initial program 9.8
rmApplied sub-neg9.8
Applied distribute-rgt-in9.8
rmApplied associate-*l*9.7
Taylor expanded around inf 9.4
Taylor expanded around inf 8.2
if 1.2995606612721459e-272 < y < 5.00542406503329e-24Initial program 9.0
rmApplied sub-neg9.0
Applied distribute-rgt-in9.0
rmApplied associate-*l*9.7
Taylor expanded around inf 10.3
rmApplied distribute-lft-neg-in10.3
Applied associate-*l*9.2
Final simplification10.1
herbie shell --seed 2019156
(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) (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)))))