code: def _update(self):
          r
          # Step 1 from eq.9.
          self._grad.get_grad(self._x_old)
  
          x_prox = self._prox.op(self._x_old - self._tau * self._grad.grad -
                                 self._tau * self._linear.adj_op(self._y_old))
  
          # Step 2 from eq.9.
          y_temp = (self._y_old + self._sigma *
                    self._linear.op(2 * x_prox - self._x_old))
  
          y_prox = (y_temp - self._sigma * self._prox_dual.op(y_temp /
                    self._sigma, extra_factor=(1.0 / self._sigma)))
  
          # Step 3 from eq.9.
          self._x_new = self._rho * x_prox + (1 - self._rho) * self._x_old
          self._y_new = self._rho * y_prox + (1 - self._rho) * self._y_old
  
          del x_prox, y_prox, y_temp
  
          # Update old values for next iteration.
          np.copyto(self._x_old, self._x_new)
          np.copyto(self._y_old, self._y_new)
  
          # Update parameter values for next iteration.
          self._update_param()
  
          # Test cost function for convergence.
          if self._cost_func:
              self.converge = self.any_convergence_flag() or\
                              self._cost_func.get_cost(self._x_new, self._y_new)
docs: r"""Update
  
          This method updates the current reconstruction
  
          Notes
          -----
          Implements equation 9 (algorithm 3.1) from [Con2013]_
  
          - primal proximity operator set up for positivity constraint