We demonstrate the use of some of these functions on certain degree
16 Hadamard matrices. For convenience, we create them from the more
compact integer form.
> S := [
> 47758915483058652629300889924143904114798786457834842901517979108472281628672,
> 52517743516350345514775635367035460577743730272737765852723792818755052170805,
> 69809270372633075610047556428719374057869882804054059134346034969950931648512,
> 7209801227548712796135507135820555403251560090614832684136782016680445345792
> ];
> T := [ HadamardMatrixFromInteger(x, 16) : x in S ];
> &and [ IsHadamard(m) : m in T ];
true
Now we can test them for equivalence; we start by checking the 4-profiles.
> [ HadamardInvariant(m) : m in T ];
[
[ 1680, 0, 140 ],
[ 1680, 0, 140 ],
[ 1344, 448, 28 ],
[ 1344, 448, 28 ]
]
We see that the only possible equivalencies are between the first two
and the last two, since equivalent matrices must have the same 4-profile.
> equiv,X,Y := IsHadamardEquivalent(T[1], T[2]);
> equiv;
true
> T[2] eq X*T[1]*Y;
true
> equiv,X,Y := IsHadamardEquivalent(T[3], T[4]);
> equiv;
false
So we have three inequivalent matrices.
An alternative way to determine the inequivalent matrices would
have been to use the canonical forms.
> #{ HadamardCanonicalForm(m) : m in T };
3
[Next][Prev] [Right] [Left] [Up] [Index] [Root]