I am studying theorem 4 in this article (its proof is under theorem 13). From what I have learned, the theorem is helpful when $x$ is small but $1 \oplus x \neq 1$. At the end of theorem 4, it discussed idea of benign cancellation as follow:
The results of this section can be summarized by saying that a guard digit guarantees accuracy when nearby precisely known quantities are subtracted (benign cancellation). Sometimes a formula that gives inaccurate results can be rewritten to have much higher numerical accuracy by using benign cancellation; however, the procedure only works if subtraction is performed using a guard digit. The price of a guard digit is not high, because it merely requires making the adder one bit wider. For a 54 bit double precision adder, the additional cost is less than 2%. For this price, you gain the ability to run many algorithms such as formula (6) for computing the area of a triangle and the expression $\ln(1 + x)$. Although most modern computers have a guard digit, there are a few (such as Cray systems) that do not.
From what I understood, the enhanced formula,$\frac{ln(x+1)}{(1+x)-1}$, helps replacing the catastrophic cancellation with benign cancellation. I assumed $\ln(1+x)$ causes catastrophic cancellation.
My Question: I cannot follow how the catastrophic cancellation was replaced with benign cancellation when we replaced $\frac{ln(x+1)}{x}$ with $\frac{ln(x+1)}{(1+x)-1}$.
Can anyone please help clarifying this?
Thanks.
The idea is that you have a function that satisfies $f(1+x)=x\,g(x)$ with $g(0)=1\ne0$.
However, in computing $1⊕x$ you may lose precision in $x$ as $\bar x=(1⊕x)⊖1$ will be different by about $\mu=2^{-53}$ in
doublefloating point. This means that the relative error between $x$ and $\bar x$ is $\mu/|x|$ can be arbitrarily high, and thus also the relative error between $f(1+x)$ and $f(1+\bar x)=f(1⊕x)$, seeing that $$ f(1⊕x) = \bar x\,g(\bar x) $$ will also exhibit this reduced precision. But one can easily repair most of the damage by dividing out $\bar x$ and multiplying with $x$ as the relative error between $x\,g(\bar x)$ and $x\,g(x)$ has the size $\mu g'(0)/g(0)$, that is, it is small independent of $x$ (for small $x$).So finally, $\dfrac{x\,f(1+\bar x)}{\bar x}$ is implemented as