docs: def nvecs(X, n, rank, do_flipsign=True, dtype=np.float):
      """
      Eigendecomposition of mode-n unfolding of a tensor
      """
      Xn = X.unfold(n)
      if issparse_mat(Xn):
          Xn = csr_matrix(Xn, dtype=dtype)
          Y = Xn.dot(Xn.T)
          _, U = eigsh(Y, rank, which='LM')
      else:
          Y = Xn.dot(Xn.T)
          N = Y.shape[0]
          _, U = eigh(Y, eigvals=(N - rank, N - 1))
          #_, U = eigsh(Y, rank, which='LM')
      # reverse order of eigenvectors such that eigenvalues are decreasing
      U = array(U[:, ::-1])
      # flip sign
      if do_flipsign:
          U = flipsign(U)
      return U