Function: algcharpoly
Section: algebras
C-Name: algcharpoly
Prototype: DGGDnD0,L,
Help: algcharpoly({al},b,{v='x},{abs=0}): (reduced) characteristic polynomial of b in
 al (Hamilton quaternions if omitted), with respect to the variable v.
Doc: Given an element $b$ in \var{al} (Hamilton quaternions if omitted), returns
 its characteristic polynomial as a polynomial in the variable $v$. If \var{al}
 is a table algebra output by \tet{algtableinit} or if $abs=1$, returns the
 absolute characteristic polynomial of \var{b}, which is an element of
 $\F_{p}[v]$, $\Q[v]$ or~$\R[v]$; if \var{al} is omitted or a central simple
 algebra output by \tet{alginit} and $abs=0$, returns the reduced characteristic
 polynomial of \var{b}, which is an element of~$K[v]$ where~$K$ is the center of
 \var{al}.
 \bprog
 ? al = alginit(nfinit(y), [-1,-1]); \\ (-1,-1)_Q
 ? algcharpoly(al, [0,1]~)
 %2 = x^2 + 1
 ? algcharpoly(al, [0,1]~,,1)
 %3 = x^4 + 2*x^2 + 1
 ? nf = nfinit(y^2-5);
 ? al = alginit(nf,[-1,y]);
 ? a = [y,1+x]~*Mod(1,y^2-5)*Mod(1,x^2+1);
 ? P = lift(algcharpoly(al,a))
 %7 = x^2 - 2*y*x + (-2*y + 5)
 ? algcharpoly(al,a,,1)
 %8 = x^8 - 20*x^6 - 80*x^5 + 110*x^4 + 800*x^3 + 1500*x^2 - 400*x + 25
 ? lift(P*subst(P,y,-y)*Mod(1,y^2-5))^2
 %9 = x^8 - 20*x^6 - 80*x^5 + 110*x^4 + 800*x^3 + 1500*x^2 - 400*x + 25
 ? algcharpoly(,[sqrt(2),-1,0,Pi]~) \\ Hamilton quaternions
 %10 = x^2 - 2.8284271247*x + 12.8696044010
 @eprog

 Also accepts a square matrix with coefficients in \var{al}.
