\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}\;a \le -5.19272319669333613 \cdot 10^{72}:\\
\;\;\;\;\mathsf{fma}\left(a, i \cdot b, -\mathsf{fma}\left(z, b \cdot c, a \cdot \left(x \cdot t\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt[3]{\mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right)} \cdot \sqrt[3]{\mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(c \cdot t - i \cdot y, j, \left(x \cdot \mathsf{fma}\left(y, z, -a \cdot t\right) + x \cdot \mathsf{fma}\left(-a, t, a \cdot t\right)\right) - b \cdot \left(c \cdot z - i \cdot a\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 r519838 = x;
double r519839 = y;
double r519840 = z;
double r519841 = r519839 * r519840;
double r519842 = t;
double r519843 = a;
double r519844 = r519842 * r519843;
double r519845 = r519841 - r519844;
double r519846 = r519838 * r519845;
double r519847 = b;
double r519848 = c;
double r519849 = r519848 * r519840;
double r519850 = i;
double r519851 = r519850 * r519843;
double r519852 = r519849 - r519851;
double r519853 = r519847 * r519852;
double r519854 = r519846 - r519853;
double r519855 = j;
double r519856 = r519848 * r519842;
double r519857 = r519850 * r519839;
double r519858 = r519856 - r519857;
double r519859 = r519855 * r519858;
double r519860 = r519854 + r519859;
return r519860;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
double r519861 = a;
double r519862 = -5.192723196693336e+72;
bool r519863 = r519861 <= r519862;
double r519864 = i;
double r519865 = b;
double r519866 = r519864 * r519865;
double r519867 = z;
double r519868 = c;
double r519869 = r519865 * r519868;
double r519870 = x;
double r519871 = t;
double r519872 = r519870 * r519871;
double r519873 = r519861 * r519872;
double r519874 = fma(r519867, r519869, r519873);
double r519875 = -r519874;
double r519876 = fma(r519861, r519866, r519875);
double r519877 = r519868 * r519871;
double r519878 = y;
double r519879 = r519864 * r519878;
double r519880 = r519877 - r519879;
double r519881 = j;
double r519882 = r519861 * r519871;
double r519883 = -r519882;
double r519884 = fma(r519878, r519867, r519883);
double r519885 = r519870 * r519884;
double r519886 = -r519861;
double r519887 = fma(r519886, r519871, r519882);
double r519888 = r519870 * r519887;
double r519889 = r519885 + r519888;
double r519890 = r519868 * r519867;
double r519891 = r519864 * r519861;
double r519892 = r519890 - r519891;
double r519893 = r519865 * r519892;
double r519894 = r519889 - r519893;
double r519895 = fma(r519880, r519881, r519894);
double r519896 = cbrt(r519895);
double r519897 = r519896 * r519896;
double r519898 = r519897 * r519896;
double r519899 = r519863 ? r519876 : r519898;
return r519899;
}




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
| Original | 12.0 |
|---|---|
| Target | 15.6 |
| Herbie | 13.1 |
if a < -5.192723196693336e+72Initial program 19.4
Simplified19.4
Taylor expanded around inf 21.8
Simplified21.8
if -5.192723196693336e+72 < a Initial program 10.9
Simplified10.9
rmApplied prod-diff10.9
Applied distribute-lft-in10.9
rmApplied add-cube-cbrt11.8
Final simplification13.1
herbie shell --seed 2020064 +o rules:numerics
(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)))))