def id_to_svd(B, idx, proj):
    '\n    Convert ID to SVD.\n\n    The SVD reconstruction of a matrix with skeleton matrix `B` and ID indices and\n    coefficients `idx` and `proj`, respectively, is::\n\n        U, S, V = id_to_svd(B, idx, proj)\n        A = numpy.dot(U, numpy.dot(numpy.diag(S), V.conj().T))\n\n    See also :func:`svd`.\n\n    ..  This function automatically detects the matrix data type and calls the\n        appropriate backend. For details, see :func:`_backend.idd_id2svd` and\n        :func:`_backend.idz_id2svd`.\n\n    Parameters\n    ----------\n    B : :class:`numpy.ndarray`\n        Skeleton matrix.\n    idx : :class:`numpy.ndarray`\n        Column index array.\n    proj : :class:`numpy.ndarray`\n        Interpolation coefficients.\n\n    Returns\n    -------\n    U : :class:`numpy.ndarray`\n        Left singular vectors.\n    S : :class:`numpy.ndarray`\n        Singular values.\n    V : :class:`numpy.ndarray`\n        Right singular vectors.\n    '
    if _is_real(B):
        (U, V, S) = _backend.idd_id2svd(B, (idx + 1), proj)
    else:
        (U, V, S) = _backend.idz_id2svd(B, (idx + 1), proj)
    return (U, S, V)
Convert ID to SVD.

The SVD reconstruction of a matrix with skeleton matrix `B` and ID indices and
coefficients `idx` and `proj`, respectively, is::

    U, S, V = id_to_svd(B, idx, proj)
    A = numpy.dot(U, numpy.dot(numpy.diag(S), V.conj().T))

See also :func:`svd`.

..  This function automatically detects the matrix data type and calls the
    appropriate backend. For details, see :func:`_backend.idd_id2svd` and
    :func:`_backend.idz_id2svd`.

Parameters
----------
B : :class:`numpy.ndarray`
    Skeleton matrix.
idx : :class:`numpy.ndarray`
    Column index array.
proj : :class:`numpy.ndarray`
    Interpolation coefficients.

Returns
-------
U : :class:`numpy.ndarray`
    Left singular vectors.
S : :class:`numpy.ndarray`
    Singular values.
V : :class:`numpy.ndarray`
    Right singular vectors.
def id_to_svd(B, idx, proj):
    '\n    Convert ID to SVD.\n\n    The SVD reconstruction of a matrix with skeleton matrix `B` and ID indices and\n    coefficients `idx` and `proj`, respectively, is::\n\n        U, S, V = id_to_svd(B, idx, proj)\n        A = numpy.dot(U, numpy.dot(numpy.diag(S), V.conj().T))\n\n    See also :func:`svd`.\n\n    ..  This function automatically detects the matrix data type and calls the\n        appropriate backend. For details, see :func:`_backend.idd_id2svd` and\n        :func:`_backend.idz_id2svd`.\n\n    Parameters\n    ----------\n    B : :class:`numpy.ndarray`\n        Skeleton matrix.\n    idx : :class:`numpy.ndarray`\n        Column index array.\n    proj : :class:`numpy.ndarray`\n        Interpolation coefficients.\n\n    Returns\n    -------\n    U : :class:`numpy.ndarray`\n        Left singular vectors.\n    S : :class:`numpy.ndarray`\n        Singular values.\n    V : :class:`numpy.ndarray`\n        Right singular vectors.\n    '
    if _is_real(B):
        (U, V, S) = _backend.idd_id2svd(B, (idx + 1), proj)
    else:
        (U, V, S) = _backend.idz_id2svd(B, (idx + 1), proj)
    return (U, S, V)