\frac{x0}{1 - x1} - x0\begin{array}{l}
\mathbf{if}\;1 - x1 \le 0.99059549999999996:\\
\;\;\;\;\frac{\frac{\left(\left(\left(x0 \cdot x0\right) \cdot x0\right) \cdot \frac{1}{\left(\left(1 - x1\right) \cdot \left(1 - x1\right)\right) \cdot \left(1 - x1\right)}\right) \cdot \left(\left(\frac{x0}{1 - x1} \cdot \frac{x0}{1 - x1}\right) \cdot \frac{x0}{1 - x1}\right) - {\left(x0 \cdot x0\right)}^{3}}{\frac{x0}{1 - x1} \cdot \left({\left(\frac{x0}{1 - x1}\right)}^{3} + \frac{{x0}^{3}}{1 - x1}\right) + {x0}^{4}}}{\frac{x0}{1 - x1} + x0}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(x0 \cdot \frac{1}{1 - x1}\right) \cdot \frac{x0}{1 - x1} - x0 \cdot x0}{\left(\sqrt[3]{\frac{x0}{1 - x1} + x0} \cdot \sqrt[3]{\frac{x0}{1 - x1} + x0}\right) \cdot \sqrt[3]{\frac{x0}{1 - x1} + x0}}\\
\end{array}double f(double x0, double x1) {
double r207945 = x0;
double r207946 = 1.0;
double r207947 = x1;
double r207948 = r207946 - r207947;
double r207949 = r207945 / r207948;
double r207950 = r207949 - r207945;
return r207950;
}
double f(double x0, double x1) {
double r207951 = 1.0;
double r207952 = x1;
double r207953 = r207951 - r207952;
double r207954 = 0.9905955;
bool r207955 = r207953 <= r207954;
double r207956 = x0;
double r207957 = r207956 * r207956;
double r207958 = r207957 * r207956;
double r207959 = 1.0;
double r207960 = r207953 * r207953;
double r207961 = r207960 * r207953;
double r207962 = r207959 / r207961;
double r207963 = r207958 * r207962;
double r207964 = r207956 / r207953;
double r207965 = r207964 * r207964;
double r207966 = r207965 * r207964;
double r207967 = r207963 * r207966;
double r207968 = 3.0;
double r207969 = pow(r207957, r207968);
double r207970 = r207967 - r207969;
double r207971 = pow(r207964, r207968);
double r207972 = pow(r207956, r207968);
double r207973 = r207972 / r207953;
double r207974 = r207971 + r207973;
double r207975 = r207964 * r207974;
double r207976 = 4.0;
double r207977 = pow(r207956, r207976);
double r207978 = r207975 + r207977;
double r207979 = r207970 / r207978;
double r207980 = r207964 + r207956;
double r207981 = r207979 / r207980;
double r207982 = r207959 / r207953;
double r207983 = r207956 * r207982;
double r207984 = r207983 * r207964;
double r207985 = r207984 - r207957;
double r207986 = cbrt(r207980);
double r207987 = r207986 * r207986;
double r207988 = r207987 * r207986;
double r207989 = r207985 / r207988;
double r207990 = r207955 ? r207981 : r207989;
return r207990;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.8 |
|---|---|
| Target | 0.2 |
| Herbie | 4.0 |
if (- 1.0 x1) < 0.9905955Initial program 4.5
rmApplied flip--3.2
rmApplied div-inv3.2
rmApplied flip3--3.3
Simplified3.4
rmApplied add-cbrt-cube4.1
Applied add-cbrt-cube4.1
Applied add-cbrt-cube4.1
Applied cbrt-undiv4.5
Applied add-cbrt-cube4.1
Applied cbrt-unprod4.6
Applied cbrt-unprod4.1
Applied rem-cube-cbrt0
if 0.9905955 < (- 1.0 x1) Initial program 11.2
rmApplied flip--11.4
rmApplied div-inv8.1
rmApplied add-cube-cbrt8.0
Final simplification4.0
herbie shell --seed 2020056
(FPCore (x0 x1)
:name "(- (/ x0 (- 1 x1)) x0)"
:precision binary64
:pre (or (and (== x0 1.855) (== x1 0.000209)) (and (== x0 2.985) (== x1 0.0186)))
:herbie-target
(/ (* x0 x1) (- 1 x1))
(- (/ x0 (- 1 x1)) x0))