I'm wondering why backward substitution is backward stable. For the 1D case $ax=b$, Let $x = f(a, b) = \frac{b}{a}$, and let $\bar{f}$ be an algorithm for $f$. Also let $\epsilon$ be a small error.
If $a \neq b$: $\bar{f}(a, b) = \frac{b(1+\epsilon_1)}{a(1+\epsilon_2)}(1+\epsilon_3) = \frac{b(1+\epsilon_4)}{a(1+\epsilon_2)} = \frac{\bar{b}}{\bar{a}} = f(\bar{b}, \bar{a})$
In the above, $b$ and $a$ are approximated with floating point numbers, adding an error of $\epsilon_i$ to each. The division is also on a computer, so it also has an error $\epsilon_3$.
It looks stable because $\bar{f}(a, b) = f(\bar{a}, \bar{b})$, where $\bar{a}$ and $\bar{b}$ are within some $\epsilon$ of $a$ and $b$
If $a=b$: $\bar{f}(a, a) = \frac{a(1+\epsilon_1)}{a(1+\epsilon_1)}(1+\epsilon_2) = (1+\epsilon_2) \neq f(\bar{a},\bar{a})= \frac{\bar{a}}{\bar{a}} = 1$
I think this is stable but not backward stable because the algorithm gives $1 + \epsilon$, but the function itself equals $1$.
I'm reading it is supposed to be backward stable though, can anyone tell me what I'm getting wrong?