\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}\;i \le -1453916164036345344:\\
\;\;\;\;j \cdot \left(c \cdot t - y \cdot i\right) + \left(\sqrt[3]{y \cdot z - t \cdot a} \cdot \left(\left(\sqrt[3]{y \cdot z - t \cdot a} \cdot \sqrt[3]{y \cdot z - t \cdot a}\right) \cdot x\right) - \left(\left(a \cdot b\right) \cdot \left(-i\right) + c \cdot \left(b \cdot z\right)\right)\right)\\
\mathbf{elif}\;i \le -5.217128050956565151940192447921636214319 \cdot 10^{-116}:\\
\;\;\;\;\left(\left(x \cdot \left(y \cdot z\right) - \left(x \cdot t\right) \cdot a\right) - \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) \cdot \left(\left(c \cdot z - i \cdot a\right) \cdot \sqrt[3]{b}\right)\right) + j \cdot \left(c \cdot t - y \cdot i\right)\\
\mathbf{elif}\;i \le -7.642484941746692331031071219799992809581 \cdot 10^{-197}:\\
\;\;\;\;\left(\left(y \cdot z - t \cdot a\right) \cdot x - \left(\left(-b\right) \cdot \left(i \cdot a\right) + c \cdot \left(b \cdot z\right)\right)\right) + \left(\sqrt[3]{j} \cdot \sqrt[3]{j}\right) \cdot \left(\left(c \cdot t - y \cdot i\right) \cdot \sqrt[3]{j}\right)\\
\mathbf{elif}\;i \le 1.392000762622429387159763147815204755346 \cdot 10^{-21}:\\
\;\;\;\;\left(\left(y \cdot z - t \cdot a\right) \cdot x - \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right) \cdot \left(\sqrt[3]{\left(c \cdot z - i \cdot a\right) \cdot \sqrt[3]{b}} \cdot \left(\sqrt[3]{\left(c \cdot z - i \cdot a\right) \cdot \sqrt[3]{b}} \cdot \sqrt[3]{\left(c \cdot z - i \cdot a\right) \cdot \sqrt[3]{b}}\right)\right)\right) + j \cdot \left(c \cdot t - y \cdot i\right)\\
\mathbf{else}:\\
\;\;\;\;j \cdot \left(c \cdot t - y \cdot i\right) + \left(\sqrt[3]{y \cdot z - t \cdot a} \cdot \left(\left(\sqrt[3]{y \cdot z - t \cdot a} \cdot \sqrt[3]{y \cdot z - t \cdot a}\right) \cdot x\right) - \left(\left(a \cdot b\right) \cdot \left(-i\right) + c \cdot \left(b \cdot z\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 r27723797 = x;
double r27723798 = y;
double r27723799 = z;
double r27723800 = r27723798 * r27723799;
double r27723801 = t;
double r27723802 = a;
double r27723803 = r27723801 * r27723802;
double r27723804 = r27723800 - r27723803;
double r27723805 = r27723797 * r27723804;
double r27723806 = b;
double r27723807 = c;
double r27723808 = r27723807 * r27723799;
double r27723809 = i;
double r27723810 = r27723809 * r27723802;
double r27723811 = r27723808 - r27723810;
double r27723812 = r27723806 * r27723811;
double r27723813 = r27723805 - r27723812;
double r27723814 = j;
double r27723815 = r27723807 * r27723801;
double r27723816 = r27723809 * r27723798;
double r27723817 = r27723815 - r27723816;
double r27723818 = r27723814 * r27723817;
double r27723819 = r27723813 + r27723818;
return r27723819;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r27723820 = i;
double r27723821 = -1.4539161640363453e+18;
bool r27723822 = r27723820 <= r27723821;
double r27723823 = j;
double r27723824 = c;
double r27723825 = t;
double r27723826 = r27723824 * r27723825;
double r27723827 = y;
double r27723828 = r27723827 * r27723820;
double r27723829 = r27723826 - r27723828;
double r27723830 = r27723823 * r27723829;
double r27723831 = z;
double r27723832 = r27723827 * r27723831;
double r27723833 = a;
double r27723834 = r27723825 * r27723833;
double r27723835 = r27723832 - r27723834;
double r27723836 = cbrt(r27723835);
double r27723837 = r27723836 * r27723836;
double r27723838 = x;
double r27723839 = r27723837 * r27723838;
double r27723840 = r27723836 * r27723839;
double r27723841 = b;
double r27723842 = r27723833 * r27723841;
double r27723843 = -r27723820;
double r27723844 = r27723842 * r27723843;
double r27723845 = r27723841 * r27723831;
double r27723846 = r27723824 * r27723845;
double r27723847 = r27723844 + r27723846;
double r27723848 = r27723840 - r27723847;
double r27723849 = r27723830 + r27723848;
double r27723850 = -5.217128050956565e-116;
bool r27723851 = r27723820 <= r27723850;
double r27723852 = r27723838 * r27723832;
double r27723853 = r27723838 * r27723825;
double r27723854 = r27723853 * r27723833;
double r27723855 = r27723852 - r27723854;
double r27723856 = cbrt(r27723841);
double r27723857 = r27723856 * r27723856;
double r27723858 = r27723824 * r27723831;
double r27723859 = r27723820 * r27723833;
double r27723860 = r27723858 - r27723859;
double r27723861 = r27723860 * r27723856;
double r27723862 = r27723857 * r27723861;
double r27723863 = r27723855 - r27723862;
double r27723864 = r27723863 + r27723830;
double r27723865 = -7.642484941746692e-197;
bool r27723866 = r27723820 <= r27723865;
double r27723867 = r27723835 * r27723838;
double r27723868 = -r27723841;
double r27723869 = r27723868 * r27723859;
double r27723870 = r27723869 + r27723846;
double r27723871 = r27723867 - r27723870;
double r27723872 = cbrt(r27723823);
double r27723873 = r27723872 * r27723872;
double r27723874 = r27723829 * r27723872;
double r27723875 = r27723873 * r27723874;
double r27723876 = r27723871 + r27723875;
double r27723877 = 1.3920007626224294e-21;
bool r27723878 = r27723820 <= r27723877;
double r27723879 = cbrt(r27723861);
double r27723880 = r27723879 * r27723879;
double r27723881 = r27723879 * r27723880;
double r27723882 = r27723857 * r27723881;
double r27723883 = r27723867 - r27723882;
double r27723884 = r27723883 + r27723830;
double r27723885 = r27723878 ? r27723884 : r27723849;
double r27723886 = r27723866 ? r27723876 : r27723885;
double r27723887 = r27723851 ? r27723864 : r27723886;
double r27723888 = r27723822 ? r27723849 : r27723887;
return r27723888;
}




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.8 |
|---|---|
| Target | 15.9 |
| Herbie | 10.3 |
if i < -1.4539161640363453e+18 or 1.3920007626224294e-21 < i Initial program 15.8
rmApplied add-cube-cbrt16.1
Applied associate-*l*16.1
rmApplied sub-neg16.1
Applied distribute-lft-in16.1
Applied distribute-lft-in16.1
Simplified16.0
Simplified15.8
Taylor expanded around inf 15.9
Simplified11.9
rmApplied add-cube-cbrt12.1
Applied associate-*r*12.1
if -1.4539161640363453e+18 < i < -5.217128050956565e-116Initial program 8.8
rmApplied add-cube-cbrt9.1
Applied associate-*l*9.2
Taylor expanded around inf 8.2
if -5.217128050956565e-116 < i < -7.642484941746692e-197Initial program 9.3
rmApplied add-cube-cbrt9.6
Applied associate-*l*9.6
rmApplied sub-neg9.6
Applied distribute-lft-in9.6
Applied distribute-lft-in9.6
Simplified8.6
Simplified8.5
rmApplied add-cube-cbrt8.9
Applied associate-*l*8.9
if -7.642484941746692e-197 < i < 1.3920007626224294e-21Initial program 9.3
rmApplied add-cube-cbrt9.5
Applied associate-*l*9.5
rmApplied add-cube-cbrt9.6
Final simplification10.3
herbie shell --seed 2019168
(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)))))