def reconstruct_matrix_from_id(B, idx, proj):
    '\n    Reconstruct matrix from its ID.\n\n    A matrix `A` with skeleton matrix `B` and ID indices and coefficients `idx`\n    and `proj`, respectively, can be reconstructed as::\n\n        numpy.hstack([B, numpy.dot(B, proj)])[:,numpy.argsort(idx)]\n\n    See also :func:`reconstruct_interp_matrix` and\n    :func:`reconstruct_skel_matrix`.\n\n    ..  This function automatically detects the matrix data type and calls the\n        appropriate backend. For details, see :func:`_backend.idd_reconid` and\n        :func:`_backend.idz_reconid`.\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    :class:`numpy.ndarray`\n        Reconstructed matrix.\n    '
    if _is_real(B):
        return _backend.idd_reconid(B, (idx + 1), proj)
    else:
        return _backend.idz_reconid(B, (idx + 1), proj)
Reconstruct matrix from its ID.

A matrix `A` with skeleton matrix `B` and ID indices and coefficients `idx`
and `proj`, respectively, can be reconstructed as::

    numpy.hstack([B, numpy.dot(B, proj)])[:,numpy.argsort(idx)]

See also :func:`reconstruct_interp_matrix` and
:func:`reconstruct_skel_matrix`.

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

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

Returns
-------
:class:`numpy.ndarray`
    Reconstructed matrix.
def reconstruct_matrix_from_id(B, idx, proj):
    '\n    Reconstruct matrix from its ID.\n\n    A matrix `A` with skeleton matrix `B` and ID indices and coefficients `idx`\n    and `proj`, respectively, can be reconstructed as::\n\n        numpy.hstack([B, numpy.dot(B, proj)])[:,numpy.argsort(idx)]\n\n    See also :func:`reconstruct_interp_matrix` and\n    :func:`reconstruct_skel_matrix`.\n\n    ..  This function automatically detects the matrix data type and calls the\n        appropriate backend. For details, see :func:`_backend.idd_reconid` and\n        :func:`_backend.idz_reconid`.\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    :class:`numpy.ndarray`\n        Reconstructed matrix.\n    '
    if _is_real(B):
        return _backend.idd_reconid(B, (idx + 1), proj)
    else:
        return _backend.idz_reconid(B, (idx + 1), proj)