\frac{x + y}{1 - \frac{y}{z}}\begin{array}{l}
\mathbf{if}\;\frac{x + y}{1 - \frac{y}{z}} \le -9.340220995992204435937211078763363155616 \cdot 10^{-288} \lor \neg \left(\frac{x + y}{1 - \frac{y}{z}} \le -0.0\right):\\
\;\;\;\;1 \cdot \frac{x + y}{1 - \frac{y}{z}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt{x + y}}{\sqrt{1} + \frac{\sqrt{y}}{\sqrt{z}}}}{\frac{\sqrt{1} - \frac{\sqrt{y}}{\sqrt{z}}}{\sqrt{x + y}}}\\
\end{array}double f(double x, double y, double z) {
double r580198 = x;
double r580199 = y;
double r580200 = r580198 + r580199;
double r580201 = 1.0;
double r580202 = z;
double r580203 = r580199 / r580202;
double r580204 = r580201 - r580203;
double r580205 = r580200 / r580204;
return r580205;
}
double f(double x, double y, double z) {
double r580206 = x;
double r580207 = y;
double r580208 = r580206 + r580207;
double r580209 = 1.0;
double r580210 = z;
double r580211 = r580207 / r580210;
double r580212 = r580209 - r580211;
double r580213 = r580208 / r580212;
double r580214 = -9.340220995992204e-288;
bool r580215 = r580213 <= r580214;
double r580216 = -0.0;
bool r580217 = r580213 <= r580216;
double r580218 = !r580217;
bool r580219 = r580215 || r580218;
double r580220 = 1.0;
double r580221 = r580220 * r580213;
double r580222 = sqrt(r580208);
double r580223 = sqrt(r580209);
double r580224 = sqrt(r580207);
double r580225 = sqrt(r580210);
double r580226 = r580224 / r580225;
double r580227 = r580223 + r580226;
double r580228 = r580222 / r580227;
double r580229 = r580223 - r580226;
double r580230 = r580229 / r580222;
double r580231 = r580228 / r580230;
double r580232 = r580219 ? r580221 : r580231;
return r580232;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 7.6 |
|---|---|
| Target | 3.9 |
| Herbie | 6.4 |
if (/ (+ x y) (- 1.0 (/ y z))) < -9.340220995992204e-288 or -0.0 < (/ (+ x y) (- 1.0 (/ y z))) Initial program 4.1
rmApplied div-inv4.2
rmApplied *-un-lft-identity4.2
Applied associate-*l*4.2
Simplified4.1
if -9.340220995992204e-288 < (/ (+ x y) (- 1.0 (/ y z))) < -0.0Initial program 57.3
rmApplied clear-num57.3
rmApplied add-sqr-sqrt60.9
Applied add-sqr-sqrt61.0
Applied add-sqr-sqrt61.0
Applied times-frac61.0
Applied add-sqr-sqrt61.0
Applied difference-of-squares61.0
Applied times-frac35.5
Applied associate-/r*35.5
Simplified35.4
Final simplification6.4
herbie shell --seed 2020001
(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.7429310762689856e+171) (* (/ (+ y x) (- y)) z) (if (< y 3.5534662456086734e+168) (/ (+ x y) (- 1 (/ y z))) (* (/ (+ y x) (- y)) z)))
(/ (+ x y) (- 1 (/ y z))))