for k in range(n) )
L_x = matrix(F, n, n, L_x_i_j)
+
+ r = None
+ if self.rank.is_in_cache():
+ r = self.rank()
+ # There's no need to pad the system with redundant
+ # columns if we *know* they'll be redundant.
+ n = r
+
# Compute an extra power in case the rank is equal to
# the dimension (otherwise, we would stop at x^(r-1)).
x_powers = [ (L_x**k)*self.one().to_vector()
AE = A.extended_echelon_form()
E = AE[:,n:]
A_rref = AE[:,:n]
- r = A_rref.rank()
+ if r is None:
+ r = A_rref.rank()
b = x_powers[r]
# The theory says that only the first "r" coefficients are