docs: def factor_aug(z, DPhival, G, A):    
      M, N = G.shape
      P, N = A.shape
      """Multiplier for inequality constraints"""
      l = z[N+P:N+P+M]
  
      """Slacks"""
      s = z[N+P+M:]
  
      """Sigma matrix"""
      SIG = diags(l/s, 0)
  
      """Condensed system"""
      if issparse(DPhival):
          if not issparse(A):
              A = csr_matrix(A)        
          H = DPhival + mydot(G.T, mydot(SIG, G))
          J = bmat([[H, A.T], [A, None]])
      else:
          if issparse(A):
              A = A.toarray()
          J = np.zeros((N+P, N+P))
          J[0:N, 0:N] = DPhival + mydot(G.T, mydot(SIG, G))            
          J[0:N, N:] = A.T
          J[N:, 0:N] = A
  
      LU = myfactor(J)    
      return LU