g = sorted(g, reverse=True)
S = sign_round_up(Y)
Z = np.asarray(AT_linear_operator.matmat(S))
h = np.max(np.abs(Z), axis=1)
// If this algorithm runs for fewer than two iterations,
// then its return values do not have the properties indicated
// in the description of the algorithm.
// In particular, the entries of g are not 1-norms of any
// column of A until the second iteration.
// Therefore we will require the algorithm to run for at least
// two iterations, even though this requirement is not stated
// in the description of the algorithm.
if k >= 2:
if less_than_or_close(max(h), np.dot(Z[:, best_j], X[:, best_j])):
break
h_i_pairs = zip(h, range(n))
h, ind = zip(*sorted(h_i_pairs, reverse=True)[:t])
for j in range(t):
X[:, j] = elementary_vector(n, ind[j])
// Check invariant (2.2).
After Change
if k >= 2:
if less_than_or_close(max(h), np.dot(Z[:, best_j], X[:, best_j])):
break
ind = np.argsort(h)[::-1][:t]
h = h[ind]
for j in range(t):
X[:, j] = elementary_vector(n, ind[j])
// Check invariant (2.2).