\frac{x + y}{1 - \frac{y}{z}}\begin{array}{l}
\mathbf{if}\;\frac{x + y}{1 - \frac{y}{z}} \le -6.84000265306774071 \cdot 10^{-267} \lor \neg \left(\frac{x + y}{1 - \frac{y}{z}} \le -0.0\right):\\
\;\;\;\;\frac{x + y}{1 - \frac{y}{z}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{x + y}}{\sqrt{1} + \frac{\sqrt{y}}{\sqrt{z}}} \cdot \frac{\sqrt{x + y}}{\sqrt{1} - \frac{\sqrt{y}}{\sqrt{z}}}\\
\end{array}double f(double x, double y, double z) {
double r567426 = x;
double r567427 = y;
double r567428 = r567426 + r567427;
double r567429 = 1.0;
double r567430 = z;
double r567431 = r567427 / r567430;
double r567432 = r567429 - r567431;
double r567433 = r567428 / r567432;
return r567433;
}
double f(double x, double y, double z) {
double r567434 = x;
double r567435 = y;
double r567436 = r567434 + r567435;
double r567437 = 1.0;
double r567438 = z;
double r567439 = r567435 / r567438;
double r567440 = r567437 - r567439;
double r567441 = r567436 / r567440;
double r567442 = -6.840002653067741e-267;
bool r567443 = r567441 <= r567442;
double r567444 = -0.0;
bool r567445 = r567441 <= r567444;
double r567446 = !r567445;
bool r567447 = r567443 || r567446;
double r567448 = sqrt(r567436);
double r567449 = sqrt(r567437);
double r567450 = sqrt(r567435);
double r567451 = sqrt(r567438);
double r567452 = r567450 / r567451;
double r567453 = r567449 + r567452;
double r567454 = r567448 / r567453;
double r567455 = r567449 - r567452;
double r567456 = r567448 / r567455;
double r567457 = r567454 * r567456;
double r567458 = r567447 ? r567441 : r567457;
return r567458;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 7.5 |
|---|---|
| Target | 4.1 |
| Herbie | 6.4 |
if (/ (+ x y) (- 1.0 (/ y z))) < -6.840002653067741e-267 or -0.0 < (/ (+ x y) (- 1.0 (/ y z))) Initial program 0.1
if -6.840002653067741e-267 < (/ (+ x y) (- 1.0 (/ y z))) < -0.0Initial program 57.2
rmApplied add-sqr-sqrt59.5
Applied add-sqr-sqrt61.4
Applied times-frac61.4
Applied add-sqr-sqrt61.4
Applied difference-of-squares61.4
Applied add-sqr-sqrt61.6
Applied times-frac48.4
Final simplification6.4
herbie shell --seed 2020064
(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))))