from sage.functions.other import sqrt
+from sage.structure.element import is_Matrix
from sage.matrix.constructor import matrix
from sage.modules.free_module_element import vector
# first needing to convert them to a list of octonions and
# then recursing down into the list. It also avoids the wonky
# list(x) when x is an element of a CFM. I don't know what it
- # returns but it aint the coordinates. This will fall through
- # to the iterable case the next time around.
- return _all2list(x.to_vector())
+ # returns but it aint the coordinates. We don't recurse
+ # because vectors can only contain ring elements as entries.
+ return x.to_vector().list()
+
+ if is_Matrix(x):
+ # This sucks, but for performance reasons we don't want to
+ # call _all2list recursively on the contents of a matrix
+ # when we don't have to (they only contain ring elements
+ # as entries)
+ return x.list()
try:
xl = list(x)
# Avoid the retardation of list(QQ(1)) == [1].
return [x]
- return sum(list( map(_all2list, xl) ), [])
+ return sum( map(_all2list, xl) , [])