\frac{x \cdot \left(y - z\right)}{y}\begin{array}{l}
\mathbf{if}\;y \le -1.202704420599776119000768348402627115529 \cdot 10^{-68}:\\
\;\;\;\;x \cdot \frac{y - z}{y}\\
\mathbf{elif}\;y \le -2.739430284169036711408746407652821381307 \cdot 10^{-229}:\\
\;\;\;\;\frac{\frac{x}{y}}{\frac{1}{y - z}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\frac{y}{y - z}}\\
\end{array}double f(double x, double y, double z) {
double r681834 = x;
double r681835 = y;
double r681836 = z;
double r681837 = r681835 - r681836;
double r681838 = r681834 * r681837;
double r681839 = r681838 / r681835;
return r681839;
}
double f(double x, double y, double z) {
double r681840 = y;
double r681841 = -1.2027044205997761e-68;
bool r681842 = r681840 <= r681841;
double r681843 = x;
double r681844 = z;
double r681845 = r681840 - r681844;
double r681846 = r681845 / r681840;
double r681847 = r681843 * r681846;
double r681848 = -2.7394302841690367e-229;
bool r681849 = r681840 <= r681848;
double r681850 = r681843 / r681840;
double r681851 = 1.0;
double r681852 = r681851 / r681845;
double r681853 = r681850 / r681852;
double r681854 = r681840 / r681845;
double r681855 = r681843 / r681854;
double r681856 = r681849 ? r681853 : r681855;
double r681857 = r681842 ? r681847 : r681856;
return r681857;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 12.6 |
|---|---|
| Target | 3.1 |
| Herbie | 3.3 |
if y < -1.2027044205997761e-68Initial program 15.0
rmApplied *-un-lft-identity15.0
Applied times-frac0.4
Simplified0.4
if -1.2027044205997761e-68 < y < -2.7394302841690367e-229Initial program 7.4
rmApplied associate-/l*6.9
rmApplied div-inv7.0
Applied associate-/r*8.4
if -2.7394302841690367e-229 < y Initial program 12.2
rmApplied associate-/l*4.0
Final simplification3.3
herbie shell --seed 2020002
(FPCore (x y z)
:name "Diagrams.Backend.Cairo.Internal:setTexture from diagrams-cairo-1.3.0.3"
:precision binary64
:herbie-target
(if (< z -2.060202331921739e+104) (- x (/ (* z x) y)) (if (< z 1.6939766013828526e+213) (/ x (/ y (- y z))) (* (- y z) (/ x y))))
(/ (* x (- y z)) y))