def _one_over_lipschitzA(self, Xs):
    (A, S) = Xs
    if (self.WA is 1):
        return (1.0 / utils.get_spectral_norm(S.T))
    else:
        import scipy.sparse
        Ss = scipy.sparse.block_diag([S.T for b in range(len(A))])
        SSigma_1S = Ss.T.dot(self.WA.dot(Ss))
        LA = np.real(scipy.sparse.linalg.eigs(SSigma_1S, k=1, return_eigenvectors=False)[0])
        return (1.0 / LA)
def _one_over_lipschitzA(self, Xs):
    (A, S) = Xs
    if (self.WA is 1):
        return (1.0 / utils.get_spectral_norm(S.T))
    else:
        import scipy.sparse
        Ss = scipy.sparse.block_diag([S.T for b in range(len(A))])
        SSigma_1S = Ss.T.dot(self.WA.dot(Ss))
        LA = np.real(scipy.sparse.linalg.eigs(SSigma_1S, k=1, return_eigenvectors=False)[0])
        return (1.0 / LA)