\frac{x0}{1 - x1} - x0\begin{array}{l}
\mathbf{if}\;x1 \le 3.777387084960936829147737370249160449021 \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 r89677 = x0;
double r89678 = 1.0;
double r89679 = x1;
double r89680 = r89678 - r89679;
double r89681 = r89677 / r89680;
double r89682 = r89681 - r89677;
return r89682;
}
double f(double x0, double x1) {
double r89683 = x1;
double r89684 = 0.0003777387084960937;
bool r89685 = r89683 <= r89684;
double r89686 = x0;
double r89687 = 3.0;
double r89688 = pow(r89686, r89687);
double r89689 = 1.0;
double r89690 = r89689 - r89683;
double r89691 = 6.0;
double r89692 = pow(r89690, r89691);
double r89693 = r89688 / r89692;
double r89694 = r89693 - r89688;
double r89695 = exp(r89694);
double r89696 = sqrt(r89695);
double r89697 = log(r89696);
double r89698 = r89697 + r89697;
double r89699 = r89686 * r89686;
double r89700 = r89690 * r89690;
double r89701 = r89686 / r89700;
double r89702 = r89701 + r89686;
double r89703 = r89702 * r89701;
double r89704 = r89699 + r89703;
double r89705 = r89698 / r89704;
double r89706 = r89686 * r89705;
double r89707 = r89686 / r89690;
double r89708 = r89707 + r89686;
double r89709 = r89706 / r89708;
double r89710 = sqrt(r89689);
double r89711 = sqrt(r89683);
double r89712 = r89710 + r89711;
double r89713 = pow(r89712, r89691);
double r89714 = r89710 - r89711;
double r89715 = pow(r89714, r89691);
double r89716 = r89713 * r89715;
double r89717 = r89688 / r89716;
double r89718 = r89717 - r89688;
double r89719 = exp(r89718);
double r89720 = log(r89719);
double r89721 = r89720 / r89704;
double r89722 = r89686 * r89721;
double r89723 = r89722 / r89708;
double r89724 = r89685 ? r89709 : r89723;
return r89724;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.9 |
|---|---|
| Target | 0.2 |
| Herbie | 2.1 |
if x1 < 0.0003777387084960937Initial program 11.2
rmApplied flip--11.4
Simplified8.7
rmApplied flip3--6.1
Simplified6.1
rmApplied add-log-exp6.1
Applied add-log-exp6.1
Applied diff-log5.3
Simplified5.3
rmApplied add-sqr-sqrt3.6
Applied log-prod2.6
if 0.0003777387084960937 < 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 2019347
(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))