\frac{x + y}{1.0 - \frac{y}{z}}\begin{array}{l}
\mathbf{if}\;\frac{y + x}{1.0 - \frac{y}{z}} \le -6.619731314741027 \cdot 10^{-303}:\\
\;\;\;\;\frac{y + x}{1.0 - \frac{y}{z}}\\
\mathbf{elif}\;\frac{y + x}{1.0 - \frac{y}{z}} \le -0.0:\\
\;\;\;\;\frac{y + x}{\sqrt{1.0} - \frac{\sqrt{y}}{\sqrt{z}}} \cdot \frac{1}{\sqrt{1.0} + \frac{\sqrt{y}}{\sqrt{z}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{y + x}{1.0 - \frac{y}{z}}\\
\end{array}double f(double x, double y, double z) {
double r25553544 = x;
double r25553545 = y;
double r25553546 = r25553544 + r25553545;
double r25553547 = 1.0;
double r25553548 = z;
double r25553549 = r25553545 / r25553548;
double r25553550 = r25553547 - r25553549;
double r25553551 = r25553546 / r25553550;
return r25553551;
}
double f(double x, double y, double z) {
double r25553552 = y;
double r25553553 = x;
double r25553554 = r25553552 + r25553553;
double r25553555 = 1.0;
double r25553556 = z;
double r25553557 = r25553552 / r25553556;
double r25553558 = r25553555 - r25553557;
double r25553559 = r25553554 / r25553558;
double r25553560 = -6.619731314741027e-303;
bool r25553561 = r25553559 <= r25553560;
double r25553562 = -0.0;
bool r25553563 = r25553559 <= r25553562;
double r25553564 = sqrt(r25553555);
double r25553565 = sqrt(r25553552);
double r25553566 = sqrt(r25553556);
double r25553567 = r25553565 / r25553566;
double r25553568 = r25553564 - r25553567;
double r25553569 = r25553554 / r25553568;
double r25553570 = 1.0;
double r25553571 = r25553564 + r25553567;
double r25553572 = r25553570 / r25553571;
double r25553573 = r25553569 * r25553572;
double r25553574 = r25553563 ? r25553573 : r25553559;
double r25553575 = r25553561 ? r25553559 : r25553574;
return r25553575;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 7.7 |
|---|---|
| Target | 4.0 |
| Herbie | 6.1 |
if (/ (+ x y) (- 1.0 (/ y z))) < -6.619731314741027e-303 or -0.0 < (/ (+ x y) (- 1.0 (/ y z))) Initial program 0.1
if -6.619731314741027e-303 < (/ (+ x y) (- 1.0 (/ y z))) < -0.0Initial program 59.7
rmApplied add-sqr-sqrt61.0
Applied add-sqr-sqrt61.9
Applied times-frac61.9
Applied add-sqr-sqrt61.9
Applied difference-of-squares61.9
Applied *-un-lft-identity61.9
Applied times-frac47.0
Final simplification6.1
herbie shell --seed 2019163 +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))))