\frac{x0}{1 - x1} - x0\begin{array}{l}
\mathbf{if}\;x1 \le 2.12089080810546861321705391922876060562 \cdot 10^{-4}:\\
\;\;\;\;\frac{x0 \cdot \frac{\log \left(\sqrt{e^{\frac{{x0}^{3}}{{\left(1 - x1\right)}^{6}} - {x0}^{3}}}\right) + \log \left(\sqrt{e^{\frac{{x0}^{3}}{{\left(1 - x1\right)}^{6}} - {x0}^{3}}}\right)}{x0 \cdot x0 + \left(\frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)} + x0\right) \cdot \frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)}}}{\frac{x0}{1 - x1} + x0}\\
\mathbf{else}:\\
\;\;\;\;\frac{x0 \cdot \frac{\log \left(e^{\frac{{x0}^{3}}{{\left(\sqrt{1} + \sqrt{x1}\right)}^{6} \cdot {\left(\sqrt{1} - \sqrt{x1}\right)}^{6}} - {x0}^{3}}\right)}{x0 \cdot x0 + \left(\frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)} + x0\right) \cdot \frac{x0}{\left(1 - x1\right) \cdot \left(1 - x1\right)}}}{\frac{x0}{1 - x1} + x0}\\
\end{array}double f(double x0, double x1) {
double r202205 = x0;
double r202206 = 1.0;
double r202207 = x1;
double r202208 = r202206 - r202207;
double r202209 = r202205 / r202208;
double r202210 = r202209 - r202205;
return r202210;
}
double f(double x0, double x1) {
double r202211 = x1;
double r202212 = 0.00021208908081054686;
bool r202213 = r202211 <= r202212;
double r202214 = x0;
double r202215 = 3.0;
double r202216 = pow(r202214, r202215);
double r202217 = 1.0;
double r202218 = r202217 - r202211;
double r202219 = 6.0;
double r202220 = pow(r202218, r202219);
double r202221 = r202216 / r202220;
double r202222 = r202221 - r202216;
double r202223 = exp(r202222);
double r202224 = sqrt(r202223);
double r202225 = log(r202224);
double r202226 = r202225 + r202225;
double r202227 = r202214 * r202214;
double r202228 = r202218 * r202218;
double r202229 = r202214 / r202228;
double r202230 = r202229 + r202214;
double r202231 = r202230 * r202229;
double r202232 = r202227 + r202231;
double r202233 = r202226 / r202232;
double r202234 = r202214 * r202233;
double r202235 = r202214 / r202218;
double r202236 = r202235 + r202214;
double r202237 = r202234 / r202236;
double r202238 = sqrt(r202217);
double r202239 = sqrt(r202211);
double r202240 = r202238 + r202239;
double r202241 = pow(r202240, r202219);
double r202242 = r202238 - r202239;
double r202243 = pow(r202242, r202219);
double r202244 = r202241 * r202243;
double r202245 = r202216 / r202244;
double r202246 = r202245 - r202216;
double r202247 = exp(r202246);
double r202248 = log(r202247);
double r202249 = r202248 / r202232;
double r202250 = r202214 * r202249;
double r202251 = r202250 / r202236;
double r202252 = r202213 ? r202237 : r202251;
return r202252;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.3 |
| Herbie | 2.0 |
if x1 < 0.00021208908081054686Initial program 11.2
rmApplied flip--11.4
Simplified8.7
rmApplied flip3--6.0
Simplified6.0
rmApplied add-log-exp6.0
Applied add-log-exp6.0
Applied diff-log5.1
Simplified5.1
rmApplied add-sqr-sqrt3.5
Applied log-prod2.5
if 0.00021208908081054686 < x1 Initial program 4.5
rmApplied flip--3.2
Simplified3.9
rmApplied flip3--3.9
Simplified3.9
rmApplied add-log-exp3.9
Applied add-log-exp3.9
Applied diff-log4.0
Simplified3.9
rmApplied add-sqr-sqrt3.9
Applied add-sqr-sqrt3.9
Applied difference-of-squares3.9
Applied unpow-prod-down1.6
Final simplification2.0
herbie shell --seed 2019351
(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))