Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: bnrgaloismatrix
Section: number_fields
C-Name: bnrgaloismatrix
Prototype: GG
Help: bnrgaloismatrix(bnr,aut): return the matrix of the action of the
automorphism aut of the base field bnf.nf on the generators of the ray class
field bnr.gen; aut can be given as a polynomial, or a vector of automorphisms
or a galois group as output by galoisinit, in which case a vector of matrices
is returned (in the later case, only for the generators aut.gen).
Doc: return the matrix of the action of the automorphism \var{aut} of the base
field \kbd{bnf.nf} on the generators of the ray class field \kbd{bnr.gen};
\var{aut} can be given as a polynomial, an algebraic number, or a vector of
automorphisms or a Galois group as output by \kbd{galoisinit}, in which case a
vector of matrices is returned (in the later case, only for the generators
\kbd{aut.gen}).
The generators \kbd{bnr.gen} need not be explicitly computed in the input
\var{bnr}, which saves time: the result is well defined in this case also.
\bprog
? K = bnfinit(a^4-3*a^2+253009); B = bnrinit(K,9); B.cyc
%1 = [8400, 12, 6, 3]
? G = nfgaloisconj(K)
%2 = [-a, a, -1/503*a^3 + 3/503*a, 1/503*a^3 - 3/503*a]~
? bnrgaloismatrix(B, G[2]) \\ G[2] = Id ...
%3 =
[1 0 0 0]
[0 1 0 0]
[0 0 1 0]
[0 0 0 1]
? bnrgaloismatrix(B, G[3]) \\ automorphism of order 2
%4 =
[799 0 0 2800]
[ 0 7 0 4]
[ 4 0 5 2]
[ 0 0 0 2]
? M = %^2; for (i=1, #B.cyc, M[i,] %= B.cyc[i]); M
%5 = \\ acts on ray class group as automorphism of order 2
[1 0 0 0]
[0 1 0 0]
[0 0 1 0]
[0 0 0 1]
@eprog
See \kbd{bnrisgalois} for further examples.
Variant: When $aut$ is a polynomial or an algebraic number,
\fun{GEN}{bnrautmatrix}{GEN bnr, GEN aut} is available.