\frac{x + y}{1 - \frac{y}{z}}\begin{array}{l}
\mathbf{if}\;\frac{x + y}{1 - \frac{y}{z}} \le -5.260737244167179 \cdot 10^{-286} \lor \neg \left(\frac{x + y}{1 - \frac{y}{z}} \le 0.0\right):\\
\;\;\;\;\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 r567552 = x;
double r567553 = y;
double r567554 = r567552 + r567553;
double r567555 = 1.0;
double r567556 = z;
double r567557 = r567553 / r567556;
double r567558 = r567555 - r567557;
double r567559 = r567554 / r567558;
return r567559;
}
double f(double x, double y, double z) {
double r567560 = x;
double r567561 = y;
double r567562 = r567560 + r567561;
double r567563 = 1.0;
double r567564 = z;
double r567565 = r567561 / r567564;
double r567566 = r567563 - r567565;
double r567567 = r567562 / r567566;
double r567568 = -5.260737244167179e-286;
bool r567569 = r567567 <= r567568;
double r567570 = 0.0;
bool r567571 = r567567 <= r567570;
double r567572 = !r567571;
bool r567573 = r567569 || r567572;
double r567574 = sqrt(r567562);
double r567575 = sqrt(r567563);
double r567576 = sqrt(r567561);
double r567577 = sqrt(r567564);
double r567578 = r567576 / r567577;
double r567579 = r567575 + r567578;
double r567580 = r567574 / r567579;
double r567581 = r567575 - r567578;
double r567582 = r567581 / r567574;
double r567583 = r567580 / r567582;
double r567584 = r567573 ? r567567 : r567583;
return r567584;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 7.9 |
|---|---|
| Target | 4.1 |
| Herbie | 6.7 |
if (/ (+ x y) (- 1.0 (/ y z))) < -5.260737244167179e-286 or 0.0 < (/ (+ x y) (- 1.0 (/ y z))) Initial program 0.1
if -5.260737244167179e-286 < (/ (+ x y) (- 1.0 (/ y z))) < 0.0Initial program 58.4
rmApplied clear-num58.4
rmApplied add-sqr-sqrt61.5
Applied add-sqr-sqrt62.5
Applied add-sqr-sqrt62.6
Applied times-frac62.6
Applied add-sqr-sqrt62.6
Applied difference-of-squares62.6
Applied times-frac49.7
Applied associate-/r*49.7
Simplified49.7
Final simplification6.7
herbie shell --seed 2020046 +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))))