\frac{x \cdot \left(\left(y - z\right) + 1.0\right)}{z}\begin{array}{l}
\mathbf{if}\;x \le -3.632921685862537 \cdot 10^{-81}:\\
\;\;\;\;\frac{x}{\frac{z}{\left(y - z\right) + 1.0}}\\
\mathbf{elif}\;x \le 2472351452.7513905:\\
\;\;\;\;\frac{\left(\left(y - z\right) + 1.0\right) \cdot x}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\frac{z}{\left(y - z\right) + 1.0}}\\
\end{array}double f(double x, double y, double z) {
double r11757560 = x;
double r11757561 = y;
double r11757562 = z;
double r11757563 = r11757561 - r11757562;
double r11757564 = 1.0;
double r11757565 = r11757563 + r11757564;
double r11757566 = r11757560 * r11757565;
double r11757567 = r11757566 / r11757562;
return r11757567;
}
double f(double x, double y, double z) {
double r11757568 = x;
double r11757569 = -3.632921685862537e-81;
bool r11757570 = r11757568 <= r11757569;
double r11757571 = z;
double r11757572 = y;
double r11757573 = r11757572 - r11757571;
double r11757574 = 1.0;
double r11757575 = r11757573 + r11757574;
double r11757576 = r11757571 / r11757575;
double r11757577 = r11757568 / r11757576;
double r11757578 = 2472351452.7513905;
bool r11757579 = r11757568 <= r11757578;
double r11757580 = r11757575 * r11757568;
double r11757581 = r11757580 / r11757571;
double r11757582 = r11757579 ? r11757581 : r11757577;
double r11757583 = r11757570 ? r11757577 : r11757582;
return r11757583;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 8.7 |
|---|---|
| Target | 0.5 |
| Herbie | 0.2 |
if x < -3.632921685862537e-81 or 2472351452.7513905 < x Initial program 19.4
rmApplied associate-/l*0.3
if -3.632921685862537e-81 < x < 2472351452.7513905Initial program 0.2
Final simplification0.2
herbie shell --seed 2019156
(FPCore (x y z)
:name "Diagrams.TwoD.Segment.Bernstein:evaluateBernstein from diagrams-lib-1.3.0.3"
:herbie-target
(if (< x -2.71483106713436e-162) (- (* (+ 1 y) (/ x z)) x) (if (< x 3.874108816439546e-197) (* (* x (+ (- y z) 1.0)) (/ 1 z)) (- (* (+ 1 y) (/ x z)) x)))
(/ (* x (+ (- y z) 1.0)) z))