X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Feja%2Feja_utils.py;h=29edf5b8a339b073e1426a12a98a6143e7af5069;hb=667e0df9c07589c03616ad8cf42eebe5c86de50b;hp=b6e0c7d38eaf1d9114973bba4f5ad0674cb8a8a2;hpb=3baadd6fb5c765caab2bd57d1d6ed764b03d53b3;p=sage.d.git diff --git a/mjo/eja/eja_utils.py b/mjo/eja/eja_utils.py index b6e0c7d..29edf5b 100644 --- a/mjo/eja/eja_utils.py +++ b/mjo/eja/eja_utils.py @@ -2,6 +2,22 @@ from sage.functions.other import sqrt from sage.matrix.constructor import matrix from sage.modules.free_module_element import vector +def _all2list(x): + r""" + Flatten a vector, matrix, or cartesian product of those things + into a long list. + """ + if hasattr(x, 'list'): + # Easy case... + return x.list() + if hasattr(x, 'cartesian_factors'): + # If it's a formal cartesian product space element, then + # we also know what to do... + return sum(( x_i.list() for x_i in x ), []) + else: + # But what if it's a tuple or something else? + return sum( map(_all2list,x), [] ) + def _mat2vec(m): return vector(m.base_ring(), m.list())