\frac{x + y}{1 - \frac{y}{z}}\begin{array}{l}
\mathbf{if}\;\frac{x + y}{1 - \frac{y}{z}} \le -1.087750381558417553613496340902486478305 \cdot 10^{-303} \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{1 \cdot \left(x + y\right)}{\sqrt{1} - \frac{\sqrt{y}}{\sqrt{z}}}\\
\end{array}double f(double x, double y, double z) {
double r533997 = x;
double r533998 = y;
double r533999 = r533997 + r533998;
double r534000 = 1.0;
double r534001 = z;
double r534002 = r533998 / r534001;
double r534003 = r534000 - r534002;
double r534004 = r533999 / r534003;
return r534004;
}
double f(double x, double y, double z) {
double r534005 = x;
double r534006 = y;
double r534007 = r534005 + r534006;
double r534008 = 1.0;
double r534009 = z;
double r534010 = r534006 / r534009;
double r534011 = r534008 - r534010;
double r534012 = r534007 / r534011;
double r534013 = -1.0877503815584176e-303;
bool r534014 = r534012 <= r534013;
double r534015 = -0.0;
bool r534016 = r534012 <= r534015;
double r534017 = !r534016;
bool r534018 = r534014 || r534017;
double r534019 = 1.0;
double r534020 = sqrt(r534008);
double r534021 = sqrt(r534006);
double r534022 = sqrt(r534009);
double r534023 = r534021 / r534022;
double r534024 = r534020 + r534023;
double r534025 = r534019 / r534024;
double r534026 = r534019 * r534007;
double r534027 = r534020 - r534023;
double r534028 = r534026 / r534027;
double r534029 = r534025 * r534028;
double r534030 = r534018 ? r534012 : r534029;
return r534030;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 7.6 |
|---|---|
| Target | 4.1 |
| Herbie | 6.3 |
if (/ (+ x y) (- 1.0 (/ y z))) < -1.0877503815584176e-303 or -0.0 < (/ (+ x y) (- 1.0 (/ y z))) Initial program 4.2
if -1.0877503815584176e-303 < (/ (+ x y) (- 1.0 (/ y z))) < -0.0Initial program 60.1
rmApplied clear-num60.1
rmApplied *-un-lft-identity60.1
Applied add-sqr-sqrt60.5
Applied add-sqr-sqrt62.1
Applied times-frac62.1
Applied add-sqr-sqrt62.1
Applied difference-of-squares62.1
Applied times-frac36.7
Applied add-sqr-sqrt36.7
Applied times-frac36.7
Simplified36.7
Simplified36.7
Final simplification6.3
herbie shell --seed 2019298
(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))))