\frac{x + y}{1 - \frac{y}{z}}\begin{array}{l}
\mathbf{if}\;y \le 4.252183677385179002148581232137543065445 \cdot 10^{245}:\\
\;\;\;\;\left(x + y\right) \cdot \frac{1}{1 - \frac{y}{z}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{x + y}}{\sqrt{1} - \frac{\sqrt{y}}{\sqrt{z}}} \cdot \frac{\sqrt{x + y}}{\sqrt{1} + \frac{\sqrt{y}}{\sqrt{z}}}\\
\end{array}double f(double x, double y, double z) {
double r27975726 = x;
double r27975727 = y;
double r27975728 = r27975726 + r27975727;
double r27975729 = 1.0;
double r27975730 = z;
double r27975731 = r27975727 / r27975730;
double r27975732 = r27975729 - r27975731;
double r27975733 = r27975728 / r27975732;
return r27975733;
}
double f(double x, double y, double z) {
double r27975734 = y;
double r27975735 = 4.252183677385179e+245;
bool r27975736 = r27975734 <= r27975735;
double r27975737 = x;
double r27975738 = r27975737 + r27975734;
double r27975739 = 1.0;
double r27975740 = 1.0;
double r27975741 = z;
double r27975742 = r27975734 / r27975741;
double r27975743 = r27975740 - r27975742;
double r27975744 = r27975739 / r27975743;
double r27975745 = r27975738 * r27975744;
double r27975746 = sqrt(r27975738);
double r27975747 = sqrt(r27975740);
double r27975748 = sqrt(r27975734);
double r27975749 = sqrt(r27975741);
double r27975750 = r27975748 / r27975749;
double r27975751 = r27975747 - r27975750;
double r27975752 = r27975746 / r27975751;
double r27975753 = r27975747 + r27975750;
double r27975754 = r27975746 / r27975753;
double r27975755 = r27975752 * r27975754;
double r27975756 = r27975736 ? r27975745 : r27975755;
return r27975756;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 7.4 |
|---|---|
| Target | 4.0 |
| Herbie | 7.8 |
if y < 4.252183677385179e+245Initial program 6.4
rmApplied div-inv6.5
if 4.252183677385179e+245 < y Initial program 26.5
rmApplied add-sqr-sqrt45.0
Applied add-sqr-sqrt45.0
Applied times-frac45.0
Applied add-sqr-sqrt45.0
Applied difference-of-squares45.0
Applied add-sqr-sqrt45.2
Applied times-frac32.5
Final simplification7.8
herbie shell --seed 2019200 +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))))