\frac{x0}{1 - x1} - x0\begin{array}{l}
\mathbf{if}\;1 - x1 \le 0.99059549999999996:\\
\;\;\;\;\frac{\frac{{\left(\frac{x0}{1 - x1} \cdot \left(\frac{\sqrt[3]{x0} \cdot \sqrt[3]{x0}}{\sqrt{1 - x1}} \cdot \frac{\sqrt[3]{x0}}{\sqrt{1 - x1}}\right)\right)}^{3} - {\left({\left(x0 \cdot x0\right)}^{\left(\sqrt{3}\right)}\right)}^{\left(\sqrt{3}\right)}}{{x0}^{2} \cdot \left({x0}^{2} + \frac{x0}{1 - x1} \cdot \left(\frac{\sqrt[3]{x0} \cdot \sqrt[3]{x0}}{\sqrt{1 - x1}} \cdot \frac{\sqrt[3]{x0}}{\sqrt{1 - x1}}\right)\right) + \left(\frac{x0}{1 - x1} \cdot \left(\frac{\sqrt[3]{x0} \cdot \sqrt[3]{x0}}{\sqrt{1 - x1}} \cdot \frac{\sqrt[3]{x0}}{\sqrt{1 - x1}}\right)\right) \cdot \left(\frac{x0}{1 - x1} \cdot \left(\frac{\sqrt[3]{x0} \cdot \sqrt[3]{x0}}{\sqrt{1 - x1}} \cdot \frac{\sqrt[3]{x0}}{\sqrt{1 - x1}}\right)\right)}}{\frac{x0}{1 - x1} + x0}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{{\left({\left(\frac{x0}{1 - x1} \cdot \left(\frac{\sqrt[3]{x0} \cdot \sqrt[3]{x0}}{\sqrt{1 - x1}} \cdot \frac{\sqrt[3]{x0}}{\sqrt{1 - x1}}\right)\right)}^{3}\right)}^{3} - {\left({\left(x0 \cdot x0\right)}^{3}\right)}^{3}}{\left({\left(\frac{x0}{1 - x1} \cdot \left(\frac{\sqrt[3]{x0} \cdot \sqrt[3]{x0}}{\sqrt{1 - x1}} \cdot \frac{\sqrt[3]{x0}}{\sqrt{1 - x1}}\right)\right)}^{6} + {\left(\frac{x0}{1 - x1} \cdot \left(\frac{\sqrt[3]{x0} \cdot \sqrt[3]{x0}}{\sqrt{1 - x1}} \cdot \frac{\sqrt[3]{x0}}{\sqrt{1 - x1}}\right)\right)}^{3} \cdot {\left(x0 \cdot x0\right)}^{3}\right) + {x0}^{12}}}{{x0}^{2} \cdot \left({x0}^{2} + \frac{x0}{1 - x1} \cdot \left(\frac{\sqrt[3]{x0} \cdot \sqrt[3]{x0}}{\sqrt{1 - x1}} \cdot \frac{\sqrt[3]{x0}}{\sqrt{1 - x1}}\right)\right) + \left(\frac{x0}{1 - x1} \cdot \left(\frac{\sqrt[3]{x0} \cdot \sqrt[3]{x0}}{\sqrt{1 - x1}} \cdot \frac{\sqrt[3]{x0}}{\sqrt{1 - x1}}\right)\right) \cdot \left(\frac{x0}{1 - x1} \cdot \left(\frac{\sqrt[3]{x0} \cdot \sqrt[3]{x0}}{\sqrt{1 - x1}} \cdot \frac{\sqrt[3]{x0}}{\sqrt{1 - x1}}\right)\right)}}{\frac{x0}{1 - x1} + x0}\\
\end{array}double f(double x0, double x1) {
double r197807 = x0;
double r197808 = 1.0;
double r197809 = x1;
double r197810 = r197808 - r197809;
double r197811 = r197807 / r197810;
double r197812 = r197811 - r197807;
return r197812;
}
double f(double x0, double x1) {
double r197813 = 1.0;
double r197814 = x1;
double r197815 = r197813 - r197814;
double r197816 = 0.9905955;
bool r197817 = r197815 <= r197816;
double r197818 = x0;
double r197819 = r197818 / r197815;
double r197820 = cbrt(r197818);
double r197821 = r197820 * r197820;
double r197822 = sqrt(r197815);
double r197823 = r197821 / r197822;
double r197824 = r197820 / r197822;
double r197825 = r197823 * r197824;
double r197826 = r197819 * r197825;
double r197827 = 3.0;
double r197828 = pow(r197826, r197827);
double r197829 = r197818 * r197818;
double r197830 = sqrt(r197827);
double r197831 = pow(r197829, r197830);
double r197832 = pow(r197831, r197830);
double r197833 = r197828 - r197832;
double r197834 = 2.0;
double r197835 = pow(r197818, r197834);
double r197836 = r197835 + r197826;
double r197837 = r197835 * r197836;
double r197838 = r197826 * r197826;
double r197839 = r197837 + r197838;
double r197840 = r197833 / r197839;
double r197841 = r197819 + r197818;
double r197842 = r197840 / r197841;
double r197843 = pow(r197828, r197827);
double r197844 = pow(r197829, r197827);
double r197845 = pow(r197844, r197827);
double r197846 = r197843 - r197845;
double r197847 = 6.0;
double r197848 = pow(r197826, r197847);
double r197849 = r197828 * r197844;
double r197850 = r197848 + r197849;
double r197851 = 12.0;
double r197852 = pow(r197818, r197851);
double r197853 = r197850 + r197852;
double r197854 = r197846 / r197853;
double r197855 = r197854 / r197839;
double r197856 = r197855 / r197841;
double r197857 = r197817 ? r197842 : r197856;
return r197857;
}




Bits error versus x0




Bits error versus x1
Results
| Original | 7.8 |
|---|---|
| Target | 0.3 |
| Herbie | 3.8 |
if (- 1.0 x1) < 0.9905955Initial program 4.6
rmApplied flip--3.2
rmApplied add-sqr-sqrt3.2
Applied add-cube-cbrt3.2
Applied times-frac5.2
rmApplied flip3--5.2
Simplified5.2
rmApplied add-sqr-sqrt2.3
Applied pow-unpow0.5
if 0.9905955 < (- 1.0 x1) Initial program 11.2
rmApplied flip--11.4
rmApplied add-sqr-sqrt8.0
Applied add-cube-cbrt8.0
Applied times-frac8.0
rmApplied flip3--8.0
Simplified8.0
rmApplied flip3--7.3
Simplified7.3
Final simplification3.8
herbie shell --seed 2020064
(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))