\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 r102372 = x0;
double r102373 = 1.0;
double r102374 = x1;
double r102375 = r102373 - r102374;
double r102376 = r102372 / r102375;
double r102377 = r102376 - r102372;
return r102377;
}
double f(double x0, double x1) {
double r102378 = x1;
double r102379 = 0.00021208908081054686;
bool r102380 = r102378 <= r102379;
double r102381 = x0;
double r102382 = 3.0;
double r102383 = pow(r102381, r102382);
double r102384 = 1.0;
double r102385 = r102384 - r102378;
double r102386 = 6.0;
double r102387 = pow(r102385, r102386);
double r102388 = r102383 / r102387;
double r102389 = r102388 - r102383;
double r102390 = exp(r102389);
double r102391 = sqrt(r102390);
double r102392 = log(r102391);
double r102393 = r102392 + r102392;
double r102394 = r102381 * r102381;
double r102395 = r102385 * r102385;
double r102396 = r102381 / r102395;
double r102397 = r102396 + r102381;
double r102398 = r102397 * r102396;
double r102399 = r102394 + r102398;
double r102400 = r102393 / r102399;
double r102401 = r102381 * r102400;
double r102402 = r102381 / r102385;
double r102403 = r102402 + r102381;
double r102404 = r102401 / r102403;
double r102405 = sqrt(r102384);
double r102406 = sqrt(r102378);
double r102407 = r102405 + r102406;
double r102408 = pow(r102407, r102386);
double r102409 = r102405 - r102406;
double r102410 = pow(r102409, r102386);
double r102411 = r102408 * r102410;
double r102412 = r102383 / r102411;
double r102413 = r102412 - r102383;
double r102414 = exp(r102413);
double r102415 = log(r102414);
double r102416 = r102415 / r102399;
double r102417 = r102381 * r102416;
double r102418 = r102417 / r102403;
double r102419 = r102380 ? r102404 : r102418;
return r102419;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.2 |
| Herbie | 2.1 |
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.2
Simplified5.2
rmApplied add-sqr-sqrt3.5
Applied log-prod2.6
if 0.00021208908081054686 < x1 Initial program 4.5
rmApplied flip--3.1
Simplified3.8
rmApplied flip3--3.9
Simplified3.9
rmApplied add-log-exp3.9
Applied add-log-exp3.9
Applied diff-log4.0
Simplified3.8
rmApplied add-sqr-sqrt3.8
Applied add-sqr-sqrt3.8
Applied difference-of-squares3.8
Applied unpow-prod-down1.6
Final simplification2.1
herbie shell --seed 2019325
(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))