B = self.parent().matrix_basis()
W = self.parent().matrix_space()
- if self.parent()._matrix_basis_is_cartesian:
+ if hasattr(W, 'cartesian_factors'):
# Aaaaand linear combinations don't work in Cartesian
- # product spaces, even though they provide a method
- # with that name. This is special-cased because the
+ # product spaces, even though they provide a method with
+ # that name. This is hidden behind an "if" because the
# _scale() function is slow.
pairs = zip(B, self.to_vector())
- return sum( ( _scale(b, alpha) for (b,alpha) in pairs ),
- W.zero())
+ return W.sum( _scale(b, alpha) for (b,alpha) in pairs )
else:
# This is just a manual "from_vector()", but of course
# matrix spaces aren't vector spaces in sage, so they