The **singular value decomposition** of an *m*-by-*n* matrix
*A* is given by

where

The are the

The singular values and singular vectors satisfy:

where

There are two types of driver routines for the SVD. Originally LAPACK had just the simple driver described below, and the other one was added after an improved algorithm was discovered.

- a
**simple**driver xGESVD computes all the singular values and (optionally) left and/or right singular vectors. - a
**divide and conquer**driver xGESDD solves the same problem as the simple driver. It is much faster than the simple driver for large matrices, but uses more workspace. The name divide-and-conquer refers to the underlying algorithm (see sections 2.4.4 and 3.4.3).