\frac{x \cdot y - \left(z \cdot 9.0\right) \cdot t}{a \cdot 2.0}\begin{array}{l}
\mathbf{if}\;x \cdot y - \left(z \cdot 9.0\right) \cdot t = -\infty:\\
\;\;\;\;0.5 \cdot \frac{x \cdot y}{a} - \left(4.5 \cdot t\right) \cdot \frac{z}{a}\\
\mathbf{elif}\;x \cdot y - \left(z \cdot 9.0\right) \cdot t \le 8.023894752689931 \cdot 10^{+118}:\\
\;\;\;\;\frac{x \cdot y - \left(z \cdot 9.0\right) \cdot t}{2.0} \cdot \frac{1}{a}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{y}{a} \cdot x\right) \cdot 0.5 - 4.5 \cdot \frac{z \cdot t}{a}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r39748603 = x;
double r39748604 = y;
double r39748605 = r39748603 * r39748604;
double r39748606 = z;
double r39748607 = 9.0;
double r39748608 = r39748606 * r39748607;
double r39748609 = t;
double r39748610 = r39748608 * r39748609;
double r39748611 = r39748605 - r39748610;
double r39748612 = a;
double r39748613 = 2.0;
double r39748614 = r39748612 * r39748613;
double r39748615 = r39748611 / r39748614;
return r39748615;
}
double f(double x, double y, double z, double t, double a) {
double r39748616 = x;
double r39748617 = y;
double r39748618 = r39748616 * r39748617;
double r39748619 = z;
double r39748620 = 9.0;
double r39748621 = r39748619 * r39748620;
double r39748622 = t;
double r39748623 = r39748621 * r39748622;
double r39748624 = r39748618 - r39748623;
double r39748625 = -inf.0;
bool r39748626 = r39748624 <= r39748625;
double r39748627 = 0.5;
double r39748628 = a;
double r39748629 = r39748618 / r39748628;
double r39748630 = r39748627 * r39748629;
double r39748631 = 4.5;
double r39748632 = r39748631 * r39748622;
double r39748633 = r39748619 / r39748628;
double r39748634 = r39748632 * r39748633;
double r39748635 = r39748630 - r39748634;
double r39748636 = 8.023894752689931e+118;
bool r39748637 = r39748624 <= r39748636;
double r39748638 = 2.0;
double r39748639 = r39748624 / r39748638;
double r39748640 = 1.0;
double r39748641 = r39748640 / r39748628;
double r39748642 = r39748639 * r39748641;
double r39748643 = r39748617 / r39748628;
double r39748644 = r39748643 * r39748616;
double r39748645 = r39748644 * r39748627;
double r39748646 = r39748619 * r39748622;
double r39748647 = r39748646 / r39748628;
double r39748648 = r39748631 * r39748647;
double r39748649 = r39748645 - r39748648;
double r39748650 = r39748637 ? r39748642 : r39748649;
double r39748651 = r39748626 ? r39748635 : r39748650;
return r39748651;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 7.2 |
|---|---|
| Target | 5.0 |
| Herbie | 4.5 |
if (- (* x y) (* (* z 9.0) t)) < -inf.0Initial program 60.1
Taylor expanded around 0 59.8
rmApplied *-un-lft-identity59.8
Applied times-frac31.5
Applied associate-*r*31.5
Simplified31.5
if -inf.0 < (- (* x y) (* (* z 9.0) t)) < 8.023894752689931e+118Initial program 0.9
rmApplied *-un-lft-identity0.9
Applied times-frac1.0
if 8.023894752689931e+118 < (- (* x y) (* (* z 9.0) t)) Initial program 17.4
Taylor expanded around 0 17.3
rmApplied *-un-lft-identity17.3
Applied times-frac10.8
Simplified10.8
Final simplification4.5
herbie shell --seed 2019162
(FPCore (x y z t a)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, I"
: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.0 t))) (* a 2.0)) (- (* (/ y a) (* x 0.5)) (* (/ t a) (* z 4.5)))))
(/ (- (* x y) (* (* z 9.0) t)) (* a 2.0)))