- return sum( (self.monomial( (i,j, convert(entries[i][j])) )
- for i in range(nrows)
- for j in range(ncols) ),
- self.zero() )
+ def entry_to_element(i,j,entry):
+ # Convert an entry at i,j to a matrix whose only non-zero
+ # entry is i,j and corresponds to the entry.
+ p = self._entry_algebra_element_to_vector(entry)
+
+ # We have to convert alpha_g because a priori it lives in the
+ # base ring of the entry algebra.
+ R = self.base_ring()
+ return self.sum_of_terms( (((i,j,g), R(alpha_g))
+ for (alpha_g, g)
+ in zip(p, self.entry_algebra_gens()) ),
+ distinct=True)
+
+ return self.sum( entry_to_element(i,j,entries[i][j])
+ for j in range(ncols)
+ for i in range(nrows) )
+