 
  
  
   
The algorithmic framework of our primal-dual path-following algorithm is as follows.
Remarks.
 .
 .
 decreases to 0, 
    the norm
  decreases to 0, 
    the norm   will tend to increase, 
    even if the initial iterate
    is primal feasible, due to increasing numerical
    instability of the Schur complement approach. 
    In our implementation of the algorithms, the user has the option of 
    correcting for the loss in primal feasibility by projecting
  will tend to increase, 
    even if the initial iterate
    is primal feasible, due to increasing numerical
    instability of the Schur complement approach. 
    In our implementation of the algorithms, the user has the option of 
    correcting for the loss in primal feasibility by projecting   onto the null space of the operator
  
    onto the null space of the operator   . 
    That is, before updating to
 . 
    That is, before updating to   , we replace
 , we replace   by
  by 
     
 
           where   . Note that this 
           step is inexpensive. The
 . Note that this 
           step is inexpensive. The   matrix
  matrix   need only to be formed once at the beginning of 
           the algorithm.
  
           need only to be formed once at the beginning of 
           the algorithm. 
 much larger than
  much larger than
       , then a suitable scaling is an approximate
     solution of
 , then a suitable scaling is an approximate
     solution of   , which
     is a certificate that the primal problem is infeasible.
     Similarly, if
 , which
     is a certificate that the primal problem is infeasible.
     Similarly, if   is much larger than
  is much larger than   ,
     we have an indication of dual infeasibility: a scaled iterate is then
     an approximate solution of
 ,
     we have an indication of dual infeasibility: a scaled iterate is then
     an approximate solution of   , which is a certificate that the dual problem
     is infeasible. In either case, we return
     the appropriate scaled iterate suggesting primal or dual infeasibility.
 , which is a certificate that the dual problem
     is infeasible. In either case, we return
     the appropriate scaled iterate suggesting primal or dual infeasibility.