atlas Library · Script File
coordinates.at
Definitions in source order
need some routines for rational matrices from ratmat.atL19
multiplication of rational matrices, and mat*rational matrixL20
transpose of rational matrixL21
convert rational matrix to integral one if possibleL22
change_basis 3 overloads
L27
change_basis(RootDatum rd,ratmat my_roots) = ratmatcolumns of A are coordinates of simple roots in user's preferred coordinate system my_roots=[ratvec] or [vec]
L28
change_basis(RootDatum rd, [ratvec] my_roots) = ratmatL29
change_basis(RootDatum rd, mat my_roots) = ratmatalso defined in K_Nilpotent.at
integral_change_basis 3 overloads
L32
integral_change_basis(RootDatum rd,ratmat my_roots) = matreturn intetgral matrix if possible
L33
integral_change_basis(RootDatum rd,[ratvec] my_roots) = matL34
integral_change_basis(RootDatum rd,mat my_roots) = matinverse_change_basis 3 overloads
L43
inverse_change_basis(RootDatum rd, ratmat my_roots)rational matrix D satisfying: D*my_roots=simple_roots(rd)
this is not just the inverse of C if these matrices are not square, i.e.
rank > semisimple_rank
D=simple_roots(rd)*left_inverse(my_roots)
where left_inverse is left_inverse(A)=^[A(^AA)^{-1}]
L44
inverse_change_basis(RootDatum rd, [ratvec] my_roots)L45
inverse_change_basis(RootDatum rd, mat my_roots)integral_inverse_change_basis 3 overloads
L48
integral_inverse_change_basis(RootDatum rd,ratmat my_roots) = matreturn intetgral matrix if possible
L49
integral_inverse_change_basis(RootDatum rd,[ratvec] my_roots) = matL50
integral_inverse_change_basis(RootDatum rd,mat my_roots) = matGenerated from atlas-scripts at commit 648506c (2026-10-13).
Commented-out code, lines 3–17 (14 lines)
change of basis matrices between given simple_roots(rd) and user's my_roots columns of my_roots are simple roots in user's preferred coordinates, each root is a ratvec (vec is allowed also) my_roots has semi-simple rank(rd) columns, but is not necessarily square set C=change_basis(rd,my_roots) set D=inverse_change_basis(rd,my_roots) D*my_roots=simple_roots(rd) C*simple_roots(rd)=my_roots D*C=id_mat(semi_simple_rank(rd)) D*[v]_{my_basis}=[v]_{simple_roots(rd) basis} C*[v]_{simple_roots(rd) basis}=[v]_{my_basis} theta given in basis simple_roots(rd) -> C*theta*D in my_basis