# Properties

 Label 2.0.4.1 Degree $2$ Signature $[0, 1]$ Discriminant $-4$ Root discriminant $$2.00$$ Ramified prime $2$ Class number $1$ Class group trivial Galois group $C_2$ (as 2T1)

# Related objects

Show commands: Magma / Oscar / PariGP / SageMath

This is the field of Gaussian rational numbers.

## Normalizeddefining polynomial

sage: x = polygen(QQ); K.<a> = NumberField(x^2 + 1)

gp: K = bnfinit(y^2 + 1, 1)

magma: R<x> := PolynomialRing(Rationals()); K<a> := NumberField(x^2 + 1);

oscar: Qx, x = PolynomialRing(QQ); K, a = NumberField(x^2 + 1)

$$x^{2} + 1$$

sage: K.defining_polynomial()

gp: K.pol

magma: DefiningPolynomial(K);

oscar: defining_polynomial(K)

## Invariants

 Degree: $2$ sage: K.degree()  gp: poldegree(K.pol)  magma: Degree(K);  oscar: degree(K) Signature: $[0, 1]$ sage: K.signature()  gp: K.sign  magma: Signature(K);  oscar: signature(K) Discriminant: $$-4$$ -4 $$\medspace = -\,2^{2}$$ sage: K.disc()  gp: K.disc  magma: OK := Integers(K); Discriminant(OK);  oscar: OK = ring_of_integers(K); discriminant(OK) Root discriminant: $$2.00$$ sage: (K.disc().abs())^(1./K.degree())  gp: abs(K.disc)^(1/poldegree(K.pol))  magma: Abs(Discriminant(OK))^(1/Degree(K));  oscar: (1.0 * dK)^(1/degree(K)) Galois root discriminant: $2\approx 2.0$ Ramified primes: $$2$$ 2 sage: K.disc().support()  gp: factor(abs(K.disc))[,1]~  magma: PrimeDivisors(Discriminant(OK));  oscar: prime_divisors(discriminant((OK))) Discriminant root field: $$\Q(\sqrt{-1})$$ $\card{ \Gal(K/\Q) }$: $2$ sage: K.automorphisms()  magma: Automorphisms(K);  oscar: automorphisms(K) This field is Galois and abelian over $\Q$. Conductor: $$4=2^{2}$$ Dirichlet character group: $\lbrace$$\chi_{4}(1,·), \chi_{4}(3,·)$$\rbrace$ This is a CM field. Reflex fields: $$\Q(\sqrt{-1})$$

## Integral basis (with respect to field generator $$a$$)

$1$, $a$

sage: K.integral_basis()

gp: K.zk

magma: IntegralBasis(K);

oscar: basis(OK)

 Monogenic: Yes Index: $1$ Inessential primes: None

## Class group and class number

Trivial group, which has order $1$

sage: K.class_group().invariants()

gp: K.clgp

magma: ClassGroup(K);

oscar: class_group(K)

## Unit group

sage: UK = K.unit_group()

magma: UK, fUK := UnitGroup(K);

oscar: UK, fUK = unit_group(OK)

 Rank: $0$ sage: UK.rank()  gp: K.fu  magma: UnitRank(K);  oscar: rank(UK) Torsion generator: $$a$$ a  (order $4$) sage: UK.torsion_generator()  gp: K.tu[2]  magma: K!f(TU.1) where TU,f is TorsionUnitGroup(K);  oscar: torsion_units_generator(OK) Regulator: $$1$$ sage: K.regulator()  gp: K.reg  magma: Regulator(K);  oscar: regulator(K)

## Class number formula

\begin{aligned}\lim_{s\to 1} (s-1)\zeta_K(s) =\mathstrut & \frac{2^{r_1}\cdot (2\pi)^{r_2}\cdot R\cdot h}{w\cdot\sqrt{|D|}}\cr =\mathstrut &\frac{2^{0}\cdot(2\pi)^{1}\cdot 1 \cdot 1}{4\cdot\sqrt{4}}\cr\approx \mathstrut & 0.785398163397448 \end{aligned}

# self-contained SageMath code snippet to compute the analytic class number formula

x = polygen(QQ); K.<a> = NumberField(x^2 + 1)

DK = K.disc(); r1,r2 = K.signature(); RK = K.regulator(); RR = RK.parent()

hK = K.class_number(); wK = K.unit_group().torsion_generator().order();

2^r1 * (2*RR(pi))^r2 * RK * hK / (wK * RR(sqrt(abs(DK))))

# self-contained Pari/GP code snippet to compute the analytic class number formula

K = bnfinit(x^2 + 1, 1);

[polcoeff (lfunrootres (lfuncreate (K))[1][1][2], -1), 2^K.r1 * (2*Pi)^K.r2 * K.reg * K.no / (K.tu[1] * sqrt (abs (K.disc)))]

/* self-contained Magma code snippet to compute the analytic class number formula */

Qx<x> := PolynomialRing(QQ); K<a> := NumberField(x^2 + 1);

OK := Integers(K); DK := Discriminant(OK);

UK, fUK := UnitGroup(OK); clK, fclK := ClassGroup(OK);

r1,r2 := Signature(K); RK := Regulator(K); RR := Parent(RK);

hK := #clK; wK := #TorsionSubgroup(UK);

2^r1 * (2*Pi(RR))^r2 * RK * hK / (wK * Sqrt(RR!Abs(DK)));

# self-contained Oscar code snippet to compute the analytic class number formula

Qx, x = PolynomialRing(QQ); K, a = NumberField(x^2 + 1);

OK = ring_of_integers(K); DK = discriminant(OK);

UK, fUK = unit_group(OK); clK, fclK = class_group(OK);

r1,r2 = signature(K); RK = regulator(K); RR = parent(RK);

hK = order(clK); wK = torsion_units_order(K);

2^r1 * (2*pi)^r2 * RK * hK / (wK * sqrt(RR(abs(DK))))

## Galois group

$C_2$ (as 2T1):

sage: K.galois_group(type='pari')

gp: polgalois(K.pol)

magma: G = GaloisGroup(K);

oscar: G, Gtx = galois_group(K); G, transitive_group_identification(G)

 A cyclic group of order 2 The 2 conjugacy class representatives for $C_2$ Character table for $C_2$

## Intermediate fields

 The extension is primitive: there are no intermediate fields between this field and $\Q$.
sage: K.subfields()[1:-1]

gp: L = nfsubfields(K); L[2..length(b)]

magma: L := Subfields(K); L[2..#L];

oscar: subfields(K)[2:end-1]

## Frobenius cycle types

 $p$ $2$ $3$ $5$ $7$ $11$ $13$ $17$ $19$ $23$ $29$ $31$ $37$ $41$ $43$ $47$ $53$ $59$ Cycle type R ${\href{/padicField/3.2.0.1}{2} }$ ${\href{/padicField/5.1.0.1}{1} }^{2}$ ${\href{/padicField/7.2.0.1}{2} }$ ${\href{/padicField/11.2.0.1}{2} }$ ${\href{/padicField/13.1.0.1}{1} }^{2}$ ${\href{/padicField/17.1.0.1}{1} }^{2}$ ${\href{/padicField/19.2.0.1}{2} }$ ${\href{/padicField/23.2.0.1}{2} }$ ${\href{/padicField/29.1.0.1}{1} }^{2}$ ${\href{/padicField/31.2.0.1}{2} }$ ${\href{/padicField/37.1.0.1}{1} }^{2}$ ${\href{/padicField/41.1.0.1}{1} }^{2}$ ${\href{/padicField/43.2.0.1}{2} }$ ${\href{/padicField/47.2.0.1}{2} }$ ${\href{/padicField/53.1.0.1}{1} }^{2}$ ${\href{/padicField/59.2.0.1}{2} }$

In the table, R denotes a ramified prime. Cycle lengths which are repeated in a cycle type are indicated by exponents.

# to obtain a list of $[e_i,f_i]$ for the factorization of the ideal $p\mathcal{O}_K$ for $p=7$ in Sage:

p = 7; [(e, pr.norm().valuation(p)) for pr,e in K.factor(p)]

\\ to obtain a list of $[e_i,f_i]$ for the factorization of the ideal $p\mathcal{O}_K$ for $p=7$ in Pari:

p = 7; pfac = idealprimedec(K, p); vector(length(pfac), j, [pfac[j][3], pfac[j][4]])