def iddp_asvd(eps, A):
A = np.asfortranarray(A)<EOL>m, n = A.shape<EOL>n2, winit = _id.idd_frmi(m)<EOL>w = np.empty(<EOL>max((min(m, n) + <NUM_LIT:1>)*(<NUM_LIT:3>*m + <NUM_LIT:5>*n + <NUM_LIT:1>) + <NUM_LIT>*min(m, n)**<NUM_LIT:2>,<EOL>(<NUM_LIT:2>*n + <NUM_LIT:1>)*(n2 + <NUM_LIT:1>)),<EOL>order='<STR_LIT:F>')<EOL>k, iU, iV, iS, w, ier = _id.iddp_asvd(eps, A, winit, w)<EOL>if ier:<EOL><INDENT>raise _RETCODE_ERROR<EOL><DEDENT>U = w[iU-<NUM_LIT:1>:iU+m*k-<NUM_LIT:1>].reshape((m, k), order='<STR_LIT:F>')<EOL>V = w[iV-<NUM_LIT:1>:iV+n*k-<NUM_LIT:1>].reshape((n, k), order='<STR_LIT:F>')<EOL>S = w[iS-<NUM_LIT:1>:iS+k-<NUM_LIT:1>]<EOL>return U, V, S<EOL>
Compute SVD of a real matrix to a specified relative precision using random
sampling.

:param eps:
    Relative precision.
:type eps: float
:param A:
    Matrix.
:type A: :class:`numpy.ndarray`

:return:
    Left singular vectors.
:rtype: :class:`numpy.ndarray`
:return:
    Right singular vectors.
:rtype: :class:`numpy.ndarray`
:return:
    Singular values.
:rtype: :class:`numpy.ndarray`