\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\begin{array}{l}
\mathbf{if}\;x \cdot y - \left(z \cdot 9\right) \cdot t \le -1.47596775768044329 \cdot 10^{214} \lor \neg \left(x \cdot y - \left(z \cdot 9\right) \cdot t \le 1.44327490436144402 \cdot 10^{217}\right):\\
\;\;\;\;0.5 \cdot \left(x \cdot \frac{y}{a}\right) - 4.5 \cdot \frac{t}{\frac{a}{z}}\\
\mathbf{else}:\\
\;\;\;\;\frac{0.5 \cdot \left(x \cdot y\right) - 4.5 \cdot \left(t \cdot z\right)}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r711876 = x;
double r711877 = y;
double r711878 = r711876 * r711877;
double r711879 = z;
double r711880 = 9.0;
double r711881 = r711879 * r711880;
double r711882 = t;
double r711883 = r711881 * r711882;
double r711884 = r711878 - r711883;
double r711885 = a;
double r711886 = 2.0;
double r711887 = r711885 * r711886;
double r711888 = r711884 / r711887;
return r711888;
}
double f(double x, double y, double z, double t, double a) {
double r711889 = x;
double r711890 = y;
double r711891 = r711889 * r711890;
double r711892 = z;
double r711893 = 9.0;
double r711894 = r711892 * r711893;
double r711895 = t;
double r711896 = r711894 * r711895;
double r711897 = r711891 - r711896;
double r711898 = -1.4759677576804433e+214;
bool r711899 = r711897 <= r711898;
double r711900 = 1.443274904361444e+217;
bool r711901 = r711897 <= r711900;
double r711902 = !r711901;
bool r711903 = r711899 || r711902;
double r711904 = 0.5;
double r711905 = a;
double r711906 = r711890 / r711905;
double r711907 = r711889 * r711906;
double r711908 = r711904 * r711907;
double r711909 = 4.5;
double r711910 = r711905 / r711892;
double r711911 = r711895 / r711910;
double r711912 = r711909 * r711911;
double r711913 = r711908 - r711912;
double r711914 = r711904 * r711891;
double r711915 = r711895 * r711892;
double r711916 = r711909 * r711915;
double r711917 = r711914 - r711916;
double r711918 = r711917 / r711905;
double r711919 = r711903 ? r711913 : r711918;
return r711919;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 7.7 |
|---|---|
| Target | 5.6 |
| Herbie | 0.9 |
if (- (* x y) (* (* z 9.0) t)) < -1.4759677576804433e+214 or 1.443274904361444e+217 < (- (* x y) (* (* z 9.0) t)) Initial program 31.2
Taylor expanded around 0 30.5
rmApplied associate-/l*16.8
rmApplied *-un-lft-identity16.8
Applied times-frac1.0
Simplified1.0
if -1.4759677576804433e+214 < (- (* x y) (* (* z 9.0) t)) < 1.443274904361444e+217Initial program 0.8
Taylor expanded around 0 0.8
rmApplied associate-*r/0.8
Applied associate-*r/0.8
Applied sub-div0.8
Final simplification0.9
herbie shell --seed 2020021
(FPCore (x y z t a)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, I"
:precision binary64
:herbie-target
(if (< a -2.090464557976709e+86) (- (* 0.5 (/ (* y x) a)) (* 4.5 (/ t (/ a z)))) (if (< a 2.144030707833976e+99) (/ (- (* x y) (* z (* 9 t))) (* a 2)) (- (* (/ y a) (* x 0.5)) (* (/ t a) (* z 4.5)))))
(/ (- (* x y) (* (* z 9) t)) (* a 2)))