\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b
\begin{array}{l}
\mathbf{if}\;\left(\left(y \cdot 9\right) \cdot z\right) \cdot t = -\infty \lor \neg \left(\left(\left(y \cdot 9\right) \cdot z\right) \cdot t \le 4.296785106576348656228515128564970887864 \cdot 10^{306}\right):\\
\;\;\;\;\left(x \cdot 2 - \left(\left(z \cdot 9\right) \cdot t\right) \cdot y\right) + \left(a \cdot 27\right) \cdot b\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot b\right) \cdot 27\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r572959 = x;
double r572960 = 2.0;
double r572961 = r572959 * r572960;
double r572962 = y;
double r572963 = 9.0;
double r572964 = r572962 * r572963;
double r572965 = z;
double r572966 = r572964 * r572965;
double r572967 = t;
double r572968 = r572966 * r572967;
double r572969 = r572961 - r572968;
double r572970 = a;
double r572971 = 27.0;
double r572972 = r572970 * r572971;
double r572973 = b;
double r572974 = r572972 * r572973;
double r572975 = r572969 + r572974;
return r572975;
}
double f(double x, double y, double z, double t, double a, double b) {
double r572976 = y;
double r572977 = 9.0;
double r572978 = r572976 * r572977;
double r572979 = z;
double r572980 = r572978 * r572979;
double r572981 = t;
double r572982 = r572980 * r572981;
double r572983 = -inf.0;
bool r572984 = r572982 <= r572983;
double r572985 = 4.2967851065763487e+306;
bool r572986 = r572982 <= r572985;
double r572987 = !r572986;
bool r572988 = r572984 || r572987;
double r572989 = x;
double r572990 = 2.0;
double r572991 = r572989 * r572990;
double r572992 = r572979 * r572977;
double r572993 = r572992 * r572981;
double r572994 = r572993 * r572976;
double r572995 = r572991 - r572994;
double r572996 = a;
double r572997 = 27.0;
double r572998 = r572996 * r572997;
double r572999 = b;
double r573000 = r572998 * r572999;
double r573001 = r572995 + r573000;
double r573002 = r572991 - r572982;
double r573003 = r572996 * r572999;
double r573004 = r573003 * r572997;
double r573005 = r573002 + r573004;
double r573006 = r572988 ? r573001 : r573005;
return r573006;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 3.7 |
|---|---|
| Target | 2.6 |
| Herbie | 0.4 |
if (* (* (* y 9.0) z) t) < -inf.0 or 4.2967851065763487e+306 < (* (* (* y 9.0) z) t) Initial program 63.4
rmApplied associate-*l*62.6
Simplified62.6
rmApplied associate-*l*0.8
Simplified0.8
if -inf.0 < (* (* (* y 9.0) z) t) < 4.2967851065763487e+306Initial program 0.5
Taylor expanded around 0 0.4
Final simplification0.4
herbie shell --seed 2019194
(FPCore (x y z t a b)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, A"
:herbie-target
(if (< y 7.590524218811189e-161) (+ (- (* x 2.0) (* (* (* y 9.0) z) t)) (* a (* 27.0 b))) (+ (- (* x 2.0) (* 9.0 (* y (* t z)))) (* (* a 27.0) b)))
(+ (- (* x 2.0) (* (* (* y 9.0) z) t)) (* (* a 27.0) b)))