Function: rnfpseudobasis
Section: number_fields
C-Name: rnfpseudobasis
Prototype: GG
Help: rnfpseudobasis(nf,T): given an irreducible polynomial T with
 coefficients in nf, returns [A,J,D,d] where [A,J] is a pseudo basis of the
 maximal order of the extension, D is the relative ideal discriminant, and d
 is the relative discriminant in nf^*/nf*^2.
Doc: given an \var{nf} structure attached to a number field $K$, as output by
 \kbd{nfinit}, and a monic irreducible polynomial $T$ in $\Z_{K}[x]$ defining a
 relative extension $L = K[x]/(T)$, computes the relative discriminant of $L$
 and a pseudo-basis $(A,J)$ for the maximal order $\Z_{L}$ viewed as a
 $\Z_{K}$-module. This is output as a vector $[A,J,D,d]$, where $D$ is the
 relative ideal discriminant and $d$ is the relative discriminant considered
 as an element of $K^{*}/{K^{*}}^{2}$.
 \bprog
 ? K = nfinit(y^2+1);
 ? [A,J,D,d] = rnfpseudobasis(K, x^2+y);
 ? A
 %3 =
 [1 0]

 [0 1]

 ? J
 %4 = [1, 1]
 ? D
 %5 = [0, -4]~
 ? d
 %6 = [0, -1]~
 @eprog

 \misctitle{Huge discriminants, helping rnfdisc} The format $[T,B]$ is
 also accepted instead of $T$ and produce an order which is maximal at all
 prime ideals specified by $B$, see \kbd{??rnfinit}.
 \bprog
 ? p = 585403248812100232206609398101;
 ? q = 711171340236468512951957953369;
 ? T = x^2 + 3*(p*q)^2;
 ? [A,J,D,d] = V = rnfpseudobasis(K, T); D
 time = 22,178 ms.
 %10 = 3
 ? [A,J,D,d] = W = rnfpseudobasis(K, [T,100]); D
 time = 5 ms.
 %11 = 3
 ? V == W
 %12 = 1
 ? [A,J,D,d] = W = rnfpseudobasis(K, [T, [3]]); D
 %13 = 3
 ? V == W
 %14 = 1
 @eprog\noindent In this example, the results are identical since $D \cap \Z$
 factors over primes less than $100$ (and in fact, over $3$). Had it not been
 the case, the order would have been guaranteed maximal at primes
 $\goth{p} | p $ for $p \leq 100$ only (resp.~$\goth{p} | 3$).
 And might have been nonmaximal at any other prime ideal $\goth{p}$ such
 that $\goth{p}^{2}$ divided $D$.
