\frac{x + y}{1 - \frac{y}{z}}\begin{array}{l}
\mathbf{if}\;\frac{x + y}{1 - \frac{y}{z}} \le -1.86966427272412941 \cdot 10^{-274} \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}{\frac{\sqrt{1} + \frac{\sqrt{y}}{\sqrt{z}}}{\frac{x + y}{\sqrt{1} - \frac{\sqrt{y}}{\sqrt{z}}}}}\\
\end{array}double f(double x, double y, double z) {
double r672126 = x;
double r672127 = y;
double r672128 = r672126 + r672127;
double r672129 = 1.0;
double r672130 = z;
double r672131 = r672127 / r672130;
double r672132 = r672129 - r672131;
double r672133 = r672128 / r672132;
return r672133;
}
double f(double x, double y, double z) {
double r672134 = x;
double r672135 = y;
double r672136 = r672134 + r672135;
double r672137 = 1.0;
double r672138 = z;
double r672139 = r672135 / r672138;
double r672140 = r672137 - r672139;
double r672141 = r672136 / r672140;
double r672142 = -1.8696642727241294e-274;
bool r672143 = r672141 <= r672142;
double r672144 = -0.0;
bool r672145 = r672141 <= r672144;
double r672146 = !r672145;
bool r672147 = r672143 || r672146;
double r672148 = 1.0;
double r672149 = sqrt(r672137);
double r672150 = sqrt(r672135);
double r672151 = sqrt(r672138);
double r672152 = r672150 / r672151;
double r672153 = r672149 + r672152;
double r672154 = r672149 - r672152;
double r672155 = r672136 / r672154;
double r672156 = r672153 / r672155;
double r672157 = r672148 / r672156;
double r672158 = r672147 ? r672141 : r672157;
return r672158;
}




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.8696642727241294e-274 or -0.0 < (/ (+ x y) (- 1.0 (/ y z))) Initial program 0.1
if -1.8696642727241294e-274 < (/ (+ x y) (- 1.0 (/ y z))) < -0.0Initial program 57.7
rmApplied clear-num57.7
rmApplied add-sqr-sqrt59.8
Applied add-sqr-sqrt62.0
Applied times-frac62.0
Applied add-sqr-sqrt62.0
Applied difference-of-squares62.0
Applied associate-/l*47.4
Final simplification6.3
herbie shell --seed 2020025 +o rules:numerics
(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))))