The **singular value decomposition** of an matrix is given by

where and are orthogonal (unitary) and is an diagonal matrix with real diagonal elements, , such that

The are the

The singular values and singular vectors satisfy:

where and are the columns of and respectively.

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 LA_GESVD computes all the singular values and (optionally) left and/or right singular vectors.

- a
**divide and conquer**driver LA_GESDD 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 in the LAPACK Users' Guide[1]).