\frac{x + y}{1 - \frac{y}{z}}\begin{array}{l}
\mathbf{if}\;\frac{x + y}{1 - \frac{y}{z}} \le -1.679371194434536427238190930168084149811 \cdot 10^{-273} \lor \neg \left(\frac{x + y}{1 - \frac{y}{z}} \le 0.0\right):\\
\;\;\;\;\frac{x + y}{1 - \frac{y}{z}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\sqrt{1} + \frac{\sqrt{y}}{\sqrt{z}}} \cdot \frac{x + y}{\sqrt{1} - \frac{\sqrt{y}}{\sqrt{z}}}\\
\end{array}double f(double x, double y, double z) {
double r374870 = x;
double r374871 = y;
double r374872 = r374870 + r374871;
double r374873 = 1.0;
double r374874 = z;
double r374875 = r374871 / r374874;
double r374876 = r374873 - r374875;
double r374877 = r374872 / r374876;
return r374877;
}
double f(double x, double y, double z) {
double r374878 = x;
double r374879 = y;
double r374880 = r374878 + r374879;
double r374881 = 1.0;
double r374882 = z;
double r374883 = r374879 / r374882;
double r374884 = r374881 - r374883;
double r374885 = r374880 / r374884;
double r374886 = -1.6793711944345364e-273;
bool r374887 = r374885 <= r374886;
double r374888 = 0.0;
bool r374889 = r374885 <= r374888;
double r374890 = !r374889;
bool r374891 = r374887 || r374890;
double r374892 = 1.0;
double r374893 = sqrt(r374881);
double r374894 = sqrt(r374879);
double r374895 = sqrt(r374882);
double r374896 = r374894 / r374895;
double r374897 = r374893 + r374896;
double r374898 = r374892 / r374897;
double r374899 = r374893 - r374896;
double r374900 = r374880 / r374899;
double r374901 = r374898 * r374900;
double r374902 = r374891 ? r374885 : r374901;
return r374902;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 7.6 |
|---|---|
| Target | 4.3 |
| Herbie | 6.4 |
if (/ (+ x y) (- 1.0 (/ y z))) < -1.6793711944345364e-273 or 0.0 < (/ (+ x y) (- 1.0 (/ y z))) Initial program 4.0
if -1.6793711944345364e-273 < (/ (+ x y) (- 1.0 (/ y z))) < 0.0Initial program 55.0
rmApplied add-sqr-sqrt59.4
Applied add-sqr-sqrt62.3
Applied times-frac62.3
Applied add-sqr-sqrt62.3
Applied difference-of-squares62.3
Applied *-un-lft-identity62.3
Applied times-frac59.7
Final simplification6.4
herbie shell --seed 2019208
(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))))