Two separate causes
When a numerical result is inaccurate, there are exactly two candidates, and they demand opposite responses.
The algorithm may be at fault: a sequence of operations that loses precision unnecessarily, like the textbook quadratic formula from the second lesson. This is a bug, and rewriting the computation fixes it.
The problem may be at fault: the true mathematical answer may be so sensitive to its inputs that no algorithm could do better, because the inputs themselves are only known to sixteen digits. This is not a bug, and no rewriting fixes it.
Conflating the two wastes effort in both directions. People rewrite stable code chasing an error that was inherent to the problem, and they accept inherent-looking errors that were actually a fixable algorithm.
Numerical analysis separates them with two named quantities: conditioning describes the problem, stability describes the algorithm. Getting these apart is the single most useful idea in the subject.

