\frac{x \cdot \left(\left(y - z\right) + 1\right)}{z}\begin{array}{l}
\mathbf{if}\;z \le -1.314996886140635 \cdot 10^{74}:\\
\;\;\;\;\frac{x}{\frac{z}{\left(y - z\right) + 1}}\\
\mathbf{elif}\;z \le 251316865962609.19:\\
\;\;\;\;\frac{x \cdot \left(\left(y - z\right) + 1\right)}{z}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \frac{\left(y - z\right) + 1}{z}\\
\end{array}double f(double x, double y, double z) {
double r622030 = x;
double r622031 = y;
double r622032 = z;
double r622033 = r622031 - r622032;
double r622034 = 1.0;
double r622035 = r622033 + r622034;
double r622036 = r622030 * r622035;
double r622037 = r622036 / r622032;
return r622037;
}
double f(double x, double y, double z) {
double r622038 = z;
double r622039 = -1.314996886140635e+74;
bool r622040 = r622038 <= r622039;
double r622041 = x;
double r622042 = y;
double r622043 = r622042 - r622038;
double r622044 = 1.0;
double r622045 = r622043 + r622044;
double r622046 = r622038 / r622045;
double r622047 = r622041 / r622046;
double r622048 = 251316865962609.2;
bool r622049 = r622038 <= r622048;
double r622050 = r622041 * r622045;
double r622051 = r622050 / r622038;
double r622052 = r622045 / r622038;
double r622053 = r622041 * r622052;
double r622054 = r622049 ? r622051 : r622053;
double r622055 = r622040 ? r622047 : r622054;
return r622055;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 10.2 |
|---|---|
| Target | 0.4 |
| Herbie | 0.4 |
if z < -1.314996886140635e+74Initial program 20.3
rmApplied associate-/l*0.1
if -1.314996886140635e+74 < z < 251316865962609.2Initial program 0.8
if 251316865962609.2 < z Initial program 17.5
rmApplied *-un-lft-identity17.5
Applied times-frac0.1
Simplified0.1
Final simplification0.4
herbie shell --seed 2020100
(FPCore (x y z)
:name "Diagrams.TwoD.Segment.Bernstein:evaluateBernstein from diagrams-lib-1.3.0.3"
:precision binary64
:herbie-target
(if (< x -2.71483106713436e-162) (- (* (+ 1 y) (/ x z)) x) (if (< x 3.874108816439546e-197) (* (* x (+ (- y z) 1)) (/ 1 z)) (- (* (+ 1 y) (/ x z)) x)))
(/ (* x (+ (- y z) 1)) z))