Function: qfisom
Section: linear_algebra
C-Name: qfisom0
Prototype: GGDGDG
Help: qfisom(G,H,{fl},{grp}): find an isomorphism between the integral positive
 definite quadratic forms G and H if it exists. G can also be given by a
 qfisominit structure which is preferable if several forms need to be compared
 to G.
Doc:
 $G$, $H$ being square and symmetric matrices with integer entries representing
 positive definite quadratic forms, return an invertible matrix $S$ such that
 $G={^t}S\*H\*S$. This defines a isomorphism between the corresponding lattices.
 Since this requires computing the minimal vectors, the computations can
 become very lengthy as the dimension grows.
 See \kbd{qfisominit} for the meaning of \var{fl}.
 If \var{grp} is given it must be the automorphism group of $H$. It will be used
 to speed up the computation.

 $G$ can also be given by an \kbd{qfisominit} structure which is preferable if
 several forms $H$ need to be compared to $G$.

 This function implements an algorithm of Plesken and Souvignier, following
 Souvignier's implementation.

Variant: Also available is \fun{GEN}{qfisom}{GEN G, GEN H, GEN fl, GEN grp}
 where $G$ is a vector of \kbd{zm}, and $H$ is a \kbd{zm}, and $grp$ is
 either \kbd{NULL} or a vector of \kbd{zm}.
