\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k
\begin{array}{l}
\mathbf{if}\;t \le -8.580938398712717545524727866274452921134 \cdot 10^{-92}:\\
\;\;\;\;\left(\left(t \cdot \left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right) - a \cdot 4\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - 27 \cdot \left(j \cdot k\right)\\
\mathbf{elif}\;t \le 5888699400.34645938873291015625:\\
\;\;\;\;\left(\left(\left(-a \cdot 4\right) \cdot t + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - 27 \cdot \left(j \cdot k\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(t \cdot \left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right) - a \cdot 4\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - 27 \cdot \left(j \cdot k\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r120295833 = x;
double r120295834 = 18.0;
double r120295835 = r120295833 * r120295834;
double r120295836 = y;
double r120295837 = r120295835 * r120295836;
double r120295838 = z;
double r120295839 = r120295837 * r120295838;
double r120295840 = t;
double r120295841 = r120295839 * r120295840;
double r120295842 = a;
double r120295843 = 4.0;
double r120295844 = r120295842 * r120295843;
double r120295845 = r120295844 * r120295840;
double r120295846 = r120295841 - r120295845;
double r120295847 = b;
double r120295848 = c;
double r120295849 = r120295847 * r120295848;
double r120295850 = r120295846 + r120295849;
double r120295851 = r120295833 * r120295843;
double r120295852 = i;
double r120295853 = r120295851 * r120295852;
double r120295854 = r120295850 - r120295853;
double r120295855 = j;
double r120295856 = 27.0;
double r120295857 = r120295855 * r120295856;
double r120295858 = k;
double r120295859 = r120295857 * r120295858;
double r120295860 = r120295854 - r120295859;
return r120295860;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r120295861 = t;
double r120295862 = -8.580938398712718e-92;
bool r120295863 = r120295861 <= r120295862;
double r120295864 = x;
double r120295865 = 18.0;
double r120295866 = r120295864 * r120295865;
double r120295867 = y;
double r120295868 = z;
double r120295869 = r120295867 * r120295868;
double r120295870 = r120295866 * r120295869;
double r120295871 = a;
double r120295872 = 4.0;
double r120295873 = r120295871 * r120295872;
double r120295874 = r120295870 - r120295873;
double r120295875 = r120295861 * r120295874;
double r120295876 = b;
double r120295877 = c;
double r120295878 = r120295876 * r120295877;
double r120295879 = r120295875 + r120295878;
double r120295880 = r120295864 * r120295872;
double r120295881 = i;
double r120295882 = r120295880 * r120295881;
double r120295883 = r120295879 - r120295882;
double r120295884 = 27.0;
double r120295885 = j;
double r120295886 = k;
double r120295887 = r120295885 * r120295886;
double r120295888 = r120295884 * r120295887;
double r120295889 = r120295883 - r120295888;
double r120295890 = 5888699400.346459;
bool r120295891 = r120295861 <= r120295890;
double r120295892 = -r120295873;
double r120295893 = r120295892 * r120295861;
double r120295894 = r120295893 + r120295878;
double r120295895 = r120295894 - r120295882;
double r120295896 = r120295895 - r120295888;
double r120295897 = r120295891 ? r120295896 : r120295889;
double r120295898 = r120295863 ? r120295889 : r120295897;
return r120295898;
}




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




Bits error versus k
Results
| Original | 5.7 |
|---|---|
| Target | 1.5 |
| Herbie | 5.0 |
if t < -8.580938398712718e-92 or 5888699400.346459 < t Initial program 2.1
Simplified2.1
Taylor expanded around 0 2.0
rmApplied associate-*l*2.7
if -8.580938398712718e-92 < t < 5888699400.346459Initial program 8.7
Simplified8.7
Taylor expanded around 0 8.6
Taylor expanded around 0 7.0
Final simplification5.0
herbie shell --seed 2019173
(FPCore (x y z t a b c i j k)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, E"
:herbie-target
(if (< t -1.6210815397541398e-69) (- (- (* (* 18.0 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4.0)) (- (* (* k j) 27.0) (* c b))) (if (< t 165.68027943805222) (+ (- (* (* 18.0 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4.0)) (- (* c b) (* 27.0 (* k j)))) (- (- (* (* 18.0 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4.0)) (- (* (* k j) 27.0) (* c b)))))
(- (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) (* (* j 27.0) k)))