This is an implementation of the Zassenhaus' Round 2 algorithm, following the textbook A course in computational algebraic number theory by Henri Cohen (Algorithm 6.1.8). Given a number field $F=\mathbf Q(\theta)$ defined as a simple extension over the rational numbers by an integral primitive element $\theta$, it computes an integral basis of the algebraic integers, expressed as polynomials in $\theta$.
i1 : integers QQ o1 = {1} o1 : List |
i2 : integers toField(QQ[i]/(i^2+1)) o2 = {1, i} o2 : List |
i3 : integers toField(QQ[a]/(a^2+3)) 1 1 o3 = {1, -a + -} 2 2 o3 : List |
The discriminant is computed using the same algorithm.
i4 : discriminant toField(QQ[a]/(a^2+3)) o4 = -3 |
i5 : discriminant toField(QQ[a]/(a^4-a+2)) o5 = 2021 |
The object integers is a method function.