\frac{x + y}{1.0 - \frac{y}{z}}\begin{array}{l}
\mathbf{if}\;\frac{y + x}{1.0 - \frac{y}{z}} \le -5.015331337804172 \cdot 10^{-270}:\\
\;\;\;\;\frac{y + x}{1.0 - \frac{y}{z}}\\
\mathbf{elif}\;\frac{y + x}{1.0 - \frac{y}{z}} \le -0.0:\\
\;\;\;\;\frac{1}{\frac{\sqrt{y}}{\sqrt{z}} + \sqrt{1.0}} \cdot \frac{y + x}{\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 r42160973 = x;
double r42160974 = y;
double r42160975 = r42160973 + r42160974;
double r42160976 = 1.0;
double r42160977 = z;
double r42160978 = r42160974 / r42160977;
double r42160979 = r42160976 - r42160978;
double r42160980 = r42160975 / r42160979;
return r42160980;
}
double f(double x, double y, double z) {
double r42160981 = y;
double r42160982 = x;
double r42160983 = r42160981 + r42160982;
double r42160984 = 1.0;
double r42160985 = z;
double r42160986 = r42160981 / r42160985;
double r42160987 = r42160984 - r42160986;
double r42160988 = r42160983 / r42160987;
double r42160989 = -5.015331337804172e-270;
bool r42160990 = r42160988 <= r42160989;
double r42160991 = -0.0;
bool r42160992 = r42160988 <= r42160991;
double r42160993 = 1.0;
double r42160994 = sqrt(r42160981);
double r42160995 = sqrt(r42160985);
double r42160996 = r42160994 / r42160995;
double r42160997 = sqrt(r42160984);
double r42160998 = r42160996 + r42160997;
double r42160999 = r42160993 / r42160998;
double r42161000 = r42160997 - r42160996;
double r42161001 = r42160983 / r42161000;
double r42161002 = r42160999 * r42161001;
double r42161003 = r42160992 ? r42161002 : r42160988;
double r42161004 = r42160990 ? r42160988 : r42161003;
return r42161004;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 7.6 |
|---|---|
| Target | 4.2 |
| Herbie | 6.1 |
if (/ (+ x y) (- 1.0 (/ y z))) < -5.015331337804172e-270 or -0.0 < (/ (+ x y) (- 1.0 (/ y z))) Initial program 0.1
if -5.015331337804172e-270 < (/ (+ x y) (- 1.0 (/ y z))) < -0.0Initial program 56.8
rmApplied clear-num56.8
rmApplied *-un-lft-identity56.8
Applied add-sqr-sqrt58.4
Applied add-sqr-sqrt60.4
Applied times-frac60.4
Applied add-sqr-sqrt60.4
Applied difference-of-squares60.4
Applied times-frac45.7
Applied add-cube-cbrt45.7
Applied times-frac45.8
Simplified45.8
Simplified45.7
Final simplification6.1
herbie shell --seed 2019158
(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))))