\frac{x + y}{1 - \frac{y}{z}}\begin{array}{l}
\mathbf{if}\;\frac{x + y}{1 - \frac{y}{z}} \le -2.02398009590988578 \cdot 10^{-290} \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{\sqrt[3]{1}}{\sqrt{1} - \frac{\sqrt{y}}{\sqrt{z}}}\\
\end{array}double f(double x, double y, double z) {
double r605416 = x;
double r605417 = y;
double r605418 = r605416 + r605417;
double r605419 = 1.0;
double r605420 = z;
double r605421 = r605417 / r605420;
double r605422 = r605419 - r605421;
double r605423 = r605418 / r605422;
return r605423;
}
double f(double x, double y, double z) {
double r605424 = x;
double r605425 = y;
double r605426 = r605424 + r605425;
double r605427 = 1.0;
double r605428 = z;
double r605429 = r605425 / r605428;
double r605430 = r605427 - r605429;
double r605431 = r605426 / r605430;
double r605432 = -2.0239800959098858e-290;
bool r605433 = r605431 <= r605432;
double r605434 = 0.0;
bool r605435 = r605431 <= r605434;
double r605436 = !r605435;
bool r605437 = r605433 || r605436;
double r605438 = sqrt(r605427);
double r605439 = sqrt(r605425);
double r605440 = sqrt(r605428);
double r605441 = r605439 / r605440;
double r605442 = r605438 + r605441;
double r605443 = r605426 / r605442;
double r605444 = 1.0;
double r605445 = cbrt(r605444);
double r605446 = r605438 - r605441;
double r605447 = r605445 / r605446;
double r605448 = r605443 * r605447;
double r605449 = r605437 ? r605431 : r605448;
return r605449;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 7.4 |
|---|---|
| Target | 3.7 |
| Herbie | 5.9 |
if (/ (+ x y) (- 1.0 (/ y z))) < -2.0239800959098858e-290 or 0.0 < (/ (+ x y) (- 1.0 (/ y z))) Initial program 0.1
if -2.0239800959098858e-290 < (/ (+ x y) (- 1.0 (/ y z))) < 0.0Initial program 59.2
rmApplied div-inv59.2
rmApplied add-sqr-sqrt61.1
Applied add-sqr-sqrt62.6
Applied times-frac62.6
Applied add-sqr-sqrt62.6
Applied difference-of-squares62.6
Applied add-cube-cbrt62.6
Applied times-frac61.7
Applied associate-*r*46.9
Simplified46.9
Final simplification5.9
herbie shell --seed 2020035 +o rules:numerics
(FPCore (x y z)
:name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1, A"
:precision binary64
:herbie-target
(if (< y -3.7429310762689856e+171) (* (/ (+ y x) (- y)) z) (if (< y 3.5534662456086734e+168) (/ (+ x y) (- 1 (/ y z))) (* (/ (+ y x) (- y)) z)))
(/ (+ x y) (- 1 (/ y z))))