\frac{x + y}{1 - \frac{y}{z}}\begin{array}{l}
\mathbf{if}\;\frac{x + y}{1 - \frac{y}{z}} \le -7.35087092213161045 \cdot 10^{-289} \lor \neg \left(\frac{x + y}{1 - \frac{y}{z}} \le -0.0\right):\\
\;\;\;\;\frac{x + y}{1 - \frac{y}{z}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + y}{\sqrt{1} + \frac{\sqrt{y}}{\sqrt{z}}} \cdot \frac{1}{\sqrt{1} - \frac{\sqrt{y}}{\sqrt{z}}}\\
\end{array}double f(double x, double y, double z) {
double r473519 = x;
double r473520 = y;
double r473521 = r473519 + r473520;
double r473522 = 1.0;
double r473523 = z;
double r473524 = r473520 / r473523;
double r473525 = r473522 - r473524;
double r473526 = r473521 / r473525;
return r473526;
}
double f(double x, double y, double z) {
double r473527 = x;
double r473528 = y;
double r473529 = r473527 + r473528;
double r473530 = 1.0;
double r473531 = z;
double r473532 = r473528 / r473531;
double r473533 = r473530 - r473532;
double r473534 = r473529 / r473533;
double r473535 = -7.35087092213161e-289;
bool r473536 = r473534 <= r473535;
double r473537 = -0.0;
bool r473538 = r473534 <= r473537;
double r473539 = !r473538;
bool r473540 = r473536 || r473539;
double r473541 = sqrt(r473530);
double r473542 = sqrt(r473528);
double r473543 = sqrt(r473531);
double r473544 = r473542 / r473543;
double r473545 = r473541 + r473544;
double r473546 = r473529 / r473545;
double r473547 = 1.0;
double r473548 = r473541 - r473544;
double r473549 = r473547 / r473548;
double r473550 = r473546 * r473549;
double r473551 = r473540 ? r473534 : r473550;
return r473551;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 7.7 |
|---|---|
| Target | 4.3 |
| Herbie | 6.4 |
if (/ (+ x y) (- 1.0 (/ y z))) < -7.35087092213161e-289 or -0.0 < (/ (+ x y) (- 1.0 (/ y z))) Initial program 4.3
rmApplied div-inv4.3
rmApplied pow14.3
Applied pow14.3
Applied pow-prod-down4.3
Simplified4.3
if -7.35087092213161e-289 < (/ (+ x y) (- 1.0 (/ y z))) < -0.0Initial program 57.6
rmApplied div-inv57.6
rmApplied add-sqr-sqrt58.1
Applied add-sqr-sqrt61.0
Applied times-frac61.1
Applied add-sqr-sqrt61.1
Applied difference-of-squares61.1
Applied *-un-lft-identity61.1
Applied times-frac59.4
Applied associate-*r*35.0
Simplified35.0
Final simplification6.4
herbie shell --seed 2019199 +o rules:numerics
(FPCore (x y z)
:name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1, A"
:herbie-target
(if (< y -3.7429310762689856e+171) (* (/ (+ y x) (- y)) z) (if (< y 3.5534662456086734e+168) (/ (+ x y) (- 1.0 (/ y z))) (* (/ (+ y x) (- y)) z)))
(/ (+ x y) (- 1.0 (/ y z))))