login
Number of distinct self-dual normal bases for GF(2^n) over GF(2)
2

%I #18 Feb 19 2021 04:52:22

%S 1,1,1,0,1,2,1,0,3,4,3,0,5,8,15,0,17,48,27,0,63,96,89,0,205,320,513,0,

%T 565,1920,961,0,3267,4352,4095,0,7085,13824,20475,0,25625,64512,49923,

%U 0,184275,182272,178481,0,299593,839680,1105425,0,1266205,4202496,3145725,0,7105563,9256960,9099507,0

%N Number of distinct self-dual normal bases for GF(2^n) over GF(2)

%H Max Alekseyev, <a href="http://home.gwu.edu/~maxal/gpscripts/">PARI scripts</a>

%H Joerg Arndt, <a href="http://www.jjj.de/fxt/#fxtbook">Matters Computational (The Fxtbook)</a>, see p. 910.

%H Dieter Jungnickel, Alfred J. Menezes and Scott A. Vanstone, <a href="https://doi.org/10.1090/S0002-9939-1990-1007501-X">On the Number of Self-Dual Bases of GF(q^m) Over GF(q)</a>, Proc. Amer. Math. Soc. 109 (1990), 23-29.

%o (PARI)

%o /* based on http://home.gwu.edu/~maxal/gpscripts/nsdb.gp by Max Alekseyev */

%o sdn(m,p) =

%o /* Number of distinct self-dual normal bases of GF(p^m) over GF(p) where p is prime */

%o {

%o local(F, f, g, s, c, d);

%o if ( p==2 && m%4==0, return(0) );

%o if ( !(m%p), /* p divides m */

%o s = m\p;

%o return( p^((p-1)*(s+(s*(p+1))%2)/2-1) * sdn(s,p) );

%o , /* else */

%o F = factormod( (x^m - 1)/(x - 1), p );

%o c = d = [];

%o for (i=1, matsize(F)[1],

%o f = lift(F[i,1]);

%o g = polrecip(f);

%o if ( f==g, c = concat( c, vector(F[i,2],j,poldegree(f)/2) ); );

%o if ( lex(Vec(f), Vec(g))==1 ,

%o d = concat( d, vector(F[i,2],j,poldegree(f)) );

%o );

%o );

%o return( 2^(p%2) * prod(i=1,#c, p^c[i] + 1) * prod(j=1,#d, p^d[j] - 1) / m );

%o );

%o }

%o vector(66, n, sdn(n,2)) /* _Joerg Arndt_, Jul 03 2011 */

%Y Cf. A088437.

%K nonn

%O 1,6

%A _Max Alekseyev_, Feb 11 2008