\frac{x + y}{1 - \frac{y}{z}}\begin{array}{l}
\mathbf{if}\;\frac{y + x}{1 - \frac{y}{z}} \le -2.713922652192975851304047207930983359652 \cdot 10^{-295}:\\
\;\;\;\;\frac{y + x}{1 - \frac{y}{z}}\\
\mathbf{elif}\;\frac{y + x}{1 - \frac{y}{z}} \le -0.0:\\
\;\;\;\;\frac{1}{\frac{\sqrt{1} - \frac{\sqrt{y}}{\sqrt{z}}}{\sqrt{y + x}} \cdot \frac{\sqrt{1} + \frac{\sqrt{y}}{\sqrt{z}}}{\sqrt{y + x}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{y + x}{1 - \frac{y}{z}}\\
\end{array}double f(double x, double y, double z) {
double r26466347 = x;
double r26466348 = y;
double r26466349 = r26466347 + r26466348;
double r26466350 = 1.0;
double r26466351 = z;
double r26466352 = r26466348 / r26466351;
double r26466353 = r26466350 - r26466352;
double r26466354 = r26466349 / r26466353;
return r26466354;
}
double f(double x, double y, double z) {
double r26466355 = y;
double r26466356 = x;
double r26466357 = r26466355 + r26466356;
double r26466358 = 1.0;
double r26466359 = z;
double r26466360 = r26466355 / r26466359;
double r26466361 = r26466358 - r26466360;
double r26466362 = r26466357 / r26466361;
double r26466363 = -2.713922652192976e-295;
bool r26466364 = r26466362 <= r26466363;
double r26466365 = -0.0;
bool r26466366 = r26466362 <= r26466365;
double r26466367 = 1.0;
double r26466368 = sqrt(r26466358);
double r26466369 = sqrt(r26466355);
double r26466370 = sqrt(r26466359);
double r26466371 = r26466369 / r26466370;
double r26466372 = r26466368 - r26466371;
double r26466373 = sqrt(r26466357);
double r26466374 = r26466372 / r26466373;
double r26466375 = r26466368 + r26466371;
double r26466376 = r26466375 / r26466373;
double r26466377 = r26466374 * r26466376;
double r26466378 = r26466367 / r26466377;
double r26466379 = r26466366 ? r26466378 : r26466362;
double r26466380 = r26466364 ? r26466362 : r26466379;
return r26466380;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 8.1 |
|---|---|
| Target | 4.5 |
| Herbie | 6.6 |
if (/ (+ x y) (- 1.0 (/ y z))) < -2.713922652192976e-295 or -0.0 < (/ (+ x y) (- 1.0 (/ y z))) Initial program 0.1
if -2.713922652192976e-295 < (/ (+ x y) (- 1.0 (/ y z))) < -0.0Initial program 59.6
rmApplied clear-num59.7
rmApplied add-sqr-sqrt61.9
Applied add-sqr-sqrt62.8
Applied add-sqr-sqrt62.9
Applied times-frac62.9
Applied add-sqr-sqrt62.9
Applied difference-of-squares62.9
Applied times-frac48.9
Final simplification6.6
herbie shell --seed 2019168 +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))))