\frac{x \cdot \left(\left(y - z\right) + 1\right)}{z}\begin{array}{l}
\mathbf{if}\;z \le -115950917863283103134100794376192:\\
\;\;\;\;\frac{x}{\frac{z}{\left(y - z\right) + 1}}\\
\mathbf{elif}\;z \le 1.699875720445952633498395020587009021763 \cdot 10^{46}:\\
\;\;\;\;\left(\frac{x}{z} \cdot 1 + \frac{x \cdot y}{z}\right) - x\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\frac{z}{\left(y - z\right) + 1}}\\
\end{array}double f(double x, double y, double z) {
double r35152158 = x;
double r35152159 = y;
double r35152160 = z;
double r35152161 = r35152159 - r35152160;
double r35152162 = 1.0;
double r35152163 = r35152161 + r35152162;
double r35152164 = r35152158 * r35152163;
double r35152165 = r35152164 / r35152160;
return r35152165;
}
double f(double x, double y, double z) {
double r35152166 = z;
double r35152167 = -1.159509178632831e+32;
bool r35152168 = r35152166 <= r35152167;
double r35152169 = x;
double r35152170 = y;
double r35152171 = r35152170 - r35152166;
double r35152172 = 1.0;
double r35152173 = r35152171 + r35152172;
double r35152174 = r35152166 / r35152173;
double r35152175 = r35152169 / r35152174;
double r35152176 = 1.6998757204459526e+46;
bool r35152177 = r35152166 <= r35152176;
double r35152178 = r35152169 / r35152166;
double r35152179 = r35152178 * r35152172;
double r35152180 = r35152169 * r35152170;
double r35152181 = r35152180 / r35152166;
double r35152182 = r35152179 + r35152181;
double r35152183 = r35152182 - r35152169;
double r35152184 = r35152177 ? r35152183 : r35152175;
double r35152185 = r35152168 ? r35152175 : r35152184;
return r35152185;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 10.7 |
|---|---|
| Target | 0.4 |
| Herbie | 0.2 |
if z < -1.159509178632831e+32 or 1.6998757204459526e+46 < z Initial program 19.3
rmApplied associate-/l*0.1
if -1.159509178632831e+32 < z < 1.6998757204459526e+46Initial program 0.6
Taylor expanded around 0 0.4
Final simplification0.2
herbie shell --seed 2019171
(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.0 y) (/ x z)) x) (if (< x 3.874108816439546e-197) (* (* x (+ (- y z) 1.0)) (/ 1.0 z)) (- (* (+ 1.0 y) (/ x z)) x)))
(/ (* x (+ (- y z) 1.0)) z))