| 1 | initial version |
The method is_globally_equivalent_to answers this and provides the matrix:
sage: QA = QuadraticForm(QQ, 4, [4, -12, 8, -4, 12, -16, 8, 6, -6, 2])
sage: QB = QuadraticForm(QQ, 4, [2, -2, -2, -2, 2, 0, 0, 2, 0, 2])
sage: X = QA.is_globally_equivalent_to(QB, return_matrix=True); X
[ 0 0 0 1]
[ 0 0 1 0]
[ 0 1 1 -1]
[ 1 1 -1 -1]
sage: X.transpose()*QA.matrix()*X == QB.matrix()
True
This calls the PARI function qfisom, which implements an algorithm of Plesken and Souvignier.
Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.