Description | Number fields |
Status | production |
Contact | John Jones |
Code | number_fields |
Collections | fields, fields.rand, stats |
Todo:
- Add more data on siblings
- Possibly add narrow class groups
- Possibly add more class group/unit information
-
_id: ObjectId generated by Mongo DB (includes creation timestamp)
Example: ObjectId('4fac7fa90eb55b6ff200002f')
-
label (string): LMFDB label, formed by joining the degree, number of real places, absolute discriminant, and index with ".". The index is a counter to distinguish fields which would otherwise have the same label
Example: '11.1.52713545163946191360000000000.1'
-
degree (int): degree of the field over Q
Example: 11
-
coeffs (list of ints as string): coefficients of our defining polynomial starting with the constant term.
Example: '-3,0,1'
-
coeffhash (string): output of hexdigest applied to coeffs -- it can be used as an index for coefficient lookup (coeffs can be too long)
Example: 'c187070bd71b8ab0a64176f5bc999046'
-
disc_abs_key (string of digits): the absolute discriminant prepended by 3 digits which give the number of digits minus one, as a string. This is because discriminants get too big to store as ints, but we want to be able to sort on them
Example: 02852713545163946191360000000000
-
disc_sign (int): 1 or -1 depending on the sign of the discriminant
Example: 1
-
dischash (int): integer to be used for indexing discriminants when the disc_abs_key gets to be too long. Code to compute it is below
Example: -285271354516394619
-
signature (list of ints as string): signature (r_1, r_2) of the field stored as r_1,r_2
Example: '1,5'
-
ramps (list of ints as strings): the ramified primes in a list. Stored as strings because they may be too big
Example: ['2', '3', '5', '11']
-
ramps_all (list of ints as string): the list of ramified primes, separated by commas, as a single string
Example: '2,3,5,11'
-
galois (bson pair of integers): stores (n,t) where n is the degree and t is the t-number of the Galois group. bson structure is like a python dict. Works better for indexing than a list. Must be reencoded whenever a database entry is updated
Example: {'n': 11, 't': 8}
-
zk (list of strings): an integral basis in terms of 'a', a root of the defining polynomial
Example: ['1','a','1/3a^2','1/9a^3','1/27a^4','1/81a^5','1/81a^6','1/243a^7','1/729a^8','1/2187a^9','1/13122*a^10']
-
reduced (int 0 or 1): 1 if the polynomial is the output of polredabs, otherwise 0. If not present, assume 1
Example: 1
-
class_number (int): class number
Example: 8
-
class_group (list of integers as string): invariant factors for the class group, in descending order
Example: '4,2'
-
units (list of latex strings): list of generators of the units modulo torsion, stored as latex ready strings. If there is no class number, assume units are too hard to compute. If there is a class number but no units, units can be computed on the fly
Example: '\( \frac{31638929986556713906387419624924061291280938773945071}{3} a^{2} + 359196363271711287724533550734596540399636025857543545 a + \frac{8691254239667400643787765894631631739446478482481677573}{3} \)'
-
used_grh (boolean): True if class group/unit computation assumed GRH. If missing, assume false
Example: True
-
reg (float): regulator, computed if we have fundamental units
Example: 3.2345
-
subs (list): List of subfields, each represented as a pair [coefs, mult]. The coefficients are of a polredabs'ed polynomial for the subfield stored as a string, and mult is the multiplicity of the subfield (since representing a field by a polynomial only gives it up to isomorphism).
Example: [['1,0,1', 2], ['6,-2,1,0,1', 1]]
-
unitsGmodule (list of pairs of integers): in some cases we have data on the units modulo torsion as an integral Galois module. In each pair, the first coordinate is an index to the database of integral representations of the finite group, and the second is the multiplicity with which this representation appears.
Example: [[3, 1]]
-
res (dictionary): Resolvent information. Currently, only certain types of siblings are represented. Each key is a type and the value is a list of coefficients of polredabs'ed polynomials. The types are 'gal' for Galois closure, 'ae' for arithmetically equivalent field, 'sex' for twin sextic algebra (for degree 6 fields only), and 'sib' for other siblings.
Example: {u'sib': ['-4,1,2,-7,6,-3,1', '1,0,-1,-1,-1,0,1', '183,-217,111,-28,35,-14,4,0,1']}
-
oldpolredabscoeffs (list of ints as string): polredabs changed its definition. We store the current one, but sage produces the old version. If they are different, we store the old coefficients here so we can search on them.
Example: '-3,0,1'
-
oldpolredabscoeffhash (string): output of hexdigest applied to oldpolredabscoeffscoeffs -- it can be used as an index for coefficient lookup (coeffs can be too long)
Example: 'c187070bd71b8ab0a64176f5bc999046'
The dischash is computed as follows, assuming the disc_abs_key is stored as d
- if length of d is less than 19, set the hash equal to d, otherwise use the first 19 characters
- multiply the result by the sign of the discriminant
- {'_id': 1}: created by mongodb
- {'class_group':1}: class group
- {'class_number': 1}: class number
- {'coeffhash': 1}:
- {'degree': 1, 'disc_abs_key':1, 'disc_sign':1}:
- {'degree': 1, 'ramps': 1}:
- {'degree': 1, 'ramps_all': 1}:
- {'disc_abs_key': 1, 'disc_sign': 1, 'signature': -1}:
- {'galois': 1}:
- {'galois': 1, 'ramps': 1}:
- {'galois': 1, 'ramps_all': 1}:
- {'label': 1}:
- {''oldpolredabscoeffhash': 1}:
- {'ramps': 1}:
- {'ramps_all: 1}:
- {'signature': 1}:
- auxilliary collection used for random objection access
- auxilliary collection used for number field statistics
degree list of the number of fields of each degree
nt list indexed by degree-1, each a list indexed by t-1 for Galois group t
nsig list indexed by degree-1, each a list indexed by r_2
h list for each class number from 1 to 50
h_range list of class number counts for ranges based on powers of 10
has_h the number of fields for which we have the class number
dn counts of dihedral fields by degree
hdeg list indexed by degree, each a list of counts based on log_10(h)
has_hdeg number of fields where we have class numbers
sigclass1 list indexed by degree, of lists of number of class number 1 fields based on r_2
sighasclass list indexed by degree, of lists of number of fields for which we have the class numbers based on r_2