r"""Use matrix A to propagate vector x.

    Parameters
    ----------
    A : (M, M) scipy.sparse matrix
        Matrix of propagator
    x : (M, ) ndarray or scipy.sparse matrix
        Vector to propagate
    N : int
        Number of steps to propagate

    Returns
    -------
    y : (M, ) ndarray or scipy.sparse matrix
        Propagated vector

def propagate(A, x, N):
    r"""Use matrix A to propagate vector x.

    Parameters
    ----------
    A : (M, M) scipy.sparse matrix
        Matrix of propagator
    x : (M, ) ndarray or scipy.sparse matrix
        Vector to propagate
    N : int
        Number of steps to propagate

    Returns
    -------
    y : (M, ) ndarray or scipy.sparse matrix
        Propagated vector

    """
    y = 1.0 * x
    for i in range(N):
        y = A.dot(y)
    return y