CREATE TABLE nf_fields (
	class_group	jsonb,	-- invariant factors for the class group, in ascending order
	class_number	numeric,	-- class number
	cm	boolean,	-- whether or not the field is a CM field
	coeffs	_numeric,	-- coefficients of our defining polynomial starting with the constant term.
	conductor	numeric,	-- if the field is abelian, its conductor
	degree	smallint,	-- degree of the field over *Q*
	dirichlet_group	unknown,	-- For an abelian field, the list of Dirichlet characters corresponding to this field given in Conrey numbering with modulus being the conductor of the field
	disc_abs	numeric,	-- the absolute value of the discriminant
	disc_rad	numeric,	-- the radical of the absolute value of the discriminant
	disc_sign	smallint,	-- 1 or -1 depending on the sign of the discriminant
	embeddings_gen_imag	_float8,	-- list of imaginary parts of embeddings of generator
	embeddings_gen_real	_float8,	-- list of real parts of embeddings of generator
	frobs	unknown,	-- List of Frobenius cycle types for the first few primes.  For ramified primes, we just give [0].
	gal_is_abelian	boolean,	-- true if the Galois group is abelian
	gal_is_cyclic	boolean,	-- true if the Galois group is cyclic
	gal_is_solvable	boolean,	-- true if the Galois group is solvable
	galois_disc_exponents	_numeric,	-- If there are n ramifying primes, a list of n integers which are the corresponding exponents in the discriminant of the Galois closure
	galois_label	text,	-- the label of the Galois group
	galt	integer,	-- the T-number of the Galois group
	grd	double precision,	-- Root discriminant of the Galois closure
	id	bigint,	-- 
	index	integer,	-- Index of the number field
	inessentialp	_int4,	-- List of inessential primes
	is_galois	boolean,	-- true if the field is Galois over Q
	is_minimal_sibling	boolean,	-- is this its own minimal sibling
	iso_number	smallint,	-- the last number in the label, which is just a counter
	label	text,	-- 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
	local_algs	_text,	-- Local algebras for ramified primes.  If a factor is in the local field database, we give its label.  If not, it is given as "m" followed by p.e.f.c.  Multiplicity is represented by repeating labels
	maximal_cm_subfield	_numeric,	-- coefficients of the maximal CM subfield.  If this does not exist, then None
	maxp	numeric,	-- Largest ramifying prime
	minimal_sibling	_numeric,	-- Coefficients for the minimal sibling of this field if it is a different field
	monogenic	smallint,	-- Is the field monogenic: 1 for yes, -1 for no, 0 for not computed
	narrow_class_group	_int8,	-- Invariant factors of the narrow class of the field in ascending order
	narrow_class_number	bigint,	-- Narrow class number of the field
	num_ram	smallint,	-- the number of ramified primes
	r2	smallint,	-- number of pairs of complex places
	ramps	_numeric,	-- the ramified primes in a list. Stored as strings because they may be too big
	rd	double precision,	-- root discriminant
	regulator	numeric,	-- regulator of the field
	relative_class_number	numeric,	-- The relative class number if the field is CM
	res	unknown,	-- 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.
	source	unknown,	-- Knowl, possibly with parameters, which describe the source of the field
	subfield_inclusions	unknown,	-- inclusions for subfields; values are the order they appear in subfields;inclusions to Q and top field not give
	subfield_mults	_int4,	-- Parallel to the list of subfields, the number of subfields isomorphic to one defined by the polynomial in the subfield list
	subfields	_text,	-- List of coefficients of defining polynomials, which are polredabs'ed for subfields
	torsion_gen	unknown,	-- A generator of the torsion subgroup of the unit group as a latex string
	torsion_gen_coeffs	unknown,	-- Generator of the torsion part of the unit group given as a vector of coefficients with respect to the integral basis
	torsion_order	smallint,	-- the order of the torsion subgroup of the unit group
	unit_signature_rank	smallint,	-- Unit signature rank of the field
	units	unknown,	-- 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
	unitsGmodule	unknown,	-- 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
	unitsType	unknown,	-- Type of unit group, modulo torsion, as a G-module where G is the Galois group
	units_coeffs	unknown,	-- List of fundamental units given as vectors of coefficients with respect to the integral basis
	used_grh	boolean,	-- True if class group/unit computation assumed GRH. If missing, assume false
	zk	unknown 	-- an integral basis in terms of 'a', a root of the defining polynomial
);