# svd

svd(A, [thin=true]) -> U, S, V

Wrapper around `svdfact` extracting all parts the factorization to a tuple. Direct use of `svdfact` is therefore generally more efficient. Computes the SVD of `A`, returning `U`, vector `S`, and `V` such that `A == U*diagm(S)*V'`. If `thin` is `true`, an economy mode decomposition is returned. The default is to produce a thin decomposition.

## Examples

``````julia> A = [1 2; 3 4];
julia> B = [5 6; 7 8];
julia> U, V, Q, D1, D2, R0 = svd(A, B);

julia> U
2×2 Array{Float64,2}:
-0.404553  -0.914514
-0.914514   0.404553

julia> V
2×2 Array{Float64,2}:
-0.404553  -0.914514
-0.914514   0.404553

julia> Q
2×2 Array{Float64,2}:
-0.576048  -0.817416
-0.817416   0.576048

julia> D1
2-element Array{Float64,1}:
5.46499
0.365966

julia> D2
2-element Array{Float64,1}:
14.2274
0.332311

julia> R0
2×2 Array{Float64,2}:
-0.576048  -0.817416
-0.817416   0.576048``````

In this example, the `svd` function is used to compute the generalized Singular Value Decomposition (SVD) of matrices `A` and `B`. The resulting tuple contains `U`, `V`, `Q`, `D1`, `D2`, and `R0` matrices.

• `U` represents the left singular vectors of `A` and `B`.
• `V` represents the right singular vectors of `A` and `B`.
• `Q` is the orthogonal matrix used to transform `A` and `B`.
• `D1` and `D2` are the diagonal matrices containing the singular values of `A` and `B` respectively.
• `R0` is an auxiliary matrix used in the decomposition.

It is important to note that using `svdfact` directly is generally more efficient than using `svd` and extracting the individual parts.