code: def GaussSeidelStep(self, S, X, ATYU, rho, lcw, W2):
          
  
          Xss = np.zeros_like(S, dtype=self.dtype)
          for ax in self.axes:
              Xss += sl.zpad(X[(slice(None),)*ax + (slice(0, -1),)],
                             (1, 0), ax)
              Xss += sl.zpad(X[(slice(None),)*ax + (slice(1, None),)],
                             (0, 1), ax)
          return (rho*(Xss + ATYU) + W2*S) / (W2 + rho*lcw)
docs: Gauss-Seidel step for linear system in TV problem.