%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