\frac{x0}{1 - x1} - x0\begin{array}{l}
\mathbf{if}\;x1 \le 6.625985107421873947924906289586033381056 \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 r208568 = x0;
double r208569 = 1.0;
double r208570 = x1;
double r208571 = r208569 - r208570;
double r208572 = r208568 / r208571;
double r208573 = r208572 - r208568;
return r208573;
}
double f(double x0, double x1) {
double r208574 = x1;
double r208575 = 0.0006625985107421874;
bool r208576 = r208574 <= r208575;
double r208577 = x0;
double r208578 = 3.0;
double r208579 = pow(r208577, r208578);
double r208580 = 1.0;
double r208581 = r208580 - r208574;
double r208582 = 6.0;
double r208583 = pow(r208581, r208582);
double r208584 = r208579 / r208583;
double r208585 = r208584 - r208579;
double r208586 = exp(r208585);
double r208587 = sqrt(r208586);
double r208588 = log(r208587);
double r208589 = r208588 + r208588;
double r208590 = r208577 * r208577;
double r208591 = r208581 * r208581;
double r208592 = r208577 / r208591;
double r208593 = r208592 + r208577;
double r208594 = r208593 * r208592;
double r208595 = r208590 + r208594;
double r208596 = r208589 / r208595;
double r208597 = r208577 * r208596;
double r208598 = r208577 / r208581;
double r208599 = r208598 + r208577;
double r208600 = r208597 / r208599;
double r208601 = sqrt(r208580);
double r208602 = sqrt(r208574);
double r208603 = r208601 + r208602;
double r208604 = pow(r208603, r208582);
double r208605 = r208601 - r208602;
double r208606 = pow(r208605, r208582);
double r208607 = r208604 * r208606;
double r208608 = r208579 / r208607;
double r208609 = r208608 - r208579;
double r208610 = exp(r208609);
double r208611 = log(r208610);
double r208612 = r208611 / r208595;
double r208613 = r208577 * r208612;
double r208614 = r208613 / r208599;
double r208615 = r208576 ? r208600 : r208614;
return r208615;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.3 |
| Herbie | 2.1 |
if x1 < 0.0006625985107421874Initial 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.0006625985107421874 < x1 Initial program 4.6
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.1
herbie shell --seed 2019350
(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))