Normalized defining polynomial
sage: x = polygen(QQ); K.<a> = NumberField(x^8 - 2*x^7 + 7*x^6 + 35*x^4 - 14*x^3 + 105*x^2 + 96*x + 452)
gp: K = bnfinit(y^8 - 2*y^7 + 7*y^6 + 35*y^4 - 14*y^3 + 105*y^2 + 96*y + 452, 1)
magma: R<x> := PolynomialRing(Rationals()); K<a> := NumberField(x^8 - 2*x^7 + 7*x^6 + 35*x^4 - 14*x^3 + 105*x^2 + 96*x + 452);
oscar: Qx, x = polynomial_ring(QQ); K, a = number_field(x^8 - 2*x^7 + 7*x^6 + 35*x^4 - 14*x^3 + 105*x^2 + 96*x + 452)
sage: K.defining_polynomial()
gp: K.pol
magma: DefiningPolynomial(K);
oscar: defining_polynomial(K)
Invariants
Degree: | sage: K.degree()
gp: poldegree(K.pol)
magma: Degree(K);
oscar: degree(K)
| ||
Signature: | sage: K.signature()
gp: K.sign
magma: Signature(K);
oscar: signature(K)
| ||
Discriminant: |
| sage: K.disc()
gp: K.disc
magma: OK := Integers(K); Discriminant(OK);
oscar: OK = ring_of_integers(K); discriminant(OK)
| |
Root discriminant: | 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: | |||
Ramified primes: |
, , ,
| sage: K.disc().support()
gp: factor(abs(K.disc))[,1]~
magma: PrimeDivisors(Discriminant(OK));
oscar: prime_divisors(discriminant((OK)))
| |
Discriminant root field: | |||
: | sage: K.automorphisms()
magma: Automorphisms(K);
oscar: automorphisms(K)
| ||
This field is not Galois over . | |||
This is not a CM field. |
Integral basis (with respect to field generator )
, , , , , , ,
sage: K.integral_basis()
gp: K.zk
magma: IntegralBasis(K);
oscar: basis(OK)
Monogenic: | Not computed | |
Index: | ||
Inessential primes: | None |
Class group and class number
, which has order
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: | sage: UK.rank()
gp: K.fu
magma: UnitRank(K);
oscar: rank(UK)
| ||
Torsion generator: |
(order )
| sage: UK.torsion_generator()
gp: K.tu[2]
magma: K!f(TU.1) where TU,f is TorsionUnitGroup(K);
oscar: torsion_units_generator(OK)
| |
Fundamental units: |
, ,
| sage: UK.fundamental_units()
gp: K.fu
magma: [K|fUK(g): g in Generators(UK)];
oscar: [K(fUK(a)) for a in gens(UK)]
| |
Regulator: | sage: K.regulator()
gp: K.reg
magma: Regulator(K);
oscar: regulator(K)
|
Class number formula
# self-contained SageMath code snippet to compute the analytic class number formula
x = polygen(QQ); K.<a> = NumberField(x^8 - 2*x^7 + 7*x^6 + 35*x^4 - 14*x^3 + 105*x^2 + 96*x + 452)
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^8 - 2*x^7 + 7*x^6 + 35*x^4 - 14*x^3 + 105*x^2 + 96*x + 452, 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(Rationals()); K<a> := NumberField(x^8 - 2*x^7 + 7*x^6 + 35*x^4 - 14*x^3 + 105*x^2 + 96*x + 452);
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^8 - 2*x^7 + 7*x^6 + 35*x^4 - 14*x^3 + 105*x^2 + 96*x + 452);
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
(as 8T47):
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 solvable group of order 1152 |
The 20 conjugacy class representatives for |
Character table for |
Intermediate fields
Fields in the database are given up to isomorphism. Isomorphic intermediate fields are shown with their multiplicities.
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]
Sibling fields
Degree 12 siblings: | data not computed |
Degree 16 siblings: | data not computed |
Degree 18 siblings: | data not computed |
Degree 24 siblings: | data not computed |
Degree 32 siblings: | data not computed |
Degree 36 siblings: | data not computed |
Minimal sibling: | This field is its own minimal sibling |
Frobenius cycle types
Cycle type | R | R | R | R |
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 for the factorization of the ideal for in Sage:
p = 7; [(e, pr.norm().valuation(p)) for pr,e in K.factor(p)]
\\ to obtain a list of for the factorization of the ideal for in Pari:
p = 7; pfac = idealprimedec(K, p); vector(length(pfac), j, [pfac[j][3], pfac[j][4]])
// to obtain a list of for the factorization of the ideal for $p=7 in Magma:
p := 7; [<pr[2], Valuation(Norm(pr[1]), p)> : pr in Factorization(p*Integers(K))];
# to obtain a list of for the factorization of the ideal for in Oscar:
p = 7; pfac = factor(ideal(ring_of_integers(K), p)); [(e, valuation(norm(pr),p)) for (pr,e) in pfac]
Local algebras for ramified primes
Label | Polynomial | Galois group | Slope content | ||||
---|---|---|---|---|---|---|---|
| 2.1.2.2a1.1 | ||||||
2.3.2.6a1.1 | |||||||
| 5.1.2.1a1.2 | ||||||
5.1.2.1a1.2 | |||||||
5.1.2.1a1.1 | |||||||
5.2.1.0a1.1 | |||||||
| 7.2.4.6a1.1 | ||||||
| Trivial | ||||||
Trivial | |||||||
Trivial | |||||||
37.1.2.1a1.2 | |||||||
37.3.1.0a1.1 |