\frac{x \cdot \left(y - z\right)}{y}\begin{array}{l}
\mathbf{if}\;y \le -7.699929332195363087572042602326430898574 \cdot 10^{-162} \lor \neg \left(y \le 2.724407101896751811416130978286132894297 \cdot 10^{-107}\right):\\
\;\;\;\;x \cdot \left(1 - \frac{z}{y}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{y}{\left(y - z\right) \cdot x}}\\
\end{array}double f(double x, double y, double z) {
double r594389 = x;
double r594390 = y;
double r594391 = z;
double r594392 = r594390 - r594391;
double r594393 = r594389 * r594392;
double r594394 = r594393 / r594390;
return r594394;
}
double f(double x, double y, double z) {
double r594395 = y;
double r594396 = -7.699929332195363e-162;
bool r594397 = r594395 <= r594396;
double r594398 = 2.7244071018967518e-107;
bool r594399 = r594395 <= r594398;
double r594400 = !r594399;
bool r594401 = r594397 || r594400;
double r594402 = x;
double r594403 = 1.0;
double r594404 = z;
double r594405 = r594404 / r594395;
double r594406 = r594403 - r594405;
double r594407 = r594402 * r594406;
double r594408 = r594395 - r594404;
double r594409 = r594408 * r594402;
double r594410 = r594395 / r594409;
double r594411 = r594403 / r594410;
double r594412 = r594401 ? r594407 : r594411;
return r594412;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 12.4 |
|---|---|
| Target | 3.2 |
| Herbie | 2.9 |
if y < -7.699929332195363e-162 or 2.7244071018967518e-107 < y Initial program 13.2
rmApplied associate-/l*0.9
rmApplied div-inv1.2
Simplified1.1
if -7.699929332195363e-162 < y < 2.7244071018967518e-107Initial program 9.5
rmApplied associate-/l*11.1
rmApplied clear-num11.1
rmApplied div-inv11.2
Applied associate-/l*9.6
Simplified9.5
Final simplification2.9
herbie shell --seed 2019325 +o rules:numerics
(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))