code: def xstep(self):
          r
  
          self.YU[:] = self.Y - self.U
          self.block_sep0(self.YU)[:] += self.S
          Zf = sl.rfftn(self.YU, None, self.cri.axisN)
          Z0f = self.block_sep0(Zf)
          Z1f = self.block_sep1(Zf)
  
          DZ0f = np.conj(self.Df) * Z0f
          DZ0fBQ = sl.dot(self.B.dot(self.Q).T, DZ0f, axis=self.cri.axisC)
          Z1fQ = sl.dot(self.Q.T, Z1f, axis=self.cri.axisC)
          b = DZ0fBQ + Z1fQ
  
          Xh = sl.solvedbd_sm(self.gDf, (self.mu / self.rho) * self.GHGf + 1.0,
                              b, self.c, axis=self.cri.axisM)
          self.Xf[:] = sl.dot(self.Q, Xh, axis=self.cri.axisC)
          self.X = sl.irfftn(self.Xf, self.cri.Nv, self.cri.axisN)
  
          if self.opt['LinSolveCheck']:
              DDXf = np.conj(self.Df) *  sl.inner(self.Df, self.Xf,
                                                  axis=self.cri.axisM)
              DDXfBB = sl.dot(self.B.T.dot(self.B), DDXf, axis=self.cri.axisC)
              ax = self.rho * (DDXfBB + self.Xf) + \
                   self.mu * self.GHGf * self.Xf
              b = self.rho * (sl.dot(self.B.T, DZ0f, axis=self.cri.axisC)
                              + Z1f)
              self.xrrs = sl.rrs(ax, b)
          else:
              self.xrrs = None
docs: r"""Minimise Augmented Lagrangian with respect to
          :math:`\mathbf{x}`.