\frac{x + y}{1 - \frac{y}{z}}\begin{array}{l}
\mathbf{if}\;\frac{y + x}{1 - \frac{y}{z}} \le -1.981647487679510152082317141904782990318 \cdot 10^{-298}:\\
\;\;\;\;\frac{y + x}{1 - \frac{y}{z}}\\
\mathbf{elif}\;\frac{y + x}{1 - \frac{y}{z}} \le 0.0:\\
\;\;\;\;\frac{1}{\frac{\sqrt{1} + \frac{\sqrt{y}}{\sqrt{z}}}{\frac{y + x}{\sqrt{1} - \frac{\sqrt{y}}{\sqrt{z}}}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{y + x}{1 - \frac{y}{z}}\\
\end{array}double f(double x, double y, double z) {
double r26047145 = x;
double r26047146 = y;
double r26047147 = r26047145 + r26047146;
double r26047148 = 1.0;
double r26047149 = z;
double r26047150 = r26047146 / r26047149;
double r26047151 = r26047148 - r26047150;
double r26047152 = r26047147 / r26047151;
return r26047152;
}
double f(double x, double y, double z) {
double r26047153 = y;
double r26047154 = x;
double r26047155 = r26047153 + r26047154;
double r26047156 = 1.0;
double r26047157 = z;
double r26047158 = r26047153 / r26047157;
double r26047159 = r26047156 - r26047158;
double r26047160 = r26047155 / r26047159;
double r26047161 = -1.98164748767951e-298;
bool r26047162 = r26047160 <= r26047161;
double r26047163 = 0.0;
bool r26047164 = r26047160 <= r26047163;
double r26047165 = 1.0;
double r26047166 = sqrt(r26047156);
double r26047167 = sqrt(r26047153);
double r26047168 = sqrt(r26047157);
double r26047169 = r26047167 / r26047168;
double r26047170 = r26047166 + r26047169;
double r26047171 = r26047166 - r26047169;
double r26047172 = r26047155 / r26047171;
double r26047173 = r26047170 / r26047172;
double r26047174 = r26047165 / r26047173;
double r26047175 = r26047164 ? r26047174 : r26047160;
double r26047176 = r26047162 ? r26047160 : r26047175;
return r26047176;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 7.8 |
|---|---|
| Target | 4.1 |
| Herbie | 6.3 |
if (/ (+ x y) (- 1.0 (/ y z))) < -1.98164748767951e-298 or 0.0 < (/ (+ x y) (- 1.0 (/ y z))) Initial program 0.1
if -1.98164748767951e-298 < (/ (+ x y) (- 1.0 (/ y z))) < 0.0Initial program 59.7
rmApplied clear-num59.7
rmApplied add-sqr-sqrt61.6
Applied add-sqr-sqrt62.7
Applied times-frac62.7
Applied add-sqr-sqrt62.7
Applied difference-of-squares62.7
Applied associate-/l*47.9
Final simplification6.3
herbie shell --seed 2019174 +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))))