\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 -4.802521353136590134090568041763149695323 \cdot 10^{-178}:\\
\;\;\;\;\left(\left(\left(\left(z \cdot \left(18 \cdot \left(x \cdot y\right)\right)\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\\
\mathbf{elif}\;t \le 4.339340101075432744492970777980355608709 \cdot 10^{-63}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(t \cdot z\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - j \cdot \left(27 \cdot k\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right)\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - j \cdot \left(27 \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 r560985 = x;
double r560986 = 18.0;
double r560987 = r560985 * r560986;
double r560988 = y;
double r560989 = r560987 * r560988;
double r560990 = z;
double r560991 = r560989 * r560990;
double r560992 = t;
double r560993 = r560991 * r560992;
double r560994 = a;
double r560995 = 4.0;
double r560996 = r560994 * r560995;
double r560997 = r560996 * r560992;
double r560998 = r560993 - r560997;
double r560999 = b;
double r561000 = c;
double r561001 = r560999 * r561000;
double r561002 = r560998 + r561001;
double r561003 = r560985 * r560995;
double r561004 = i;
double r561005 = r561003 * r561004;
double r561006 = r561002 - r561005;
double r561007 = j;
double r561008 = 27.0;
double r561009 = r561007 * r561008;
double r561010 = k;
double r561011 = r561009 * r561010;
double r561012 = r561006 - r561011;
return r561012;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r561013 = t;
double r561014 = -4.80252135313659e-178;
bool r561015 = r561013 <= r561014;
double r561016 = z;
double r561017 = 18.0;
double r561018 = x;
double r561019 = y;
double r561020 = r561018 * r561019;
double r561021 = r561017 * r561020;
double r561022 = r561016 * r561021;
double r561023 = r561022 * r561013;
double r561024 = a;
double r561025 = 4.0;
double r561026 = r561024 * r561025;
double r561027 = r561026 * r561013;
double r561028 = r561023 - r561027;
double r561029 = b;
double r561030 = c;
double r561031 = r561029 * r561030;
double r561032 = r561028 + r561031;
double r561033 = r561018 * r561025;
double r561034 = i;
double r561035 = r561033 * r561034;
double r561036 = r561032 - r561035;
double r561037 = j;
double r561038 = 27.0;
double r561039 = r561037 * r561038;
double r561040 = k;
double r561041 = r561039 * r561040;
double r561042 = r561036 - r561041;
double r561043 = 4.339340101075433e-63;
bool r561044 = r561013 <= r561043;
double r561045 = r561018 * r561017;
double r561046 = r561045 * r561019;
double r561047 = r561013 * r561016;
double r561048 = r561046 * r561047;
double r561049 = r561048 - r561027;
double r561050 = r561049 + r561031;
double r561051 = r561050 - r561035;
double r561052 = r561038 * r561040;
double r561053 = r561037 * r561052;
double r561054 = r561051 - r561053;
double r561055 = r561019 * r561016;
double r561056 = r561045 * r561055;
double r561057 = r561056 * r561013;
double r561058 = r561057 - r561027;
double r561059 = r561058 + r561031;
double r561060 = r561059 - r561035;
double r561061 = r561060 - r561053;
double r561062 = r561044 ? r561054 : r561061;
double r561063 = r561015 ? r561042 : r561062;
return r561063;
}




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.5 |
|---|---|
| Target | 1.6 |
| Herbie | 4.0 |
if t < -4.80252135313659e-178Initial program 4.0
rmApplied associate-*l*4.0
Simplified4.0
rmApplied *-un-lft-identity4.0
Applied associate-*r*4.0
Simplified4.0
if -4.80252135313659e-178 < t < 4.339340101075433e-63Initial program 8.5
rmApplied associate-*l*8.5
rmApplied associate-*l*4.5
Simplified4.5
if 4.339340101075433e-63 < t Initial program 3.0
rmApplied associate-*l*3.0
rmApplied associate-*l*3.3
Final simplification4.0
herbie shell --seed 2019208
(FPCore (x y z t a b c i j k)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, E"
:precision binary64
:herbie-target
(if (< t -1.6210815397541398e-69) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b))) (if (< t 165.680279438052224) (+ (- (* (* 18 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4)) (- (* c b) (* 27 (* k j)))) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b)))))
(- (- (+ (- (* (* (* (* x 18) y) z) t) (* (* a 4) t)) (* b c)) (* (* x 4) i)) (* (* j 27) k)))