Function: bnrstark
Section: number_fields
C-Name: bnrstark
Prototype: GDGp
Help: bnrstark(bnr,{subgroup}): bnr being as output by
 bnrinit, finds a relative equation for the class field corresponding to
 the module in bnr and the given congruence subgroup (the trivial subgroup if
 omitted) using Stark's units. The ground field and the class field must be
 totally real.
Doc: \var{bnr} being as output by \kbd{bnrinit}, finds a relative equation
 for the class field corresponding to the modulus in \var{bnr} and the given
 congruence subgroup (as usual, omit $\var{subgroup}$ if you want the whole ray
 class group).

 The main variable of \var{bnr} must not be $x$, and the ground field and the
 class field must be totally real. When the base field is $\Q$, the vastly
 simpler \tet{galoissubcyclo} is used instead. Here is an example:
 \bprog
 bnf = bnfinit(y^2 - 3);
 bnr = bnrinit(bnf, 5);
 bnrstark(bnr)
 @eprog\noindent
 returns the ray class field of $\Q(\sqrt{3})$ modulo $5$. Usually, one wants
 to apply to the result one of
 \bprog
 rnfpolredabs(bnf, pol, 16)     \\@com compute a reduced relative polynomial
 rnfpolredabs(bnf, pol, 16 + 2) \\@com compute a reduced absolute polynomial
 @eprog

 The routine uses \idx{Stark units} and needs to find a suitable auxiliary
 conductor, which may not exist when the class field is not cyclic over the
 base. In this case \kbd{bnrstark} is allowed to return a vector of
 polynomials defining \emph{independent} relative extensions, whose compositum
 is the requested class field. It was decided that it was more useful
 to keep the extra information thus made available, hence the user has to take
 the compositum herself.

 Even if it exists, the auxiliary conductor may be so large that later
 computations become unfeasible. (And of course, Stark's conjecture may simply
 be wrong.) In case of difficulties, try \tet{rnfkummer}:
 \bprog
 ? bnr = bnrinit(bnfinit(y^8-12*y^6+36*y^4-36*y^2+9,1), 2);
 ? bnrstark(bnr)
   ***   at top-level: bnrstark(bnr)
   ***                 ^-------------
   *** bnrstark: need 3919350809720744 coefficients in initzeta.
   *** Computation impossible.
 ? lift( rnfkummer(bnr) )
 time = 24 ms.
 %2 = x^2 + (1/3*y^6 - 11/3*y^4 + 8*y^2 - 5)
 @eprog
