code: def _qr_factor_full(a, dtype=np.float):
      n, m = a.shape
      packed, pmut, rdiag, acnorm = \
          _manual_qr_factor_packed(a, dtype)
      r = np.zeros((n, m))
      for i in range(n):
          r[i,:i] = packed[i,:i]
          r[i,i] = rdiag[i]
      q = np.eye(m)
      v = np.empty(m)
      for i in range(n):
          v[:] = packed[i]
          v[:i] = 0
          hhm = np.eye(m) - 2 * np.outer(v, v) / np.dot(v, v)
          q = np.dot(hhm, q)
      return q, r, pmut