\frac{x + y}{1.0 - \frac{y}{z}}\begin{array}{l}
\mathbf{if}\;\frac{y + x}{1.0 - \frac{y}{z}} \le -2.5200352144339976 \cdot 10^{-283}:\\
\;\;\;\;\frac{y + x}{1.0 - \frac{y}{z}}\\
\mathbf{elif}\;\frac{y + x}{1.0 - \frac{y}{z}} \le -0.0:\\
\;\;\;\;\frac{\frac{\sqrt{y + x}}{\sqrt{\sqrt{1.0} + \frac{\sqrt{y}}{\sqrt{z}}}} \cdot \frac{\sqrt{y + x}}{\sqrt{\sqrt{1.0} + \frac{\sqrt{y}}{\sqrt{z}}}}}{\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 r29632418 = x;
double r29632419 = y;
double r29632420 = r29632418 + r29632419;
double r29632421 = 1.0;
double r29632422 = z;
double r29632423 = r29632419 / r29632422;
double r29632424 = r29632421 - r29632423;
double r29632425 = r29632420 / r29632424;
return r29632425;
}
double f(double x, double y, double z) {
double r29632426 = y;
double r29632427 = x;
double r29632428 = r29632426 + r29632427;
double r29632429 = 1.0;
double r29632430 = z;
double r29632431 = r29632426 / r29632430;
double r29632432 = r29632429 - r29632431;
double r29632433 = r29632428 / r29632432;
double r29632434 = -2.5200352144339976e-283;
bool r29632435 = r29632433 <= r29632434;
double r29632436 = -0.0;
bool r29632437 = r29632433 <= r29632436;
double r29632438 = sqrt(r29632428);
double r29632439 = sqrt(r29632429);
double r29632440 = sqrt(r29632426);
double r29632441 = sqrt(r29632430);
double r29632442 = r29632440 / r29632441;
double r29632443 = r29632439 + r29632442;
double r29632444 = sqrt(r29632443);
double r29632445 = r29632438 / r29632444;
double r29632446 = r29632445 * r29632445;
double r29632447 = r29632439 - r29632442;
double r29632448 = r29632446 / r29632447;
double r29632449 = r29632437 ? r29632448 : r29632433;
double r29632450 = r29632435 ? r29632433 : r29632449;
return r29632450;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 7.2 |
|---|---|
| Target | 4.0 |
| Herbie | 5.9 |
if (/ (+ x y) (- 1.0 (/ y z))) < -2.5200352144339976e-283 or -0.0 < (/ (+ x y) (- 1.0 (/ y z))) Initial program 0.1
if -2.5200352144339976e-283 < (/ (+ x y) (- 1.0 (/ y z))) < -0.0Initial program 58.9
rmApplied add-sqr-sqrt60.5
Applied add-sqr-sqrt61.7
Applied times-frac61.7
Applied add-sqr-sqrt61.7
Applied difference-of-squares61.7
Applied associate-/r*46.7
rmApplied add-sqr-sqrt46.7
Applied add-sqr-sqrt47.8
Applied times-frac47.8
Final simplification5.9
herbie shell --seed 2019164
(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))))