\frac{x + y}{1 - \frac{y}{z}}\begin{array}{l}
\mathbf{if}\;\frac{x + y}{1 - \frac{y}{z}} \le -1.911286667797281767261583807561479254136 \cdot 10^{-283} \lor \neg \left(\frac{x + y}{1 - \frac{y}{z}} \le -0.0\right):\\
\;\;\;\;\frac{x + y}{1 - \frac{y}{z}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\sqrt{1} + \frac{\sqrt{y}}{\sqrt{z}}}}{\frac{\sqrt{1} - \frac{\sqrt{y}}{\sqrt{z}}}{x + y}}\\
\end{array}double f(double x, double y, double z) {
double r533419 = x;
double r533420 = y;
double r533421 = r533419 + r533420;
double r533422 = 1.0;
double r533423 = z;
double r533424 = r533420 / r533423;
double r533425 = r533422 - r533424;
double r533426 = r533421 / r533425;
return r533426;
}
double f(double x, double y, double z) {
double r533427 = x;
double r533428 = y;
double r533429 = r533427 + r533428;
double r533430 = 1.0;
double r533431 = z;
double r533432 = r533428 / r533431;
double r533433 = r533430 - r533432;
double r533434 = r533429 / r533433;
double r533435 = -1.9112866677972818e-283;
bool r533436 = r533434 <= r533435;
double r533437 = -0.0;
bool r533438 = r533434 <= r533437;
double r533439 = !r533438;
bool r533440 = r533436 || r533439;
double r533441 = 1.0;
double r533442 = sqrt(r533430);
double r533443 = sqrt(r533428);
double r533444 = sqrt(r533431);
double r533445 = r533443 / r533444;
double r533446 = r533442 + r533445;
double r533447 = r533441 / r533446;
double r533448 = r533442 - r533445;
double r533449 = r533448 / r533429;
double r533450 = r533447 / r533449;
double r533451 = r533440 ? r533434 : r533450;
return r533451;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 7.9 |
|---|---|
| Target | 4.0 |
| Herbie | 6.5 |
if (/ (+ x y) (- 1.0 (/ y z))) < -1.9112866677972818e-283 or -0.0 < (/ (+ x y) (- 1.0 (/ y z))) Initial program 4.2
if -1.9112866677972818e-283 < (/ (+ x y) (- 1.0 (/ y z))) < -0.0Initial program 56.4
rmApplied clear-num56.4
rmApplied *-un-lft-identity56.4
Applied add-sqr-sqrt57.1
Applied add-sqr-sqrt61.3
Applied times-frac61.3
Applied add-sqr-sqrt61.3
Applied difference-of-squares61.3
Applied times-frac35.2
Applied associate-/r*35.2
Simplified35.2
Final simplification6.5
herbie shell --seed 2019297
(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.74293107626898565e171) (* (/ (+ y x) (- y)) z) (if (< y 3.55346624560867344e168) (/ (+ x y) (- 1 (/ y z))) (* (/ (+ y x) (- y)) z)))
(/ (+ x y) (- 1 (/ y z))))