Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: bnrconductor
Section: number_fields
C-Name: bnrconductor0
Prototype: GDGDGD0,L,
Help: bnrconductor(A,{B},{C},{flag=0}): conductor f of the subfield of
the ray class field given by A,B,C. flag is optional and
can be 0: default, 1: returns [f, Cl_f, H], H subgroup of the ray class
group modulo f defining the extension, 2: returns [f, bnr(f), H].
Doc: conductor $f$ of the subfield of a ray class field as defined by $[A,B,C]$
(of type \kbd{[\var{bnr}]},
\kbd{[\var{bnr}, \var{subgroup}]},
\kbd{[\var{bnf}, \var{modulus}]} or
\kbd{[\var{bnf}, \var{modulus}, \var{subgroup}]},
\secref{se:CFT})
If $\fl = 0$, returns $f$.
If $\fl = 1$, returns $[f, Cl_f, H]$, where $Cl_f$ is the ray class group
modulo $f$, as a finite abelian group; finally $H$ is the subgroup of $Cl_f$
defining the extension.
If $\fl = 2$, returns $[f, \var{bnr}(f), H]$, as above except $Cl_f$ is
replaced by a \kbd{bnr} structure, as output by $\tet{bnrinit}(,f)$, without
generators unless the input contained a \var{bnr} with generators.
In place of a subgroup $H$, this function also accepts a character
\kbd{chi} $=(a_j)$, expressed as usual in terms of the generators
\kbd{bnr.gen}: $\chi(g_j) = \exp(2i\pi a_j / d_j)$, where $g_j$ has
order $d_j = \kbd{bnr.cyc[j]}$. In which case, the function returns
respectively
If $\fl = 0$, the conductor $f$ of $\text{Ker} \chi$.
If $\fl = 1$, $[f, Cl_f, \chi_f]$, where $\chi_f$ is $\chi$ expressed
on the minimal ray class group, whose modulus is the conductor.
If $\fl = 2$, $[f, \var{bnr}(f), \chi_f]$.
\misctitle{Note} Using this function with $\fl \neq 0$ is usually a
bad idea and kept for compatibility and convenience only: $\fl = 1$ has
always been useless, since it is no faster than $\fl = 2$ and returns less
information; $\fl = 2$ is mostly OK with two subtle drawbacks:
$\bullet$ it returns the full \var{bnr} attached to the full ray class
group, whereas in applications we only need $Cl_f$ modulo $N$-th powers,
where $N$ is any multiple of the exponent of $Cl_f/H$. Computing directly the
conductor, then calling \kbd{bnrinit} with optional argument $N$ avoids this
problem.
$\bullet$ computing the \var{bnr} needs only be done once for each
conductor, which is not possible using this function.
For maximal efficiency, the recommended procedure is as follows. Starting
from data (character or congruence subgroups) attached to a modulus $m$,
we can first compute the conductors using this function with default $\fl =
0$. Then for all data with a common conductor $f \mid m$, compute (once!) the
\var{bnr} attached to $f$ using \kbd{bnrinit} (modulo $N$-th powers for
a suitable $N$!) and finally map original data to the new \var{bnr} using
\kbd{bnrmap}.
Variant:
Also available are \fun{GEN}{bnrconductor}{GEN bnr, GEN H, long flag}
and \fun{GEN}{bnrconductormod}{GEN bnr, GEN H, long flag, GEN cycmod}
which returns ray class groups modulo \kbd{cycmod}-th powers.