\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 = -\infty \lor \neg \left(x \cdot y - \left(z \cdot 9\right) \cdot t \le 1.2344983160605906 \cdot 10^{285}\right):\\
\;\;\;\;0.5 \cdot \left(x \cdot \frac{y}{a}\right) - 4.5 \cdot \left(\frac{t}{\sqrt[3]{a} \cdot \sqrt[3]{a}} \cdot \frac{z}{\sqrt[3]{a}}\right)\\
\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 r414432 = x;
double r414433 = y;
double r414434 = r414432 * r414433;
double r414435 = z;
double r414436 = 9.0;
double r414437 = r414435 * r414436;
double r414438 = t;
double r414439 = r414437 * r414438;
double r414440 = r414434 - r414439;
double r414441 = a;
double r414442 = 2.0;
double r414443 = r414441 * r414442;
double r414444 = r414440 / r414443;
return r414444;
}
double f(double x, double y, double z, double t, double a) {
double r414445 = x;
double r414446 = y;
double r414447 = r414445 * r414446;
double r414448 = z;
double r414449 = 9.0;
double r414450 = r414448 * r414449;
double r414451 = t;
double r414452 = r414450 * r414451;
double r414453 = r414447 - r414452;
double r414454 = -inf.0;
bool r414455 = r414453 <= r414454;
double r414456 = 1.2344983160605906e+285;
bool r414457 = r414453 <= r414456;
double r414458 = !r414457;
bool r414459 = r414455 || r414458;
double r414460 = 0.5;
double r414461 = a;
double r414462 = r414446 / r414461;
double r414463 = r414445 * r414462;
double r414464 = r414460 * r414463;
double r414465 = 4.5;
double r414466 = cbrt(r414461);
double r414467 = r414466 * r414466;
double r414468 = r414451 / r414467;
double r414469 = r414448 / r414466;
double r414470 = r414468 * r414469;
double r414471 = r414465 * r414470;
double r414472 = r414464 - r414471;
double r414473 = r414460 * r414447;
double r414474 = r414451 * r414448;
double r414475 = r414465 * r414474;
double r414476 = r414473 - r414475;
double r414477 = r414476 / r414461;
double r414478 = r414459 ? r414472 : r414477;
return r414478;
}




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.8 |
| Herbie | 0.8 |
if (- (* x y) (* (* z 9.0) t)) < -inf.0 or 1.2344983160605906e+285 < (- (* x y) (* (* z 9.0) t)) Initial program 57.1
Taylor expanded around 0 57.0
rmApplied add-cube-cbrt57.0
Applied times-frac31.3
rmApplied *-un-lft-identity31.3
Applied times-frac0.9
Simplified0.9
if -inf.0 < (- (* x y) (* (* z 9.0) t)) < 1.2344983160605906e+285Initial program 0.9
Taylor expanded around 0 0.9
rmApplied associate-*r/0.9
Applied associate-*r/0.8
Applied sub-div0.8
Final simplification0.8
herbie shell --seed 2020042 +o rules:numerics
(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)))