Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

Testing latest pari + WASM + node.js... and it works?! Wow.

28494 views
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.