-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
-
-def _charpoly_sage_input(s):
- r"""
- Helper function that you can use on the string output from sage
- to convert a charpoly coefficient into the corresponding input
- to be cached.
-
- SETUP::
-
- sage: from mjo.eja.eja_algebra import JordanSpinEJA
- sage: from mjo.eja.eja_utils import _charpoly_sage_input
-
- EXAMPLES::
-
- sage: J = JordanSpinEJA(4,QQ)
- sage: a = J._charpoly_coefficients()
- sage: a[0]
- X1^2 - X2^2 - X3^2 - X4^2
- sage: _charpoly_sage_input(str(a[0]))
- 'X[0]**2 - X[1]**2 - X[2]**2 - X[3]**2'
-
- """
- import re
-
- exponent_out = r"\^"
- exponent_in = r"**"
-
- digit_out = r"X([0-9]+)"
-
- def replace_digit(m):
- # m is a match object
- return "X[" + str(int(m.group(1)) - 1) + "]"
-
- s = re.sub(exponent_out, exponent_in, s)
- return re.sub(digit_out, replace_digit, s)
-
def _scale(x, alpha):
r"""
return sum( map(_all2list, xl) , [])
-
-def _mat2vec(m):
- return vector(m.base_ring(), m.list())
-
-def _vec2mat(v):
- return matrix(v.base_ring(), sqrt(v.degree()), v.list())
-
def gram_schmidt(v, inner_product=None):
"""
Perform Gram-Schmidt on the list ``v`` which are assumed to be
# cool
return v
- R = v[0].base_ring()
-
# Our "zero" needs to belong to the right space for sum() to work.
zero = v[0].parent().zero()