submodule(specialmatrices_toeplitz) toeplitz_svd implicit none(type, external) contains module procedure svdvals_rdp s = svdvals(dense(A)) end procedure svdvals_rdp module procedure svd_rdp real(dp), allocatable :: Amat(:, :) Amat = dense(A); call svd(Amat, s, u, vt, overwrite_a=.true.) end procedure svd_rdp end submodule toeplitz_svd