def undecimate(field, original_field, profclass=PolyRingOverField): field = GF2QuotientRing.cast(field) original_field = GF2QuotientRing.cast(original_field) prof = profclass(original_field) p = [(field.coeffs >> k) & 1 for k in range(field.degree+1)] f = find_linear_factor(prof, p) j = original_field.lograw(f[0]) return coset_representative(j, field.degree)
def __init__(self, field): self.field = GF2QuotientRing.cast(field);