Numerical stability concerns how errors introduced during the execution of an algorithm affect the result. It is a property of an algorithm rather than the problem being solved. I will assume that the errors under consideration are rounding errors, but in principle the errors can be from any source.

Consider a scalar function of a scalar . We regard as the input data and as the output. The forward error of a computed approximation to is the relative error . The backward error of is

If has a small backward error then it is the exact answer for a slightly perturbed input. Here, “small’ is interpreted relative to the floating-point arithmetic, so a small backward error means one of the form for a modest constant , where is the unit roundoff.

An algorithm that always produces a small backward error is called *backward stable*. In a backward stable algorithm the errors introduced during the algorithm have the same effect as a small perturbation in the data. If the backward error is the same size as any uncertainty in the data then the algorithm produces as good a result as we can expect.

If undergoes a relative perturbation of size then can change by as much as , where

is the condition number of at . An algorithm that always produces with a forward error of order is called *forward stable*.

The definition of implies that a backward stable algorithm is automatically forward stable. The converse is not true. An example of an algorithm that is forward stable but not backward stable is Gauss–Jordan elimination for solving a linear system.

If satisfies

with small in the sense described above, then the algorithm for computing is *mixed backward–forward stable*. Such an algorithm produces almost the right answer for a slightly perturbed input. The following diagram illustrates the previous equation.

With these definitions in hand, we can turn to the meaning of the term *numerically stable*. Depending on the context, numerical stability can mean that an algorithm is (a) backward stable, (b) forward stable, or (c) mixed backward–forward stable.

For some problems, backward stability is difficult or impossible to achieve, so numerical stability has meaning (b) or (c). For example, let , where and are -vectors. Backward stability would require the computed to satisfy for some small and , meaning that is a rank- matrix. But the computed contains independent rounding errors and is very unlikely to have rank .

We briefly mention some other relevant points.

- What is the data? For a linear system the data is or , or both. For a nonlinear function we need to consider whether problem parameters are data; for example, for are the and the constants or are they data, like , that can be perturbed?
- We have measured perturbations in a relative sense. Absolute errors can also be used.
- For problems whose inputs are matrices or vectors we need to use norms or componentwise measures.
- Some algorithms are only unconditionally numerically stable, that is, they are numerically stable for some subset of problems. For example, the normal equations method for solving a linear least squares problem is forward stable for problems with a large residual.

## References

This is a minimal set of references, which contain further useful references within.

- Robert M. Corless and Nicolas Fillion, A Graduate Introduction to Numerical Methods from the Viewpoint of Backward Error Analysis, Springer, New York, 2013. My review of this book.
- Nicholas J. Higham, Accuracy and Stability of Numerical Algorithms, second edition, Society for Industrial and Applied Mathematics, Philadelphia, PA, USA, 2002.

## Related Blog Posts

- What Is a Condition Number? (2020)
- What Is Backward Error? (2020)

This article is part of the “What Is” series, available from https://nhigham.com/category/what-is and in PDF form from the GitHub repository https://github.com/higham/what-is.