\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 r132554 = x0;
double r132555 = 1.0;
double r132556 = x1;
double r132557 = r132555 - r132556;
double r132558 = r132554 / r132557;
double r132559 = r132558 - r132554;
return r132559;
}
double f(double x0, double x1) {
double r132560 = x1;
double r132561 = 0.00021208908081054686;
bool r132562 = r132560 <= r132561;
double r132563 = x0;
double r132564 = 3.0;
double r132565 = pow(r132563, r132564);
double r132566 = 1.0;
double r132567 = r132566 - r132560;
double r132568 = 6.0;
double r132569 = pow(r132567, r132568);
double r132570 = r132565 / r132569;
double r132571 = r132570 - r132565;
double r132572 = exp(r132571);
double r132573 = sqrt(r132572);
double r132574 = log(r132573);
double r132575 = r132574 + r132574;
double r132576 = r132563 * r132563;
double r132577 = r132567 * r132567;
double r132578 = r132563 / r132577;
double r132579 = r132578 + r132563;
double r132580 = r132579 * r132578;
double r132581 = r132576 + r132580;
double r132582 = r132575 / r132581;
double r132583 = r132563 * r132582;
double r132584 = r132563 / r132567;
double r132585 = r132584 + r132563;
double r132586 = r132583 / r132585;
double r132587 = sqrt(r132566);
double r132588 = sqrt(r132560);
double r132589 = r132587 + r132588;
double r132590 = pow(r132589, r132568);
double r132591 = r132587 - r132588;
double r132592 = pow(r132591, r132568);
double r132593 = r132590 * r132592;
double r132594 = r132565 / r132593;
double r132595 = r132594 - r132565;
double r132596 = exp(r132595);
double r132597 = log(r132596);
double r132598 = r132597 / r132581;
double r132599 = r132563 * r132598;
double r132600 = r132599 / r132585;
double r132601 = r132562 ? r132586 : r132600;
return r132601;
}




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.2
Simplified5.2
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 2019326
(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))