svd Interface

public interface svd

This interface overloads the svd interface from stdlib_linalg to compute the the singular value decomposition of a Toeplitz matrix .

Syntax

   call svd(A, s, u, vt)

Arguments

  • A : Matrix of Toeplitz type. It is an intent(in) argument.

  • s : Rank-1 array real array returning the singular values of A. It is an intent(out) argument.

  • u (optional) : Rank-2 array of the same kind as A returning the left singular vectors of A as columns. Its size should be [n, n]. It is an intent(out) argument.

  • vt (optional) : Rank-2 array of the same kind as A returning the right singular vectors of A as rows. Its size should be [n, n]. It is an intent(out) argument.

Note

No analytic expression exist for the singular value of a general Toeplitz matrix. Under the hood, the matrix A is converted to its dense representation and the function svdvals from stdlib_linalg is used.


Subroutines

private module subroutine svd_rdp(A, s, u, vt)

Compute the singular value decomposition of a Toeplitz matrix.

Arguments

Type IntentOptional Attributes Name
type(Toeplitz), intent(in) :: A

Input matrix.

real(kind=dp), intent(out) :: s(:)

Singular values in descending order.

real(kind=dp), intent(out), optional :: u(:,:)

Left singular vectors as columns.

real(kind=dp), intent(out), optional :: vt(:,:)

Right singular vectors as rows.