\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.570465535572884322699978790782884605691 \cdot 10^{-101} \lor \neg \left(x \cdot y - \left(z \cdot 9\right) \cdot t \le 1.47440313991068531415406912842436761104 \cdot 10^{-267} \lor \neg \left(x \cdot y - \left(z \cdot 9\right) \cdot t \le 6.212678920874577831195231744431104229608 \cdot 10^{275}\right)\right)\right):\\
\;\;\;\;0.5 \cdot \frac{x}{\frac{a}{y}} - \left(4.5 \cdot t\right) \cdot \frac{z}{a}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \frac{x \cdot y}{a} - 4.5 \cdot \frac{t \cdot z}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r653539 = x;
double r653540 = y;
double r653541 = r653539 * r653540;
double r653542 = z;
double r653543 = 9.0;
double r653544 = r653542 * r653543;
double r653545 = t;
double r653546 = r653544 * r653545;
double r653547 = r653541 - r653546;
double r653548 = a;
double r653549 = 2.0;
double r653550 = r653548 * r653549;
double r653551 = r653547 / r653550;
return r653551;
}
double f(double x, double y, double z, double t, double a) {
double r653552 = x;
double r653553 = y;
double r653554 = r653552 * r653553;
double r653555 = z;
double r653556 = 9.0;
double r653557 = r653555 * r653556;
double r653558 = t;
double r653559 = r653557 * r653558;
double r653560 = r653554 - r653559;
double r653561 = -inf.0;
bool r653562 = r653560 <= r653561;
double r653563 = -1.5704655355728843e-101;
bool r653564 = r653560 <= r653563;
double r653565 = 1.4744031399106853e-267;
bool r653566 = r653560 <= r653565;
double r653567 = 6.212678920874578e+275;
bool r653568 = r653560 <= r653567;
double r653569 = !r653568;
bool r653570 = r653566 || r653569;
double r653571 = !r653570;
bool r653572 = r653564 || r653571;
double r653573 = !r653572;
bool r653574 = r653562 || r653573;
double r653575 = 0.5;
double r653576 = a;
double r653577 = r653576 / r653553;
double r653578 = r653552 / r653577;
double r653579 = r653575 * r653578;
double r653580 = 4.5;
double r653581 = r653580 * r653558;
double r653582 = r653555 / r653576;
double r653583 = r653581 * r653582;
double r653584 = r653579 - r653583;
double r653585 = r653554 / r653576;
double r653586 = r653575 * r653585;
double r653587 = r653558 * r653555;
double r653588 = r653587 / r653576;
double r653589 = r653580 * r653588;
double r653590 = r653586 - r653589;
double r653591 = r653574 ? r653584 : r653590;
return r653591;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 7.9 |
|---|---|
| Target | 5.6 |
| Herbie | 0.5 |
if (- (* x y) (* (* z 9.0) t)) < -inf.0 or -1.5704655355728843e-101 < (- (* x y) (* (* z 9.0) t)) < 1.4744031399106853e-267 or 6.212678920874578e+275 < (- (* x y) (* (* z 9.0) t)) Initial program 33.8
Taylor expanded around 0 33.5
rmApplied *-un-lft-identity33.5
Applied times-frac19.0
Simplified19.0
rmApplied associate-*r*19.1
rmApplied associate-/l*1.3
if -inf.0 < (- (* x y) (* (* z 9.0) t)) < -1.5704655355728843e-101 or 1.4744031399106853e-267 < (- (* x y) (* (* z 9.0) t)) < 6.212678920874578e+275Initial program 0.3
Taylor expanded around 0 0.3
rmApplied *-un-lft-identity0.3
Applied times-frac5.4
Simplified5.4
rmApplied associate-*r*5.4
Taylor expanded around 0 0.3
Final simplification0.5
herbie shell --seed 2020001 +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)))