diff --git a/dev/FacElem/index.html b/dev/FacElem/index.html index 02023207dc..80d698a25b 100644 --- a/dev/FacElem/index.html +++ b/dev/FacElem/index.html @@ -1074,47 +1074,47 @@
FacElem{B}(R, base::Vector{B}, exp::Vector{fmpz}) -> FacElem{B}
Returns the element , un-expanded.
- +FacElem{B}(base::Vector{B}, exp::Vector{fmpz}) -> FacElem{B}
Returns the element , un-expanded.
- +FacElem{B}(R, d::Dict{B, fmpz}) -> FacElem{B}
FacElem{B}(R, d::Dict{B, Integer}) -> FacElem{B}
Returns the element , un-expanded.
- +FacElem{B}(d::Dict{B, fmpz}) -> FacElem{B}
FacElem{B}(d::Dict{B, Integer}) -> FacElem{B}
Returns the element , un-expanded.
- +#
FacElem
— Method.
FacElem{B}(R, base::Vector{B}, exp::Vector{fmpz}) -> FacElem{B}
Returns the element , un-expanded.
- +FacElem{B}(base::Vector{B}, exp::Vector{fmpz}) -> FacElem{B}
Returns the element , un-expanded.
- +FacElem{B}(R, d::Dict{B, fmpz}) -> FacElem{B}
FacElem{B}(R, d::Dict{B, Integer}) -> FacElem{B}
Returns the element , un-expanded.
- +FacElem{B}(d::Dict{B, fmpz}) -> FacElem{B}
FacElem{B}(d::Dict{B, Integer}) -> FacElem{B}
Returns the element , un-expanded.
- +#
ideal
— Method.
ideal(O::NfOrd, a::FacElem{nf_elem, AnticNumberField)
The factored fractional ideal .
- +evaluate{T}(x::FacElem{T}) -> T
Expands or evaluates the factored element, i.e. actually computes the value. Does "square-and-multiply" on the exponent vectors.
- +#
evaluate
— Method.
evaluate(x::FacElem{fmpq}) -> fmpq
evaluate(x::FacElem{fmpz}) -> fmpz
Expands or evaluates the factored element, i.e. actually computes the the element. Works by first obtaining a simplified version of the power product into coprime base elements.
- +#
evaluate
— Method.
evaluate{T}(x::FacElem{T}) -> T
Expands or evaluates the factored element, i.e. actually computes the value. Does "square-and-multiply" on the exponent vectors.
- +#
evaluate_naive
— Method.
evaluate_naive{T}(x::FacElem{T}) -> T
Expands or evaluates the factored element, i.e. actually computes the value. Uses the obvious naive algorithm. Faster for input in finite rings.
- +Uses coprime_base
to obtain a simplified version of , ie. in the simplified version all base ideals will be pariwise coprime but not neccessarily prime!.
#
simplify
— Method.
simplify(x::FacElem{fmpq}) -> FacElem{fmpq}
simplify(x::FacElem{fmpz}) -> FacElem{fmpz}
Simplfies the factored element, i.e. arranges for the base to be coprime.
- +The simplified version can then be used further:
#
isone
— Method.
Tests if represents without an evaluation.
- +#
factor_coprime
— Method.
factor_coprime(x::FacElem{fmpz}) -> Fac{fmpz}
Computed a partial factorisation of , ie. writes as a product of pariwise coprime integers.
- +#
factor_coprime
— Method.
factor_coprime(x::FacElem{NfOrdIdl, NfOrdIdlSet}) -> Dict{NfOrdIdl, Int}
Computed a partial factorisation of , ie. writes as a product of pariwise coprime integral ideals.
- +#
factor_coprime
— Method.
factor_coprime(Q::FacElem{NfOrdFracIdl, NfOrdFracIdlSet}) -> Dict{NfOrdIdl, Int}
A coprime factorisation of : each ideal in is split using \code{integral_split} and then a coprime basis is computed. This does {\bf not} use any factorisation.
- +#
factor_coprime
— Method.
factor_coprime(a::FacElem{nf_elem, AnticNumberField}, I::NfOrdIdlSet) -> Dict{NfOrdIdl, fmpz}
Factors the rincipal ideal generated by into coprimes by computing a coprime basis from the principal ideals in the factorisation of .
- +#
factor
— Method.
factor(Q::FacElem{NfOrdFracIdl, NfOrdFracIdlSet}) -> Dict{NfOrdIdl, Int}
The factorisation of , by refining a coprime factorisation.
- +#
factor
— Method.
factor(a::FacElem{nf_elem, AnticNumberField}, I::NfOrdIdlSet) -> Dict{NfOrdIdl, fmpz}
Factors the principal ideal generated by by refinind a coprime factorisation.
- +For factorised algebraic numbers a unique simplification is not possible, however, this allows still do obtain partial results:
#
compact_presentation
— Function.
compact_presentation(a::FacElem{nf_elem, AnticNumberField}, n::Int = 2; decom, arb_prec = 100, short_prec = 1000) -> FacElem
Computes a presentation where all the exponents are powers of and, the elements are "small", generically, they have a norm bounded by where is the discriminant of the maximal order. As the algorithm needs the factorisation of the principal ideal generated by , it can be passed in in \code{decom}.
- +#
signs
— Method.
signs(a::nf_elem) -> Dict{InfPlc, Int}
signs(a::FacElem{nf_elem}) -> Dict{InfPlc, Int}
This function returns a dictionary of the signs of at all infinite places of the ambient number field. The keys are infinite places of the ambient number field. The value is if the sign is positive and if the sign is negative.
- +#
signs
— Method.
signs(a::nf_elem, l::Vector{InfPlc}) -> Dict{InfPlc, Int}
signs(a::FacElem{nf_elem}, l::Vector{InfPlc}) -> Dict{InfPlc, Int}
This function returns a dictionary of the signs of at places in . The keys are the elements of . The value is if the sign is positive and if the sign is negative. The result will contain as many signs as there are real places contained in .
- +#
sign
— Method.
sign(a::nf_elem, P::InfPlc) -> Int
sign(a::FacElem{nf_elem}, P::InfPlc) -> Int
This function returns the sign of at the place . The value is if the sign is positive and if the sign is negative.
- +#
ispositive
— Method.
ispositive(a::nf_elem, P::InfPlc) -> Bool
ispositive(a::FacElem{nf_elem}, P::InfPlc) -> Bool
Returns whether the element is positive at the embedding corresponding to . The place must be real.
- +#
ispositive
— Method.
ispositive(a::nf_elem, l::Vector{InfPlc}) -> Bool
ispositive(a::FacElem{nf_elem}, l::Vector{InfPlc}) -> Bool
Returns whether the element is positive at the embeddings corresponding to the real places of .
- +#
istotally_positive
— Method.
istotally_positive(a::nf_elem) -> Bool
istotally_positive(a::FacElem{nf_elem}) -> Bool
Returns whether the element is totally positive, that is, whether it is positive at all places of the ambient number field.
- +#
valuation
— Method.
valuation(a::FacElem{nf_elem, AnticNumberField}, P::NfOrdIdl) -> fmpz
The valuation of at .
- +#
valuation
— Method.
valuation(A::FacElem{NfOrdFracIdl, NfOrdFracIdlSet}, p::NfOrdIdl)
valuation(A::FacElem{NfOrdIdl, NfOrdIdlSet}, p::NfOrdIdl)
The valuation of at .
- +#
evaluate_mod
— Method.
evaluate_mod(a::FacElem{nf_elem, AnticNumberField}, B::NfOrdFracIdl) -> nf_elem
Evaluates using CRT and small primes. Assumes that the ideal generated by is in fact . Useful in cases where has huge exponents, but the evaluated element is actually "small".
- +#
reduce_ideal
— Method.
reduce_ideal(A::FacElem{NfOrdIdl}) -> NfOrdIdl, FacElem{nf_elem}
Computes and in factored form, such that .
- +#
modular_proj
— Method.
modular_proj(a::FacElem{nf_elem, AnticNumberField}, me::modular_env) -> Vector{fq_nmod}
Given an algebraic number in factored form and data \code{me} as computed by \code{modular_init}, project onto the residue class fields.
- +max_exp(a::FacElem)
Finds the largest exponent in the factored element .
- +#
min_exp
— Method.
min_exp(a::FacElem)
Finds the smallest exponent in the factored element .
- +#
maxabs_exp
— Method.
maxabs_exp(a::FacElem)
Finds the largest exponent by absolute value in the factored element .
- + diff --git a/dev/abelian/elements/index.html b/dev/abelian/elements/index.html index 5f0b5042f9..78a0d75ffe 100644 --- a/dev/abelian/elements/index.html +++ b/dev/abelian/elements/index.html @@ -1100,43 +1100,43 @@gens(G::GrpAbFinGen) -> Vector{GrpAbFinGenElem}
The sequence of generators of .
- +#
GrpAbFinGen
— Method.
(A::GrpAbFinGen)(x::Vector{fmpz}) -> GrpAbFinGenElem
Given an array x
of elements of type fmpz
of the same length as ngens(), this function returns the element of with components x
.
#
GrpAbFinGen
— Method.
(A::GrpAbFinGen)(x::fmpz_mat) -> GrpAbFinGenElem
Given a matrix over the integers with row and ngens(A)
columns, this function returns the element of with components x
.
#
getindex
— Method.
getindex(A::GrpAbFinGen, i::Int) -> GrpAbFinGenElem
Returns the element of with components , where the is at the -th position.
- +#
rand
— Method.
rand(G::GrpAbFinGen) -> GrpAbFinGenElem
Returns an element of chosen uniformly at random.
- +#
rand
— Method.
rand(G::GrpAbFinGen, B::fmpz) -> GrpAbFinGenElem
For a (potentially infinite) abelian group , return an element chosen uniformly at random with coefficients bounded by .
- +#
parent
— Method.
parent(x::GrpAbFinGenElem) -> GrpAbFinGen
Returns the parent of .
- +getindex(x::GrpAbFinGenElem, i::Int) -> fmpz
Returns the -th component of the element .
- +order(A::GrpAbFinGenElem) -> fmpz
Returns the order of . It is assumed that the order is finite.
- +abelian_group(::Type{T} = GrpAbFinGen, M::fmpz_mat) -> GrpAbFinGen
Creates the abelian group with relation matrix M
. That is, the group will have ncols(M)
generators and each row of M
describes one relation.
#
abelian_group
— Method.
abelian_group(::Type{T} = GrpAbFinGen, M::AbstractMatrix{<:IntegerUnion})
Creates the abelian group with relation matrix M
. That is, the group will have ncols(M)
generators and each row of M
describes one relation.
#
abelian_group
— Method.
abelian_group(::Type{T} = GrpAbFinGen, M::AbstractMatrix{<:IntegerUnion})
Creates the abelian group with relation matrix M
. That is, the group will have ncols(M)
generators and each row of M
describes one relation.
Alternatively, there are shortcuts to create products of cyclic groups:
#
abelian_group
— Method.
Creates the direct product of the cyclic groups , where is the th entry of M
.
julia> G = abelian_group(2, 2, 6)
GrpAb: (Z/2)^2 x Z/6
free_abelian_group(::Type{T} = GrpAbFinGen, n::Int) -> GrpAbFinGen
Creates the free abelian group of rank n
.
#
abelian_groups
— Method.
abelian_groups(n::Int) -> Vector{GrpAbFinGen}
Given a positive integer , return a list of all abelian groups of order .
- +julia> abelian_groups(8)
3-element Vector{GrpAbFinGen}:
GrpAb: (Z/2)^3
@@ -1122,79 +1122,79 @@ Invariants
issnf(G::GrpAbFinGen) -> Bool
Returns whether the current relation matrix of the group is in Smith normal form.
-
+
#
ngens
— Method.
ngens(G::GrpAbFinGen) -> Int
Returns the number of generators of in the current representation.
-
+
#
nrels
— Method.
nrels(G::GrpAbFinGen) -> Int
Returns the number of relations of in the current representation.
-
+
#
rels
— Method.
rels(A::GrpAbFinGen) -> fmpz_mat
Returns the currently used relations of as a single matrix.
-
+
#
isfinite
— Method.
isfinite(A::GrpAbFinGen) -> Bool
Returns whether is finite.
-
+
#
isinfinite
— Method.
isinfinite(A::GrpAbFinGen) -> Bool
Returns whether is infinite.
-
+
#
rank
— Method.
rank(A::GrpAbFinGen) -> Int
Returns the rank of , that is, the dimension of the -vectorspace .
-
+
#
order
— Method.
order(A::GrpAbFinGen) -> fmpz
Returns the order of . It is assumed that is finite.
-
+
#
exponent
— Method.
exponent(A::GrpAbFinGen) -> fmpz
Returns the exponent of . It is assumed that is finite.
-
+
#
istrivial
— Method.
istrivial(A::GrpAbFinGen) -> Bool
Checks if is the trivial group.
-
+
#
istorsion
— Method.
istorsion(G::GrpAbFinGen) -> Bool
Returns true if and only if G
is a torsion group.
-
+
#
iscyclic
— Method.
iscyclic(G::GrpAbFinGen) -> Bool
Returns whether is cyclic.
-
+
#
elementary_divisors
— Method.
elementary_divisors(G::GrpAbFinGen) -> Vector{fmpz}
Given , returns the elementary divisors of , that is, the unique positive integers with and .
-
+
diff --git a/dev/abelian/maps/index.html b/dev/abelian/maps/index.html
index 7e32458c72..2106b931cd 100644
--- a/dev/abelian/maps/index.html
+++ b/dev/abelian/maps/index.html
@@ -1021,13 +1021,13 @@ Maps
hom(G::GrpAbFinGen, H::GrpAbFinGen, A::Matrix{ <: Map{GrpAbFinGen, GrpAbFinGen}}) -> Map
Given groups and that are created as direct products as well as a matrix containing maps , return the induced homomorphism.
-
+
#
isisomorphic
— Method.
isisomorphic(G::GrpAbFinGen, H::GrpAbFinGen) -> Bool
Checks if and are isomorphic.
-
+
julia> G = free_abelian_group(2)
GrpAb: Z^2
diff --git a/dev/abelian/structural/index.html b/dev/abelian/structural/index.html
index b05aa6d47b..6c5477756a 100644
--- a/dev/abelian/structural/index.html
+++ b/dev/abelian/structural/index.html
@@ -1089,14 +1089,14 @@ Structural Computations
snf(A::GrpAbFinGen) -> GrpAbFinGen, Map
Returns a pair , where is an abelian group in canonical Smith normal form isomorphic to and an isomorphism .
-
+
#
find_isomorphism
— Method.
find_isomorphism(G, op, A::GrpAb) -> Dict, Dict
Given an abelian group and a collection which is an abelian group with the operation op
, this functions returns isomorphisms and encoded as dictionaries.
It is assumed that and are isomorphic.
-
+
Subgroups and Quotients
@@ -1105,59 +1105,59 @@ Subgroups and Quotients
torsion_subgroup(G::GrpAbFinGen) -> GrpAbFinGen, Map
Returns the torsion subgroup of G
.
-
+
#
sub
— Method.
sub(G::GrpAbFinGen, s::Vector{GrpAbFinGenElem}) -> GrpAbFinGen, Map
Create the subgroup of generated by the elements in s
together with the injection .
-
+
#
sub
— Method.
sub(s::Vector{GrpAbFinGenElem}) -> GrpAbFinGen, Map
Assuming that the non-empty array s
contains elements of an abelian group , this functions returns the subgroup of generated by the elements in s
together with the injection .
-
+
sub(A::SMat, r::UnitRange, c::UnitRange) -> SMat
Return the submatrix of , where the rows correspond to and the columns correspond to .
-
+
#
sub
— Method.
sub(G::GrpAbFinGen, M::fmpz_mat) -> GrpAbFinGen, Map
Create the subgroup of generated by the elements corresponding to the rows of together with the injection .
-
+
#
sub
— Method.
sub(G::GrpAbFinGen, n::fmpz) -> GrpAbFinGen, Map
Create the subgroup of together with the injection .
-
+
#
sub
— Method.
sub(G::GrpAbFinGen, n::Integer) -> GrpAbFinGen, Map
Create the subgroup of together with the injection .
-
+
#
psylow_subgroup
— Method.
psylow_subgroup(G::GrpAbFinGen, p::IntegerUnion) -> GrpAbFinGen, Map
Returns the -Sylow subgroup of G
.
-
+
#
has_quotient
— Method.
has_quotient(G::GrpAbFinGen, invariant::Vector{Int}) -> Bool
Given an abelian group , returns true if it has a quotient with given elementary divisors and false otherwise.
-
+
#
has_complement
— Method.
has_complement(f::GrpAbFinGenMap) -> Bool, GrpAbFinGenMap
Given a map representing a subgroup of a group , returns either true and an injection of a complement in , or false.
-
+
A sophisticated algorithm for the enumeration of all (or selected) subgroups of a finite abelian group is available.
#
psubgroups
— Method.
@@ -1168,7 +1168,7 @@ Subgroups and Quotients
order = -1)
Return an iterator for the subgroups of of the specific form. Note that subtype
(and quotype
) is the type of the subgroup as an abelian -group.
-
+
julia> G = abelian_group([6, 12])
GrpAb: Z/6 x Z/12
@@ -1193,7 +1193,7 @@ Subgroups and Quotients
order = -1)
Return an iterator for the subgroups of of the specific form.
-
+
julia> for U = subgroups(G, subtype = [2])
@show U[1], map(U[2], gens(U[1]))
end
@@ -1242,40 +1242,40 @@ Subgroups and Quotients
quo(G::GrpAbFinGen, s::Vector{GrpAbFinGenElem}) -> GrpAbFinGen, Map
Create the quotient of by the subgroup generated by the elements in , together with the projection .
-
+
#
quo
— Method.
quo(G::GrpAbFinGen, M::fmpz_mat) -> GrpAbFinGen, Map
Create the quotient of by the subgroup generated by the elements corresponding to the rows of , together with the projection .
-
+
#
quo
— Method.
quo(G::GrpAbFinGen, n::Integer}) -> GrpAbFinGen, Map
quo(G::GrpAbFinGen, n::fmpz}) -> GrpAbFinGen, Map
Returns the quotient together with the projection .
-
+
#
quo
— Method.
quo(G::GrpAbFinGen, n::Integer}) -> GrpAbFinGen, Map
quo(G::GrpAbFinGen, n::fmpz}) -> GrpAbFinGen, Map
Returns the quotient together with the projection .
-
+
#
quo
— Method.
quo(G::GrpAbFinGen, U::GrpAbFinGen) -> GrpAbFinGen, Map
Create the quotient of by , together with the projection .
-
+
For 2 subgroups U
and V
of the same group G
, U+V
returns the smallest subgroup of G
containing both. Similarly, computes the intersection and U \subset V
tests for inclusion. The difference between issubset =
and issubgroup
is that the inclusion map is also returned in the 2nd call.
#
intersect
— Method.
intersect(mG::GrpAbFinGenMap, mH::GrpAbFinGenMap) -> GrpAbFinGen, Map
Given two injective maps of abelian groups with the same codomain , return the intersection of the images as a subgroup of .
-
+
Direct Products
@@ -1284,25 +1284,25 @@ Direct Products
direct_product(G::GrpAbFinGen...; task::Symbol = :prod) -> GrpAbFinGen, GrpAbFinGenMap, GrpAbFinGenMap
Returns the direct product of the abelian groups . task
can be ":sum", ":prod", ":both" or ":none" and determines which canonical maps are computed as well: ":sum" for the injections, ":prod" for the projections.
-
+
#
canonical_injection
— Method.
canonical_injection(G::GrpAbFinGen, i::Int) -> Map
Given a group that was created as a direct product, return the injection from the th component.
-
+
#
canonical_projection
— Method.
canonical_projection(G::GrpAbFinGen, i::Int) -> Map
Given a group that was created as a direct product, return the projection onto the th component.
-
+
#
flat
— Method.
flat(G::GrpAbFinGen) -> GrpAbFinGen, Map
Given a group that is created using (iterated) direct products, or (iterated) tensor product, return a group that is a flat product: is returned as , (resp. ) together with the isomorphism.
-
+
Tensor Producs
@@ -1311,13 +1311,13 @@ Tensor Producs
tensor_product(G::GrpAbFinGen...; task::Symbol = :map) -> GrpAbFinGen, Map
Given groups , compute the tensor product . If task
is set to ":map", a map is returned that maps tuples in to pure tensors . The map admits a preimage as well.
-
+
<a id='hom-Tuple{GrpAbFinGen, GrpAbFinGen, Vector{<:Map{GrpAbFinGen, GrpAbFinGen}}}' href='#hom-Tuple{GrpAbFinGen, GrpAbFinGen, Vector{<:Map{GrpAbFinGen, GrpAbFinGen}}}'>#
hom
— Method.
hom(G::GrpAbFinGen, H::GrpAbFinGen, A::Vector{ <: Map{GrpAbFinGen, GrpAbFinGen}}) -> Map
Given groups and as well as maps , compute the tensor product of the maps.
-
+
Hom-Group
@@ -1326,7 +1326,7 @@ Hom-Group
hom(G::GrpAbFinGen, H::GrpAbFinGen; task::Symbol = :map) -> GrpAbFinGen, Map
Computes the group of all homomorpisms from to as an abstract group. If task
is ":map", then a map is computed that can be used to obtain actual homomorphisms. This map also allows preimages. Set task
to ":none" to not compute the map.
-
+
diff --git a/dev/class_fields/intro/index.html b/dev/class_fields/intro/index.html
index c5a54f23d1..a62aaebb9a 100644
--- a/dev/class_fields/intro/index.html
+++ b/dev/class_fields/intro/index.html
@@ -1123,13 +1123,13 @@ Ray Class Groups
ray_class_group(m::NfOrdIdl, inf_plc::Vector{InfPlc}; n_quo::Int, lp::Dict{NfOrdIdl, Int}) -> GrpAbFinGen, MapRayClassGrp
Given an ideal and a set of infinite places of , this function returns the corresponding ray class group as an abstract group and a map going from the group into the group of ideals of that are coprime to . If n_quo
is set, it will return the group modulo n_quo
. The factorization of can be given with the keyword argument lp
.
-
+
#
class_group
— Method.
class_group(K::AnticNumberField) -> GrpAbFinGen, Map
Shortcut for class_group(maximal_order(K))
: returns the class group as an abelian group and a map from this group to the set of ideals of the maximal order.
-
+
#
norm_group
— Method.
norm_group(f::Nemo.PolyElem, mR::Hecke.MapRayClassGrp, isabelian::Bool = true; of_closure::Bool = false) -> Hecke.FinGenGrpAb, Hecke.FinGenGrpAbMap
@@ -1137,7 +1137,7 @@ Ray Class Groups
norm_group(f::Array{PolyElem{nf_elem}}, mR::Hecke.MapRayClassGrp, isabelian::Bool = true; of_closure::Bool = false) -> Hecke.FinGenGrpAb, Hecke.FinGenGrpAbMap
Computes the subgroup of the Ray Class Group given by the norm of the extension generated by a/the roots of . If isabelian
is set to true, then the code assumes the field to be abelian, hence the algorithm stops when the quotient by the norm group has the correct order. Even though the algorithm is probabilistic by nature, in this case the result is guaranteed. If of_closure
is given, then the norm group of the splitting field of the polynomial(s) is computed. It is the callers responsibility to ensure that the ray class group passed in is large enough.
-
+
#
norm_group
— Method.
norm_group(K::NfRel{nf_elem}, mR::Hecke.MapRayClassGrp) -> Hecke.FinGenGrpAb, Hecke.FinGenGrpAbMap
@@ -1145,7 +1145,7 @@ Ray Class Groups
norm_group(K::NfRelNS{nf_elem}, mR::Hecke.MapRayClassGrp) -> Hecke.FinGenGrpAb, Hecke.FinGenGrpAbMap
Computes the subgroup of the Ray Class Group given by the norm of the extension.
-
+
Ray Class Fields
@@ -1157,37 +1157,37 @@ Ray Class Fields
ray_class_field(m::MapRayClassGrp) -> ClassField
Creates the (formal) abelian extension defined by the map where is the set of ideals coprime to the modulus defining and is a quotient of the ray class group (or class group). The map must be the map returned from a call to {classgroup} or {rayclass_group}.
-
+
#
ray_class_field
— Method.
ray_class_field(m::Union{MapClassGrp, MapRayClassGrp}, quomap::GrpAbFinGenMap) -> ClassField
For a map computed by either {rayclassgroup} or {class_group} and a canonical projection (quotient map) as returned by {quo} for q quotient of the domain of and a subgroup of , create the (formal) abelian extension where the (relative) automorphism group is canonically isomorphic to the codomain of .
-
+
#
ray_class_field
— Method.
ray_class_field(I::NfAbsOrdIdl; n_quo = 0) -> ClassField
The ray class field modulo . If n_quo
is given, then the largest subfield of exponent is computed.
-
+
#
ray_class_field
— Method.
ray_class_field(I::NfAbsOrdIdl, inf::Vector{InfPlc}; n_quo = 0) -> ClassField
The ray class field modulo and the infinite places given. If n_quo
is given, then the largest subfield of exponent is computed.
-
+
#
hilbert_class_field
— Method.
hilbert_class_field(k::AnticNumberField) -> ClassField
The Hilbert class field of as a formal (ray-) class field.
-
+
#
ring_class_field
— Method.
ring_class_field(O::NfAbsOrd) -> ClassField
The ring class field of , i.e. the maximal abelian extension ramified only at primes dividing the conductor with the automorphism group isomorphic to the Picard group.
-
+
Example
@@ -1216,7 +1216,7 @@ Conversions
Given a (formal) abelian extension, compute the class field by finding defining polynomials for all prime power cyclic subfields.
Note, the return type is always a non-simple extension.
- +julia> Qx, x = PolynomialRing(FlintQQ, "x");
julia> k, a = NumberField(x^2 - 10, "a");
@@ -1245,25 +1245,25 @@ Conversions
ray_class_field(K::NfRel{nf_elem}) -> ClassField
For a (relative) abelian extension, compute an abstract representation as a class field.
-
+
#
genus_field
— Method.
genus_field(A::ClassField, k::AnticNumberField) -> ClassField
The maximal extension contained in that is the compositum of with an abelian extension of .
-
+
#
maximal_abelian_subfield
— Method.
maximal_abelian_subfield(A::ClassField, k::AnticNumberField) -> ClassField
The maximal abelian extension of contained in . must be a subfield of the base field of .
-
+
#
maximal_abelian_subfield
— Method.
maximal_abelian_subfield(K::NfRel{nf_elem}; of_closure::Bool = false) -> ClassField
Using a probabilistic algorithm for the norm group computation, determine the maximal abelian subfield in over its base field. If of_closure
is set to true, then the algorithm is applied to the normal closure of (without computing it).
-
+
Invariants
@@ -1272,61 +1272,61 @@ Invariants
degree(A::ClassField)
The degree of over its base field, i.e. the size of the defining ideal group.
-
+
#
base_ring
— Method.
base_ring(A::ClassField)
The maximal order of the field that is defined over.
-
+
#
base_field
— Method.
base_field(A::ClassField)
The number field that is defined over.
-
+
#
discriminant
— Method.
discriminant(C::ClassField) -> NfOrdIdl
Using the conductor-discriminant formula, compute the (relative) discriminant of . This does not use the defining equations.
-
+
#
conductor
— Method.
conductor(C::ClassField) -> NfOrdIdl, Vector{InfPlc}
Return the conductor of the abelian extension corresponding to .
-
+
#
defining_modulus
— Method.
defining_modulus(CF::ClassField)
The modulus, i.e. an ideal of the set of real places, used to create the class field.
-
+
#
iscyclic
— Method.
iscyclic(C::ClassField)
Tests if the (relative) automorphism group of is cyclic (by checking the defining ideal group).
-
+
#
isconductor
— Method.
isconductor(C::Hecke.ClassField, m::NfOrdIdl, inf_plc::Vector{InfPlc}=InfPlc[]; check) -> NfOrdIdl, Vector{InfPlc}
Checks if (m, inf_plc) is the conductor of the abelian extension corresponding to . If check
is false
, it assumes that the given modulus is a multiple of the conductor. This is usually faster than computing the conductor.
-
+
#
isnormal
— Method.
isnormal(C::ClassField) -> Bool
For a class field defined over a normal base field , decide if is normal over .
-
+
#
iscentral
— Method.
iscentral(C::ClassField) -> Bool
For a class field defined over a normal base field , decide if is central over .
-
+
Operations
@@ -1335,67 +1335,67 @@ Operations
*(A::ClassField, B::ClassField) -> ClassField
The compositum of and as a (formal) class field.
-
+
#
compositum
— Method.
compositum(a::ClassField, b::ClassField) -> ClassField
The compositum of and as a (formal) class field.
-
+
#
==
— Method.
==(a::ClassField, b::ClassField)
Tests if and are equal.
-
+
#
intersect
— Method.
intersect(a::ClassField, b::ClassField) -> ClassField
The intersection of and as a class field.
-
+
#
prime_decomposition_type
— Method.
prime_decomposition_type(C::ClassField, p::NfAbsOrdIdl) -> (Int, Int, Int)
For a prime in the base ring of , determine the splitting type of in . ie. the tuple giving the ramification degree, the inertia and the number of primes above .
-
+
#
issubfield
— Method.
issubfield(a::ClassField, b::ClassField) -> Bool
Determines if is a subfield of .
-
+
#
islocal_norm
— Method.
islocal_norm(r::ClassField, a::NfAbsOrdElem) -> Bool
Tests if is a local norm at all finite places in the extension implictly given by .
-
+
#
islocal_norm
— Method.
islocal_norm(r::ClassField, a::NfAbsOrdElem, p::NfAbsOrdIdl) -> Bool
Tests if is a local norm at in the extension implictly given by . Currently the conductor cannot have infinite places.
-
+
#
normal_closure
— Method.
normal_closure(C::ClassField) -> ClassField
For a ray class field extending a normal base field , compute the normal closure over .
-
+
#
subfields
— Method.
subfields(C::ClassField) -> Vector{ClassField}
Find all subfields of as class fields. Note: this will not find all subfields over , but only the ones sharing the same base field.
-
+
#
subfields
— Method.
subfields(C::ClassField, d::Int) -> Vector{ClassField}
Find all subfields of of degree as class fields. Note: this will not find all subfields over , but only the ones sharing the same base field.
-
+
diff --git a/dev/function_fields/degree_localization/index.html b/dev/function_fields/degree_localization/index.html
index 9f1c905471..43e51a071e 100644
--- a/dev/function_fields/degree_localization/index.html
+++ b/dev/function_fields/degree_localization/index.html
@@ -1144,7 +1144,7 @@ Construction of the degree loca
Localization(K::RationalFunctionField{T}, ::typeof(degree)) where T <: FieldElement
Return the localization of at inside the rational function field , i.e. the localization of the function field at the point at infinity, i.e. the valuation ring for valuation degree. This is the ring .
-
+
@@ -1184,20 +1184,20 @@ Element functionality
degree(a::KInftyElem)
Return the degree of the given element, i.e. degree(numerator) - degree(denominator)
.
-
+
#
valuation
— Method.
valuation(a::KInftyElem)
Return the degree valuation of the given element, i.e. -degree(a)
.
-
+
One can test whether a given element of a rational function field is in the degree localization.
<a id='in-Union{Tuple{T}, Tuple{AbstractAlgebra.Generic.Rat{T}, KInftyRing{T}}} where T<:FieldElement' href='#in-Union{Tuple{T}, Tuple{AbstractAlgebra.Generic.Rat{T}, KInftyRing{T}}} where T<:FieldElement'>#
in
— Method.
in(a::Generic.Rat{T}, R::KInftyRing{T}) where T <: FieldElement
Return true
if the given element of the rational function field is an element of k_\infty(x)
, i.e. if degree(numerator) <= degree(denominator)
.
-
+
All basic arithmetic operations are provided for elements of the degree localization.
As the degree localization is a Euclidean ring, all standard Euclidean functions, including div
, divrem
, mod
, gcd
, gcdx
, are provided.
diff --git a/dev/misc/conjugacy/index.html b/dev/misc/conjugacy/index.html
index 8ff42fbd00..4fe7dead03 100644
--- a/dev/misc/conjugacy/index.html
+++ b/dev/misc/conjugacy/index.html
@@ -986,7 +986,7 @@ Conjugacy of integral matrices
julia> isone(abs(det(T))) && T * A == B * T
true
euler_phi_inv(n::Integer) -> Vector{fmpz}
The inverse of the Euler totient functions: find all s.th. holds.
- +euler_phi_inv(n::fmpz) -> Vector{fmpz}
The inverse of the Euler totient functions: find all s.th. holds.
- +euler_phi_inv(n::fmpz, zk::NfAbsOrd{AnticNumberField, nf_elem}) -> Vector{NfOrdIdl}
The inverse of the ideal totient function: all ideals s.th. the unit group of the residue ring has the required size.
- +#
modord
— Method.
modord(a::fmpz, m::fmpz) -> Int
modord(a::Integer, m::Integer)
The multiplicative order of a modulo (not a good algorithm).
- +#
isprime_power
— Method.
isprime_power(n::fmpz) -> Bool
isprime_power(n::Integer) -> Bool
Tests if is the exact power of a prime number.
- +#
primes_up_to
— Method.
primes_up_to(n::Int) -> Vector{Int}
Returns a vector containing all the prime numbers up to .
- +dickman_rho(x::Number, prec::Int=55) Number
Evaluates the Dickman- function at .
- +dickman_rho(x::Number, e::UnitRange{Int}, prec::Int=55) Number[]
Evaluates the Dickman- function at for all .
- +#
psi_guess
— Function.
psi_guess(x::Number, B::Int) Number
Uses the dickman_rho function to estimate the number of -smooth integers bounded by .
- +psi_guess(x::Number, e::UnitRange, B::Int) Number
Uses the dickman_rho function to estimate the number of -smooth integers bounded by for .
- +#
psi_lower
— Function.
psi_lower(N::Integer, B::Int, a::Int = 776) -> Vector{Int}, fmpz_abs_series
@@ -1135,7 +1135,7 @@ Analytic
Uses Bernstein's ideas: https://cr.yp.to/papers/psi.pdf to compute lower bounds on the psi function counting smooth numbers. An array is returned s.th. for . The second return value is Bernstein's power series.
The optional other parameter controls the precision of the result, it defaults to 776.
- +psi_lower(N::Integer, B::NfFactorBase) -> Vector{Int}, fmpz_abs_series
psi_lower(N::fmpz, B::NfFactorBase) -> Vector{Int}, fmpz_abs_series
@@ -1143,7 +1143,7 @@ Analytic
psi_upper(N::fmpz, B::NfFactorBase) -> Vector{Int}, fmpz_abs_series
Uses Bernstein's techniques to bound the number of ideals of norm bounded by that are smooth over the factor base .
- +largest_elementary_divisor(A::fmpz_mat) -> fmpz
The largest elementary divisor of , that is, the last diagonal entry of the Smith normal form of .
- +#
maximal_elementary_divisor
— Method.
maximal_elementary_divisor(A::fmpz_mat) -> fmpz
The largest elementary divisor of , that is, the last diagonal entry of the Smith normal form of .
- +#
mod_sym
— Method.
mod_sym(M::fmpz_mat, p::fmpz) -> fmpz_mat
Reduces every entry modulo into the symmetric residue system.
- +#
mod_sym!
— Method.
mod_sym!(M::fmpz_mat, p::fmpz)
Reduces every entry modulo in-place, into the symmetric residue system.
- +#
mod!
— Method.
mod!(M::fmpz_mat, p::fmpz)
Reduces every entry modulo in-place, i.e. applies the mod function to every entry. Positive residue system.
- +#
saturate
— Method.
saturate(A::fmpz_mat) -> fmpz_mat
Computes the saturation of , that is, a basis for , where is the row span of and the number of rows of .
Equivalently, return for an invertible rational matrix such that is integral and the elementary divisors of are all trivial.
- +#
elementary_divisors
— Method.
elementary_divisors(A::fmpz_mat) -> Vector{fmpz}
The elementary divisors of , that is, the diagonal entries of the Smith normal form of .
- +#
jordan_normal_form
— Function.
jordan_normal_form(M::MatElem{T}) where T <: FieldElem -> MatElem{T}, MatElem{T}
Returns matrices and such that and is in Jordan normal form.
- +#
divisors
— Method.
divisors(A::fmpz_mat, d::fmpz) -> fmpz
Returns the diagonal entries of a diagonal form of . We assume that all the elementary divisors are divisors of .
- +#
snf_with_transform
— Method.
snf_with_transform(A::fmpz_mat, l::Bool = true, r::Bool = true) -> fmpz_mat, fmpz_mat, fmpz_mat
Given some integer matrix , compute the Smith normal form (elementary divisor normal form) of . If l
and/ or r
are true, then the corresponding left and/ or right transformation matrices are computed as well.
induce_crt(a::fmpz_poly, p::fmpz, b::fmpz_poly, q::fmpz, signed::Bool = false) -> fmpz_poly
Given integral polynomials and as well as coprime integer moduli and , find and . If signed
is set, the symmetric representative is used, the positive one otherwise.
induce_crt(L::Vector{PolyElem}, c::crt_env{fmpz}) -> fmpz_poly
Given fmpz_poly polynomials and a crt\_env
, apply the crt
function to each coefficient resulting in a polynomial .
induce_crt(L::Vector{MatElem}, c::crt_env{fmpz}) -> fmpz_mat
Given matrices and a crt\_env
, apply the crt
function to each coefficient resulting in a matrix .
induce_crt(a::Generic.Poly{nf_elem}, p::fmpz, b::Generic.Poly{nf_elem}, q::fmpz) -> Generic.Poly{nf_elem}, fmpz
Given polynomials defined modulo and modulo , apply the CRT to all coefficients recursively. Implicitly assumes that and have integral coefficients (i.e. no denominators).
- +#
induce_rational_reconstruction
— Function.
induce_rational_reconstruction(a::fmpz_poly, M::fmpz) -> fmpq_poly
Apply rational_reconstruction
to each coefficient of , resulting in either a fail (return (false, s.th.)) or (true, g) for some rational polynomial s.th. .
induce_rational_reconstruction(a::Generic.Poly{nf_elem}, M::fmpz) -> bool, Generic.Poly{nf_elem}
Apply rational reconstruction to the coefficients of . Implicitly assumes the coefficients to be integral (no checks done) returns true iff this is successful for all coefficients.
- + diff --git a/dev/number_fields/complex_embeddings/index.html b/dev/number_fields/complex_embeddings/index.html index ccb10db665..34d406da80 100644 --- a/dev/number_fields/complex_embeddings/index.html +++ b/dev/number_fields/complex_embeddings/index.html @@ -1117,7 +1117,7 @@#
real_embeddings
— Method.
real_embeddings(K::NumField) -> Vector{NumFieldEmb}
@@ -1131,7 +1131,7 @@ Construction of complex embeddings
Embedding corresponding to ≈ -1.73
Embedding corresponding to ≈ 1.73
#
isreal
— Method.
isreal(f::NumFieldEmb) -> Bool
@@ -1158,7 +1158,7 @@ Properties
julia> isreal(e)
true
#
isimaginary
— Method.
isimaginary(f::NumFieldEmb) -> Bool
@@ -1170,7 +1170,7 @@ Properties
julia> isimaginary(e)
true
#
restrict
— Method.
restrict(f::NumFieldEmb, g::NumFieldMor)
@@ -1253,7 +1253,7 @@ Restriction
Number field over Rational Field with defining polynomial x^2 + x - 1
corresponding to ≈ 0.62
gen(L::SimpleNumField) -> NumFieldElem
Given a simple number field over , this functions returns the class of , which is the canonical primitive element of over .
- +#
gens
— Method.
gens(L::NonSimpleNumField) -> Vector{NumFieldElem}
Given a non-simple number field over , this functions returns the list .
- +Elements can also be created by specifying the coordinates with respect to the basis of the number field:
(L::NumberField)(c::Vector{NumFieldElem}) -> NumFieldElem
quadratic_defect(a::Union{NumFieldElem,Rational,fmpq}, p) -> Union{Inf, PosInf}
Returns the valuation of the quadratic defect of the element at , which can either be prime object or an infinite place of the parent of .
- +#
hilbert_symbol
— Method.
hilbert_symbol(a::NumFieldElem, b::NumFieldElem, p::NfOrdIdl) -> Int
Returns the local Hilbert symbol .
- +#
representation_matrix
— Method.
representation_matrix(a::NumFieldElem) -> MatElem
Returns the representation matrix of , that is, the matrix representing multiplication with with respect to the canonical basis of the parent of .
- +#
basis_matrix
— Method.
basis_matrix(v::Vector{NumFieldElem}) -> Mat
Given a vector of elements of a number field of degree , this function returns an matrix with entries in the base field of , where row contains the coefficients of with respect of the canonical basis of .
- +#
coefficients
— Method.
coefficients(a::SimpleNumFieldElem, i::Int) -> Vector{FieldElem}
Given a number field element a
of a simple number field extension L/K
, this function returns the coefficients of a
, when expanded in the canonical power basis of L
.
#
coordinates
— Method.
coordinates(x::NumFieldElem{T}) -> Vector{T}
Given an element in a number field , this function returns the coordinates of with respect to the basis of (the output of the 'basis' function).
- +#
absolute_coordinates
— Method.
absolute_coordinates(x::NumFieldElem{T}) -> Vector{T}
Given an element in a number field , this function returns the coordinates of with respect to the basis of over the rationals (the output of the 'absolute_basis' function).
- +#
coeff
— Method.
coeff(a::SimpleNumFieldElem, i::Int) -> FieldElem
Given a number field element a
of a simple number field extension L/K
, this function returns the i
-th coefficient of a
, when expanded in the canonical power basis of L
. The result is an element of K
.
#
valuation
— Method.
valuation(a::NumFieldElem, p::NfOrdIdl) -> fmpz
Computes the -adic valuation of , that is, the largest such that is contained in .
- +#
torsion_unit_order
— Method.
torsion_unit_order(x::nf_elem, n::Int)
Given a torsion unit together with a multiple of its order, compute the order of , that is, the smallest such that .
It is not checked whether is a torsion unit.
- +#
tr
— Method.
tr(a::NumFieldElem) -> NumFieldElem
Returns the trace of an element of a number field extension . This will be an element of .
- +#
absolute_tr
— Method.
absolute_tr(a::NumFieldElem) -> fmpq
Given a number field element , returns the absolute trace of .
- +#
algebraic_split
— Method.
algebraic_split(a::nf_elem) -> nf_elem, nf_elem
Writes the input as a quotient of two "small" algebraic integers.
- +Compute the conjugates of as elements of type acb
. Recall that we order the complex conjugates such that for .
Let p
be the precision of C
, then every entry of the vector returned satisfies radius(real(y)) < 2^-p
and radius(imag(y)) < 2^-p
respectively.
#
conjugates
— Method.
conjugates(x::nf_elem, abs_tol::Int) -> Vector{acb}
Compute the conjugates of as elements of type acb
. Recall that we order the complex conjugates such that for .
Every entry of the vector returned satisfies radius(real(y)) < 2^-abs_tol
and radius(imag(y)) < 2^-abs_tol
respectively.
#
conjugates_log
— Method.
conjugates_arb_log(x::nf_elem, abs_tol::Int) -> Vector{arb}
Returns the elements as elements of type arb
with radius less then 2^-abs_tol
.
#
conjugates_real
— Method.
conjugates_arb_real(x::nf_elem, abs_tol::Int) -> Vector{arb}
Compute the real conjugates of as elements of type arb
.
Every entry of the array returned satisfies radius(y) < 2^-abs_tol
.
#
conjugates_complex
— Method.
conjugates_complex(x::nf_elem, abs_tol::Int) -> Vector{acb}
Compute the complex conjugates of as elements of type acb
. Recall that we order the complex conjugates such that for .
Every entry of the array returned satisfies radius(real(y)) < 2^-abs_tol
and radius(imag(y)) < 2^-abs_tol
.
#
evaluate
— Method.
evaluate(a::nf_elem, P::InfPlc, p::Int = 20)
The evaluation of at the place , i.e. a real or complex value. specifies the precision to be returned.
- +#
conjugates_arb_log_normalise
— Method.
conjugates_arb_log_normalise(x::nf_elem, p::Int = 10)
conjugates_arb_log_normalise(x::FacElem{nf_elem, AnticNumberField}, p::Int = 10)
The "normalised" logarithms, i.e. the array , so the (weighted) sum adds up to zero.
- +#
minkowski_map
— Method.
minkowski_map(a::nf_elem, abs_tol::Int) -> Vector{arb}
Returns the image of under the Minkowski embedding. Every entry of the array returned is of type arb
with radius less then 2^(-abs_tol)
.
#
isnegative
— Method.
isnegative(a::nf_elem, P::InfPlc) -> Bool
isnegative(a::FacElem{nf_elem}, P::InfPlc) -> Bool
Returns whether the element is negative at the embedding corresponding to . The place must be real.
- +isintegral(a::NumFieldElem) -> Bool
Returns whether is integral, that is, whether the minimal polynomial of has integral coefficients.
- +#
istorsion_unit
— Method.
istorsion_unit(x::nf_elem, checkisunit::Bool = false) -> Bool
Returns whether is a torsion unit, that is, whether there exists such that .
If checkisunit
is true
, it is first checked whether is a unit of the maximal order of the number field is lying in.
#
islocal_norm
— Method.
islocal_norm(L::NumField, a::NumFieldElem, P)
Given a number field , an element and a prime ideal of , returns whether is a local norm at .
The number field must be a simple extension of degree 2.
- +#
isnorm_divisible
— Method.
isnorm_divisible(a::nf_elem, n::fmpz) -> Bool
Checks if the norm of is divisible by , assuming that the norm of is an integer.
- +#
isnorm
— Method.
isnorm(K::AnticNumberField, a::fmpz; extra::Vector{fmpz}) -> Bool, nf_elem
For a fmpz , try to find s.th. holds. If successful, return true and , otherwise false and some element. In \testtt{extra} one can pass in additional prime numbers that are allowed to occur in the solution. This will then be supplemented. The element will be returned in factored form.
- +norm(a::NumFieldElem) -> NumFieldElem
Returns the norm of an element of a number field extension . This will be an element of .
- +#
absolute_norm
— Method.
absolute_norm(a::NumFieldElem) -> fmpq
Given a number field element , returns the absolute norm of .
- +#
minpoly
— Method.
minpoly(a::NumFieldElem) -> PolyElem
Given a number field element of a number field , this function returns the minimal polynomial of over the base field of .
- +#
absolute_minpoly
— Method.
absolute_minpoly(a::NumFieldElem) -> PolyElem
Given a number field element of a number field , this function returns the minimal polynomial of over the rationals .
- +#
charpoly
— Method.
charpoly(a::NumFieldElem) -> PolyElem
Given a number field element of a number field , this function returns the characteristic polynomial of over the base field of .
- +#
absolute_charpoly
— Method.
absolute_charpoly(a::NumFieldElem) -> PolyElem
Given a number field element of a number field , this function returns the characteristic polynomial of over the rationals .
- +#
norm
— Method.
norm(a::NumFieldElem, k::NumField) -> NumFieldElem
Returns the norm of an element of a number field with respect to a subfield of . This will be an element of .
- + diff --git a/dev/number_fields/fields/index.html b/dev/number_fields/fields/index.html index de7380b302..d60d3e034e 100644 --- a/dev/number_fields/fields/index.html +++ b/dev/number_fields/fields/index.html @@ -1171,7 +1171,7 @@#
NumberField
— Method.
NumberField(f::Vector{PolyElem{<:NumFieldElem}}, s::String="_\$", check = true)
@@ -1184,7 +1184,7 @@ Creation of number fields
julia> K, a = NumberField([x^2 - 2, x^2 - 3], "a")
(Non-simple number field with defining polynomials fmpq_mpoly[x1^2 - 2, x2^2 - 3], NfAbsNSElem[a1, a2])
Tip
Many of the constructors have arguments of type Symbol
or AbstractString
. If used, they define the appearance in printing, and printing only. The named parameter check
can be true
or false
, the default being true
. This parameter controls whether the polynomials defining the number field are tested for irreducibility or not. Given that this can be potentially very time consuming if the degree if large, one can disable this test. Note however, that the behaviour of Hecke is undefined if a reducible polynomial is used to define a field.
julia> cyclotomic_field(10)
(Cyclotomic field of order 10, z_10)
#
quadratic_field
— Method.
quadratic_field(d::IntegerUnion) -> AnticNumberField, nf_elem
@@ -1210,7 +1210,7 @@ Creation of number fields
julia> quadratic_field(5)
(Real quadratic field defined by x^2 - 5, sqrt(5))
-
+
#
wildanger_field
— Method.
wildanger_field(n::Int, B::fmpz) -> AnticNumberField, nf_elem
@@ -1220,7 +1220,7 @@ Creation of number fields
julia> wildanger_field(3, ZZ(10), "a")
(Number field over Rational Field with defining polynomial x^3 - 10*x^2 + 10*x - 10, a)
-
+
#
radical_extension
— Method.
radical_extension(n::Int, a::NumFieldElem, s = "_$";
@@ -1231,7 +1231,7 @@ Creation of number fields
julia> radical_extension(5, QQ(2), "a")
(Number field over Rational Field with defining polynomial x^5 - 2, a)
-
+
#
rationals_as_number_field
— Method.
rationals_as_number_field() -> AnticNumberField, nf_elem
@@ -1241,7 +1241,7 @@ Creation of number fields
julia> rationals_as_number_field()
(Number field over Rational Field with defining polynomial x - 1, 1)
-
+
Basic properties
@@ -1260,7 +1260,7 @@ Basic properties
1
a
-
+
#
basis
— Method.
basis(L::NonSimpleNumField) -> Vector{NumFieldElem}
@@ -1278,43 +1278,43 @@ Basic properties
a2
a1*a2
-
+
#
absolute_basis
— Method.
absolute_basis(K::NumField) -> Vector{NumFieldElem}
Returns an array of elements that form a basis of (as a vector space) over the rationals.
-
+
#
defining_polynomial
— Method.
defining_polynomial(L::SimpleNumField) -> PolyElem
Given a simple number field , constructed as , this function returns .
-
+
#
defining_polynomials
— Method.
defining_polynomials(L::NonSimpleNumField) -> Vector{PolyElem}
Given a non-simple number field , constructed as , return the vector containing the 's.
-
+
#
absolute_primitive_element
— Method.
absolute_primitive_element(K::NumField) -> NumFieldElem
Given a number field , this function returns an element such that .
-
+
#
component
— Method.
component(L::NonSimpleNumField, i::Int) -> SimpleNumField, Map
Given a non-simple extension , this function returns the simple number field corresponding to the -th component of together with its embedding.
-
+
#
base_field
— Method.
base_field(L::NumField) -> NumField
Given a number field this function returns the base field . For absolute extensions this returns .
-
+
Invariants
@@ -1331,13 +1331,13 @@ Invariants
julia> degree(K)
2
-
+
#
absolute_degree
— Method.
absolute_degree(L::NumField) -> Int
Given a number field , this function returns the degree of over .
-
+
#
signature
— Method.
signature(K::NumField)
@@ -1351,43 +1351,43 @@ Invariants
julia> signature(K)
(2, 0)
-
+
#
unit_group_rank
— Method.
unit_group_rank(K::NumField) -> Int
Return the rank of the unit group of any order of .
-
+
#
class_number
— Method.
class_number(K::AnticNumberField) -> fmpz
Returns the class number of .
-
+
#
relative_class_number
— Method.
relative_class_number(K::AnticNumberField) -> fmpz
Returns the relative class number of . The field must be a CM-field.
-
+
#
regulator
— Method.
regulator(K::AnticNumberField)
Computes the regulator of , i.e. the discriminant of the unit lattice for the maximal order of .
-
+
#
discriminant
— Method.
discriminant(L::SimpleNumField) -> NumFieldElem
The discriminant of the defining polynomial of , not the discriminant of the maximal order of .
-
+
#
absolute_discriminant
— Method.
absolute_discriminant(L::SimpleNumField, QQ) -> fmpq
The absolute discriminant of the defining polynomial of , not the discriminant of the maximal order of . This is the norm of the discriminant times the -th power of the discriminant of the base field, where is the degree of .
-
+
Predicates
@@ -1396,73 +1396,73 @@ Predicates
issimple(L::NumField) -> Bool
Given a number field this function returns whether is simple, that is, whether is defined by a univariate polynomial.
-
+
#
isabsolute
— Method.
isabsolute(L::NumField) -> Bool
Returns whether is an absolute extension, that is, whether the base field of is .
-
+
#
istotally_real
— Method.
istotally_real(K::NumberField) -> Bool
Returns true if and only if is totally real, that is, if all roots of the defining polynomial are real.
-
+
#
istotally_complex
— Method.
istotally_complex(K::AnticNumberField) -> Bool
Returns true if and only if is totally complex, that is, if all roots of the defining polynomial are not real.
-
+
#
iscm_field
— Method.
iscm_field(K::AnticNumberField) -> Bool, NfToNfMor
Given a number field , this function returns true and the complex conjugation if the field is CM, false and the identity otherwise.
-
+
#
iskummer_extension
— Method.
iskummer_extension(L::SimpleNumField) -> Bool
Tests if is a Kummer extension, that is, if the defining polynomial is of the form for some and if contains the -th roots of unity.
-
+
#
isradical_extension
— Method.
isradical_extension(L::SimpleNumField) -> Bool
Tests if is pure, that is, if the defining polynomial is of the form for some .
-
+
#
islinearly_disjoint
— Method.
islinearly_disjoint(K::SimpleNumField, L::SimpleNumField) -> Bool
Given two number fields and with the same base field , this function returns whether and are linear disjoint over .
-
+
#
isweakly_ramified
— Method.
isweakly_ramified(K::AnticNumberField, P::NfOrdIdl) -> Bool
Given a prime ideal of a number field , return whether is weakly ramified, that is, whether the second ramification group is trivial.
-
+
#
istamely_ramified
— Method.
istamely_ramified(K::AnticNumberField) -> Bool
Returns whether the number field is tamely ramified.
-
+
#
istamely_ramified
— Method.
istamely_ramified(O::NfOrd, p::Union{Int, fmpz}) -> Bool
Returns whether the integer is tamely ramified in . It is assumed that is prime.
-
+
#
isabelian
— Method.
isabelian(L::NumField) -> Bool
Check if the number field is abelian over . The function is probabilistic and assumes GRH.
-
+
Subfields
@@ -1471,50 +1471,50 @@ Subfields
issubfield(K::SimpleNumField, L::SimpleNumField) -> Bool, Map
Returns true
and an injection from to if is a subfield of . Otherwise the function returns false
and a morphism mapping everything to .
-
+
#
subfields
— Method.
subfields(L::SimpleNumField) -> Vector{Tuple{NumField, Map}}
Given a simple extension , returns all subfields of containing as tuples consisting of a simple extension and an embedding .
-
+
#
principal_subfields
— Method.
principal_subfields(L::SimpleNumField) -> Vector{Tuple{NumField, Map}}
Return the principal subfields of as pairs consisting of a subfield and an embedding .
-
+
#
compositum
— Method.
compositum(K::AnticNumberField, L::AnticNumberField) -> AnticNumberField, Map, Map
Assuming is normal (which is not checked), compute the compositum of the 2 fields together with the embedding of and .
-
+
#
embedding
— Method.
embedding(k::NumField, K::NumField) -> Map
Assuming is known to be a subfield of , return the embedding map.
-
+
#
normal_closure
— Method.
normal_closure(K::AnticNumberField) -> AnticNumberField, NfToNfMor
The normal closure of together with the embedding map.
-
+
#
relative_simple_extension
— Method.
relative_simple_extension(K::NumField, k::NumField) -> NfRel
Given two fields , it returns as a simple relative extension of and an isomorphism .
-
+
#
issubfield_normal
— Method.
issubfield_normal(K::AnticNumberField, L::AnticNumberField) -> Bool, NfToNfMor
Returns true
and an injection from to if is a subfield of . Otherwise the function returns "false" and a morphism mapping everything to 0.
This function assumes that is normal.
-
+
Conversion
@@ -1525,25 +1525,25 @@ Conversion
Tries to find an isomorphic field given by a "simpler" defining polynomial. By default, "simple" is defined to be of smaller index, testing is done only using a LLL-basis of the maximal order.
If canonical
is set to true
, then a canonical defining polynomial is found, where canonical is using the definition of PARI's polredabs
, which is described in http://beta.lmfdb.org/knowledge/show/nf.polredabs.
Both versions require a LLL reduced basis for the maximal order.
-
+
#
absolute_simple_field
— Method.
absolute_simple_field(K::NumField) -> NumField, Map
Given a number field , this function returns an absolute simple number field together with a -linear isomorphism .
-
+
#
simple_extension
— Method.
simple_extension(L::NonSimpleNumField) -> SimpleNumField, Map
Given a non-simple extension , this function computes a simple extension and a -linear isomorphism .
-
+
#
simplified_simple_extension
— Method.
simplified_simple_extension(L::NonSimpleNumField) -> SimpleNumField, Map
Given a non-simple extension , this function returns an isomorphic simple number field with a "small" defining equation together with the isomorphism.
-
+
Morphisms
@@ -1552,13 +1552,13 @@ Morphisms
isisomorphic(K::SimpleNumField, L::SimpleNumField) -> Bool, Map
Returns true
and an isomorphism from to if and are isomorphic. Otherwise the function returns false
and a morphism mapping everything to .
-
+
#
isinvolution
— Method.
isinvolution(f::NfToNfMor) -> Bool
Returns true if is an involution, i.e. if is the identity, false otherwise.
-
+
#
fixed_field
— Method.
fixed_field(K::SimpleNumField,
@@ -1567,25 +1567,25 @@ Morphisms
Given a number field and an automorphism of , this function returns the fixed field of as a pair consisting of a number field and an embedding of into .
By default, the function tries to find a small defining polynomial of . This can be disabled by setting simplify = false
.
-
+
#
automorphisms
— Method.
automorphisms(L::NumField) -> Vector{NumFieldMor}
Given a number field , return a list of all -automorphisms of .
-
+
#
automorphism_group
— Method.
automorphism_group(K::NumField) -> GenGrp, GrpGenToNfMorSet
Given a number field , this function returns a group and a map from to the automorphisms of .
-
+
#
complex_conjugation
— Method.
complex_conjugation(K::AnticNumberField)
Given a totally complex normal number field, this function returns an automorphism which is the restriction of complex conjugation at one embedding.
-
+
Galois theory
@@ -1594,26 +1594,26 @@ Galois theory
normal_basis(L::NumField) -> NumFieldElem
Given a normal number field , this function returns an element of , such that the orbit of under the Galois group of is an -basis of .
-
+
#
decomposition_group
— Method.
decomposition_group(K::AnticNumberField, P::NfOrdIdl, m::Map)
-> Grp, GrpToGrp
Given a prime ideal of a number field and a map m
return from automorphism_group(K)
, return the decompositon group of as a subgroup of the domain of m
.
-
+
#
ramification_group
— Method.
ramification_group(K::AnticNumberField, P::NfOrdIdl, m::Map) -> Grp, GrpToGrp
Given a prime ideal of a number field and a map m
return from automorphism_group(K)
, return the ramification group of as a subgroup of the domain of m
.
-
+
#
inertia_subgroup
— Method.
inertia_subgroup(K::AnticNumberField, P::NfOrdIdl, m::Map) -> Grp, GrpToGrp
Given a prime ideal of a number field and a map m
return from automorphism_group(K)
, return the intertia subgroup of as a subgroup of the domain of m
.
-
+
Infinite places
@@ -1636,37 +1636,37 @@ Infinite places
Number field over Rational Field with defining polynomial x^2 - 2
corresponding to the root [1.414213562373095049 +/- 3.90e-19]
-
+
#
real_places
— Method.
real_places(K::AnticNumberField) -> Vector{InfPlc}
This function returns all infinite real places of .
-
+
#
complex_places
— Method.
complex_places(K::AnticNumberField) -> Vector{InfPlc}
This function returns all infinite complex places of .
-
+
#
isreal
— Method.
isreal(P::Plc)
Return whether the embedding into defined by is real or not.
-
+
#
iscomplex
— Method.
iscomplex(P::Plc) -> Bool
Return whether the embedding into defined by is complex or not.
-
+
#
infinite_places_uniformizers
— Method.
infinite_places_uniformizers(K::AnticNumberField)
Returns a dictionary having as keys the real places of and the values are uniformizers for the corresponding real place. A uniformizer of a real place is an element of the field which is negative at and positive at all the other real places.
-
+
Miscellaneous
@@ -1675,25 +1675,25 @@ Miscellaneous
norm_equation(K::AnticNumerField, a) -> nf_elem
For an integer or rational, try to find s.th. . Raises an error if unsuccessful.
-
+
#
lorenz_module
— Method.
lorenz_module(k::AnticNumberField, n::Int) -> NfOrdIdl
Finds an ideal s.th. for all positive units we have that is an -th power. Uses Lorenz, number theory, 9.3.1. If containing
is set, it has to be an integral ideal. The resulting ideal will be a multiple of this.
-
+
#
kummer_failure
— Method.
kummer_failure(x::nf_elem, M::Int, N::Int) -> Int
Computes the quotient of and , where is the field containing and divides .
-
+
#
isdefining_polynomial_nice
— Method.
isdefining_polynomial_nice(K::AnticNumberField)
Tests if the defining polynomial of is integral and monic.
-
+
diff --git a/dev/orders/elements/index.html b/dev/orders/elements/index.html
index 2f96afff63..8909a01d9e 100644
--- a/dev/orders/elements/index.html
+++ b/dev/orders/elements/index.html
@@ -1064,11 +1064,11 @@ Creation
(O::NumFieldOrd)(a::IntegerUnion) -> NumFieldOrdElem
Given an element of type fmpz
or Integer
, this function coerces the element into .
-
+
(O::NfAbsOrd)(arr::Vector{fmpz})
Returns the element of with coefficient vector arr
.
-
+
Basic properties
@@ -1077,39 +1077,39 @@ Basic properties
parent(a::NumFieldOrdElem) -> NumFieldOrd
Returns the order of which is an element.
-
+
#
elem_in_nf
— Method.
elem_in_nf(a::NumFieldOrdElem) -> NumFieldElem
Returns the element considered as an element of the ambient number field.
-
+
#
coordinates
— Method.
coordinates(a::NfAbsOrdElem) -> Vector{fmpz}
Returns the coefficient vector of with respect to the basis of the order.
-
+
#
discriminant
— Method.
discriminant(B::Vector{NumFieldOrdElem})
Returns the discriminant of the family of algebraic numbers, i.e. .
-
+
discriminant(E::EllCrv{T}) -> T
Computes the discriminant of .
-
+
discriminant(O::AlgssRelOrd)
Returns the discriminant of .
-
+
#
==
— Method.
==(x::NumFieldOrdElem, y::NumFieldOrdElem) -> Bool
Returns whether and are equal.
-
+
Arithmetic
@@ -1132,108 +1132,108 @@ Miscellaneous
representation_matrix(a::NfAbsOrdElem) -> fmpz_mat
Returns the representation matrix of the element .
-
+
#
representation_matrix
— Method.
representation_matrix(a::NfAbsOrdElem, K::AnticNumberField) -> FakeFmpqMat
Returns the representation matrix of the element considered as an element of the ambient number field . It is assumed that is the ambient number field of the order of .
-
+
#
tr
— Method.
tr(a::NumFieldOrdElem)
Returns the trace of as an element of the base ring.
-
+
#
norm
— Method.
norm(a::NumFieldOrdElem)
Returns the norm of as an element in the base ring.
-
+
#
absolute_norm
— Method.
absolute_norm(a::NumFieldOrdElem) -> fmpz
Return the absolute norm as an integer.
-
+
#
absolute_tr
— Method.
absolute_tr(a::NumFieldOrdElem) -> fmpz
Return the absolute trace as an integer.
-
+
#
rand
— Method.
rand(O::NfOrd, n::IntegerUnion) -> NfAbsOrdElem
Computes a coefficient vector with entries uniformly distributed in and returns the corresponding element of the order .
-
+
#
minkowski_map
— Method.
minkowski_map(a::NumFieldOrdElem, abs_tol::Int) -> Vector{arb}
Returns the image of under the Minkowski embedding. Every entry of the array returned is of type arb
with radius less then 2^-abs_tol
.
-
+
#
conjugates_arb
— Method.
conjugates_arb(x::NumFieldOrdElem, abs_tol::Int) -> Vector{acb}
Compute the conjugates of as elements of type acb
. Recall that we order the complex conjugates such that for .
Every entry of the array returned satisfies radius(real(y)) < 2^-abs_tol
, radius(imag(y)) < 2^-abs_tol
respectively.
-
+
#
conjugates_arb_log
— Method.
conjugates_arb_log(x::NumFieldOrdElem, abs_tol::Int) -> Vector{arb}
Returns the elements as elements of type arb
radius less then 2^-abs_tol
.
-
+
#
t2
— Method.
t2(x::NumFieldOrdElem, abs_tol::Int = 32) -> arb
Return the -norm of . The radius of the result will be less than 2^-abs_tol
.
-
+
#
minpoly
— Method.
minpoly(a::NfAbsOrdElem) -> fmpz_poly
The minimal polynomial of .
-
+
#
charpoly
— Method.
charpoly(a::NfAbsOrdElem) -> fmpz_poly
charpoly(a::NfAbsOrdElem, FlintZZ) -> fmpz_poly
The characteristic polynomial of .
-
+
#
factor
— Method.
factor(a::NfOrdElem) -> Fac{NfOrdElem}
Computes a factorization of into irreducible elements. The return value is a factorization fac
, which satisfies a = unit(fac) * prod(p^e for (p, e) in fac)
.
The function requires that is non-zero and that all prime ideals containing are principal, which is for example satisfied if class group of the order of is trivial.
-
+
#
denominator
— Method.
denominator(a::NumFieldElem, O::NfOrd) -> fmpz
Returns the smallest positive integer such that is contained in .
-
+
#
discriminant
— Method.
discriminant(B::Vector{NumFieldOrdElem})
Returns the discriminant of the family of algebraic numbers, i.e. .
-
+
discriminant(E::EllCrv{T}) -> T
Computes the discriminant of .
-
+
discriminant(O::AlgssRelOrd)
Returns the discriminant of .
-
+
diff --git a/dev/orders/frac_ideals/index.html b/dev/orders/frac_ideals/index.html
index 3b50f72126..c882e9e424 100644
--- a/dev/orders/frac_ideals/index.html
+++ b/dev/orders/frac_ideals/index.html
@@ -1050,53 +1050,53 @@ Creation
fractional_ideal(O::NfAbsOrd, A::fmpz_mat, b::fmpz, A_in_hnf::Bool = false) -> NfAbsOrdFracIdl
Creates the fractional ideal of with basis matrix . If A_in_hnf
is set, then it is assumed that is already in lower left HNF.
-
+
#
fractional_ideal
— Method.
fractional_ideal(O::NfAbsOrd, A::fmpz_mat, b::fmpz, A_in_hnf::Bool = false) -> NfAbsOrdFracIdl
Creates the fractional ideal of with basis matrix . If A_in_hnf
is set, then it is assumed that is already in lower left HNF.
-
+
#
fractional_ideal
— Method.
fractional_ideal(O::NfAbsOrd, A::FakeFmpqMat, A_in_hnf::Bool = false) -> NfAbsOrdFracIdl
Creates the fractional ideal of with basis matrix . If A_in_hnf
is set, then it is assumed that the numerator of is already in lower left HNF.
-
+
#
fractional_ideal
— Method.
fractional_ideal(O::NfOrd, I::NfAbsOrdIdl) -> NfOrdFracIdl
The fractional ideal of generated by a -basis of .
-
+
fractional_ideal(O::NfAbsOrd, I::NfAbsOrdIdl) -> NfAbsOrdFracIdl
Turns the ideal into a fractional ideal of .
-
+
#
fractional_ideal
— Method.
fractional_ideal(O::NfAbsOrd, I::NfAbsOrdIdl, b::fmpz) -> NfAbsOrdFracIdl
Creates the fractional ideal of .
-
+
#
fractional_ideal
— Method.
fractional_ideal(O::NfAbsOrd, a::nf_elem) -> NfAbsOrdFracIdl
Creates the principal fractional ideal of .
-
+
#
fractional_ideal
— Method.
fractional_ideal(O::NfAbsOrd, a::NfAbsOrdElem) -> NfAbsOrdFracIdl
Creates the principal fractional ideal of .
-
+
#
inv
— Method.
inv(A::NfAbsOrdIdl) -> NfOrdFracIdl
Computes the inverse of , that is, the fractional ideal such that .
-
+
Arithmetic
@@ -1106,26 +1106,26 @@ Arithmetic
inv(A::NfAbsOrdFracIdl) -> NfAbsOrdFracIdl
Returns the fractional ideal such that .
-
+
#
integral_split
— Method.
integral_split(A::NfAbsOrdFracIdl) -> NfAbsOrdIdl, NfAbsOrdIdl
Computes the unique coprime integral ideals and s.th.
-
+
#
numerator
— Method.
numerator(a::NfRelOrdFracIdl) -> NfRelOrdIdl
Returns the ideal where is the denominator of .
-
+
#
denominator
— Method.
denominator(a::NfRelOrdFracIdl) -> fmpz
Returns the smallest positive integer such that is contained in the order of .
-
+
Miscaellenous
@@ -1134,56 +1134,56 @@ Miscaellenous
order(a::NfAbsOrdFracIdl) -> NfAbsOrd
The order that was used to define the ideal .
-
+
#
basis_matrix
— Method.
basis_matrix(I::NfAbsOrdFracIdl) -> FakeFmpqMat
Returns the basis matrix of with respect to the basis of the order.
-
+
#
basis_mat_inv
— Method.
basis_mat_inv(O::NfAbsOrd) -> FakeFmpqMat
Returns the inverse of the basis matrix of .
-
+
basis_mat_inv(A::NfAbsOrdIdl) -> fmpz_mat
Returns the inverse basis matrix of .
-
+
basis_mat_inv(I::NfAbsOrdFracIdl) -> FakeFmpqMat
Returns the inverse of the basis matrix of .
-
+
#
basis
— Method.
basis(I::NfAbsOrdFracIdl) -> Vector{nf_elem}
Returns the -basis of .
-
+
#
norm
— Method.
norm(I::NfAbsOrdFracIdl) -> fmpq
Returns the norm of .
-
+
norm(a::NfRelOrdIdl) -> NfOrdIdl
Returns the norm of .
-
+
norm(a::NfRelOrdFracIdl{T, S}) -> S
Returns the norm of .
-
+
norm(a::AlgAssAbsOrdIdl, O::AlgAssAbsOrd; copy::Bool = true) -> fmpq
Returns the norm of considered as an (possibly fractional) ideal of .
-
+
norm(a::AlgAssRelOrdIdl{S, T, U}, O::AlgAssRelOrd{S, T, U}; copy::Bool = true)
where { S, T, U } -> T
Returns the norm of considered as an (possibly fractional) ideal of .
-
+
diff --git a/dev/orders/ideals/index.html b/dev/orders/ideals/index.html
index 62b0813139..e848d13e82 100644
--- a/dev/orders/ideals/index.html
+++ b/dev/orders/ideals/index.html
@@ -1082,72 +1082,72 @@ Creation
ideal(O::NfOrd, a::Integer) -> NfAbsOrdIdl
Returns the ideal of which is generated by .
- +#
ideal
— Method.
ideal(O::NfOrd, x::fmpz_mat, check::Bool = false, x_in_hnf::Bool = false) -> NfAbsOrdIdl
Creates the ideal of with basis matrix . If check
is set, then it is checked whether defines an ideal (expensive). If x_in_hnf
is set, then it is assumed that is already in lower left HNF.
#
ideal
— Method.
ideal(O::NfOrd, x::NfOrdElem) -> NfAbsOrdIdl
Creates the principal ideal of .
- +#
ideal
— Method.
ideal(O::NfOrd, x::fmpz, y::NfOrdElem) -> NfAbsOrdIdl
ideal(O::NfOrd, x::Integer, y::NfOrdElem) -> NfAbsOrdIdl
Creates the ideal of .
- +#
ideal
— Method.
ideal(O::NfOrd, x::fmpz, y::NfOrdElem) -> NfAbsOrdIdl
ideal(O::NfOrd, x::Integer, y::NfOrdElem) -> NfAbsOrdIdl
Creates the ideal of .
- +#
ideal
— Method.
ideal(O::NfOrd, a::fmpz) -> NfAbsOrdIdl
ideal(O::NfOrd, a::Integer) -> NfAbsOrdIdl
Returns the ideal of which is generated by .
- +#
ideal
— Method.
ideal(O::NfOrd, x::NfOrdElem) -> NfAbsOrdIdl
Creates the principal ideal of .
- +#
*
— Method.
*(O::NfOrd, x::NfOrdElem) -> NfAbsOrdIdl
*(x::NfAbsOrdElem, O::NfAbsOrd) -> NfAbsOrdIdl
Returns the principal ideal of .
- +#
factor
— Method.
factor(A::NfOrdIdl) -> Dict{NfOrdIdl, Int}
Computes the prime ideal factorization as a dictionary, the keys being the prime ideal divisors: If lp = factor_dict(A)
, then keys(lp)
are the prime ideal divisors of and lp[P]
is the -adic valuation of for all in keys(lp)
.
#
factor
— Method.
factor(a::nf_elem, I::NfOrdIdlSet) -> Dict{NfOrdIdl, fmpz}
Factors the principal ideal generated by .
- +#
coprime_base
— Method.
coprime_base(A::Vector{NfOrdIdl}) -> Vector{NfOrdIdl}
coprime_base(A::Vector{NfOrdElem}) -> Vector{NfOrdIdl}
A coprime base for the (principal) ideals in , i.e. the returned array generated multiplicatively the same ideals as the input and are pairwise coprime.
- +intersect(x::NfOrdIdl, y::NfOrdIdl) -> NfOrdIdl
Returns .
- +#
colon
— Method.
colon(a::NfAbsOrdIdl, b::NfAbsOrdIdl) -> NfOrdFracIdl
The ideal where is the number field.
- +#
in
— Method.
in(x::NumFieldOrdElem, y::NumFieldOrdIdl)
@@ -1177,34 +1177,34 @@ Arithmetic
in(x::fmpz, y::NumFieldOrdIdl)
Returns whether is contained in .
- +#
ispower
— Method.
ispower(A::NfAbsOrdIdl, n::Int) -> Bool, NfAbsOrdIdl
ispower(A::NfOrdFracIdl, n::Int) -> Bool, NfOrdFracIdl
Computes, if possible, an ideal s.th. holds. In this case, true
and are returned.
#
ispower
— Method.
ispower(I::NfAbsOrdIdl) -> Int, NfAbsOrdIdl
ispower(a::NfOrdFracIdl) -> Int, NfOrdFracIdl
Writes with maximal. Note: .
- +#
isinvertible
— Method.
isinvertible(A::NfAbsOrdIdl) -> Bool, NfOrdFracIdl
Returns true
and an inverse of or false
and an ideal such that , if is not invertible.
#
isone
— Method.
isone(A::NfAbsOrdIdl) -> Bool
isunit(A::NfAbsOrdIdl) -> Bool
Tests if is the trivial ideal generated by .
- +class_group(O::NfOrd; bound = -1, method = 3, redo = false, large = 1000) -> GrpAbFinGen, Map
Returns a group and a map from to the set of ideals of . The inverse of the map is the projection onto the group of ideals modulo the group of principal ideals. redo
allows to trigger a re-computation, thus avoiding the cache. bound
, when given, is the bound for the factor base.
#
narrow_class_group
— Method.
narrow_class_group(O::NfOrd) -> GrpAbFinGen, Map
Computes the narrow (or strict) class group of , ie. the group of invertable ideals modulo principal ideals generated by elements that are positive at all real places.
- +#
picard_group
— Method.
picard_group(O::NfOrd) -> GrpAbFinGen, MapClassGrp
Returns the Picard group of and a map from the group in the set of (invertible) ideals of .
- +#
ring_class_group
— Method.
ring_class_group(O::NfAbsOrd)
The ring class group (Picard group) of .
- +julia> k, a = wildanger_field(3, 13);
julia> zk = maximal_order(k);
@@ -1249,10 +1249,10 @@ Class Group
10-element Vector{GrpAbFinGenElem}:
Element of
GrpAb: Z/9
-with components [7]
+with components [1]
Element of
GrpAb: Z/9
-with components [1]
+with components [7]
Element of
GrpAb: Z/9
with components [1]
@@ -1279,7 +1279,7 @@ Class Group
with components [5]
julia> mc(c[1])
-<2, 3//2*_$^2 + 2*_$ + 7//2>
+<2, 3//2*_$^2 + 2*_$ + 3//2>
Norm: 2
Minimum: 2
two normal wrt: 2
@@ -1288,7 +1288,7 @@ Class Group
9
julia> mc(c[1])^Int(order(c[1]))
-<512, 45616403435015994675//2*_$^2 - 22636933952473144831*_$ + 49386866379765370909//2>
+<512, 42356734006825450665//2*_$^2 - 21019337737156744045*_$ + 45857766179621516487//2>
Norm: 512
two normal wrt: 2
@@ -1304,50 +1304,50 @@ Class Group
isprincipal(A::NfOrdFracIdl) -> Bool, NfOrdElem
Tests if is principal and returns if or otherwise.
- +#
isprincipal_fac_elem
— Method.
isprincipal_fac_elem(A::NfOrdIdl) -> Bool, FacElem{nf_elem, NumberField}
Tests if is principal and returns if or otherwise. The generator will be in factored form.
- +#
power_class
— Method.
power_class(A::NfOrdIdl, e::fmpz) -> NfOrdIdl
Computes a (small) ideal in the same class as .
- +#
power_product_class
— Method.
power_product_class(A::Vector{NfOrdIdl}, e::Vector{fmpz}) -> NfOrdIdl
Computes a (small) ideal in the same class as .
- +#
power_reduce
— Method.
power_reduce(A::NfOrdIdl, e::fmpz) -> NfOrdIdl, FacElem{nf_elem}
Computes and in factored form, such that has small norm.
- +#
class_group_ideal_relation
— Method.
class_group_ideal_relation(I::NfOrdIdl, c::ClassGrpCtx) -> nf_elem, SRow{fmpz}
Finds a number field element such that factors over the factor base in .
- +#
factor_base_bound_grh
— Method.
factor_base_bound_grh(O::NfOrd) -> Int
Returns an integer , such that under GRH the ideal class group of is generated by the prime ideals of norm bounded by .
- +#
factor_base_bound_bach
— Method.
factor_base_bound_bach(O::NfOrd) -> Int
Use the theorem of Bach to find such that under GRH the ideal class group of is generated by the prime ideals of norm bounded by .
- +#
prime_ideals_up_to
— Function.
prime_ideals_up_to(O::NfOrd,
@@ -1356,7 +1356,7 @@ Class Group
Computes the prime ideals with norm up to .
If degree_limit
is a nonzero integer , then prime ideals with will be discarded. If 'index_divisors' is set to false, only primes not dividing the index of the order will be computed.
prime_ideals_up_to(O::NfOrd,
B::Int;
complete::Bool = false,
@@ -1367,9 +1367,9 @@ Class Group
Computes the prime ideals with norm up to .
If degree_limit
is a nonzero integer , then prime ideals with will be discarded.
The function must be a function on prime numbers not dividing bad
such that for all prime ideals lying above .
-
+
julia> I = mc(c[1])
-<2, 3//2*_$^2 + 2*_$ + 7//2>
+<2, 3//2*_$^2 + 2*_$ + 3//2>
Norm: 2
Minimum: 2
two normal wrt: 2
@@ -1378,16 +1378,16 @@ Class Group
(false, 1)
julia> I = I^Int(order(c[1]))
-<512, 45616403435015994675//2*_$^2 - 22636933952473144831*_$ + 49386866379765370909//2>
+<512, 42356734006825450665//2*_$^2 - 21019337737156744045*_$ + 45857766179621516487//2>
Norm: 512
two normal wrt: 2
julia> Hecke.isprincipal(I)
-(true, 1//2*_$^2 - 5*_$ - 17//2)
+(true, -1//2*_$^2 + 5*_$ + 17//2)
julia> Hecke.isprincipal_fac_elem(I)
(true, Factored element with data
-Dict{nf_elem, fmpz}(1//2*_$^2 - 5*_$ - 17//2 => 1))
+Dict{nf_elem, fmpz}(-1//2*_$^2 + 5*_$ + 17//2 => 1))
The computation of -units is also tied to the class group:
#
@@ -1395,62 +1395,62 @@
Class Group
torsion_units(O::NfOrd) -> Vector{NfOrdElem}
Given an order , compute the torsion units of .
-
+
#
torsion_unit_group
— Method.
torsion_unit_group(O::NfOrd) -> GrpAb, Map
Given an order , returns the torsion units as an abelian group together with a map .
-
+
#
torsion_units_generator
— Method.
torsion_units_generator(O::NfOrd) -> NfOrdElem
Given an order , compute a generator of the torsion units of .
-
+
#
torsion_units_gen_order
— Method.
torsion_units_gen_order(O::NfOrd) -> NfOrdElem
Given an order , compute a generator of the torsion units of as well as its order.
-
+
#
unit_group
— Method.
unit_group(O::NfOrd) -> GrpAbFinGen, Map
Returns a group and an isomorphism map . A set of fundamental units of can be obtained via [ f(U[1+i]) for i in 1:unit_group_rank(O) ]
. f(U[1])
will give a generator for the torsion subgroup.
-
+
#
unit_group_fac_elem
— Method.
unit_group_fac_elem(O::NfOrd) -> GrpAbFinGen, Map
Returns a group and an isomorphism map . A set of fundamental units of can be obtained via [ f(U[1+i]) for i in 1:unit_group_rank(O) ]
. f(U[1])
will give a generator for the torsion subgroup. All elements will be returned in factored form.
-
+
#
sunit_group
— Method.
sunit_group(I::Vector{NfOrdIdl}) -> GrpAb, Map
For an array of (coprime prime) ideals, find the -unit group defined by , ie. the group of non-zero field elements which are only divisible by ideals in .
-
+
#
sunit_group_fac_elem
— Method.
sunit_group_fac_elem(I::Vector{NfOrdIdl}) -> GrpAb, Map
For an array of (coprime prime) ideals, find the -unit group defined by , ie. the group of non-zero field elements which are only divisible by ideals in . The map will return elements in factored form.
-
+
#
sunit_mod_units_group_fac_elem
— Method.
sunit_mod_units_group_fac_elem(I::Vector{NfOrdIdl}) -> GrpAb, Map
For an array of (coprime prime) ideals, find the -unit group defined by , ie. the group of non-zero field elements which are only divisible by ideals in modulo the units of the field. The map will return elements in factored form.
-
+
julia> u, mu = unit_group(zk)
(GrpAb: Z/2 x Z, UnitGroup map of Maximal order of Number field over Rational Field with defining polynomial x^3 - 13*x^2 + 13*x - 13
with basis nf_elem[1, _$, 1//2*_$^2 + 1//2]
)
julia> mu(u[2])
--_$ + 12
+-_$^2 + _$ - 1
julia> u, mu = unit_group_fac_elem(zk)
(GrpAb: Z/2 x Z, UnitGroup map of Factored elements over Number field over Rational Field with defining polynomial x^3 - 13*x^2 + 13*x - 13
@@ -1458,17 +1458,17 @@ Class Group
julia> mu(u[2])
Factored element with data
-Dict{nf_elem, fmpz}(_$ - 15 => 1, _$ + 2 => 1, -5*_$^2 + 54*_$ - 73 => -1, 3 => -1, -6*_$^2 + 57*_$ + 141 => 1, 7//2*_$^2 + 5//2 => -1)
+Dict{nf_elem, fmpz}(_$^2 + 1 => 1, 14*_$^2 - 164*_$ + 12 => -1, _$ + 1 => 1, 3 => -1, _$ - 4 => 1, 11 => 1, 4*_$^2 - 43*_$ - 102 => 1, 2 => -1, 15//2*_$^2 - 74*_$ - 103//2 => -1)
julia> evaluate(ans)
--_$ + 12
+-_$^2 + _$ - 1
julia> lp = factor(6*zk)
Dict{NfOrdIdl, Int64} with 4 entries:
- <3, _$ - 1> => 1
- <3, _$^2 + 1> => 1
- <2, 7//2*_$^2 + 2*_$ + 7//2> => 2
- <2, 5//2*_$^2 + 2*_$ + 3//2> => 1
+ <3, _$ - 1> => 1
+ <3, _$^2 + 1> => 1
+ <2, 3//2*_$^2 + 3//2> => 2
+ <2, 1//2*_$^2 + 3//2> => 1
julia> s, ms = Hecke.sunit_group(collect(keys(lp)))
(GrpAb: Z/2 x Z^(5), SUnits map of Number field over Rational Field with defining polynomial x^3 - 13*x^2 + 13*x - 13 for NfOrdIdl[<3, _$ - 1>
@@ -1481,12 +1481,12 @@ Class Group
Minimum: 3
basis_matrix
[3 0 0; 0 3 0; 0 0 1]
-two normal wrt: 3, <2, 7//2*_$^2 + 2*_$ + 7//2>
+two normal wrt: 3, <2, 3//2*_$^2 + 3//2>
Norm: 2
Minimum: 2
basis_matrix
[2 0 0; 1 1 0; 0 0 1]
-two normal wrt: 2, <2, 5//2*_$^2 + 2*_$ + 3//2>
+two normal wrt: 2, <2, 1//2*_$^2 + 3//2>
Norm: 2
Minimum: 2
basis_matrix
@@ -1511,219 +1511,219 @@ Miscaellenous
order(I::NumFieldOrdIdl) -> NfOrd
Returns the order of .
-
+
#
order
— Method.
order(a::NfAbsOrdFracIdl) -> NfAbsOrd
The order that was used to define the ideal .
-
+
#
order
— Method.
order(I::NumFieldOrdIdl) -> NfOrd
Returns the order of .
-
+
#
order
— Method.
order(a::NfRelOrdFracIdl) -> NfRelOrd
Returns the order of .
-
+
#
nf
— Method.
nf(x::NumFieldOrdIdl) -> AnticNumberField
Returns the number field, of which is an integral ideal.
-
+
#
basis
— Method.
basis(A::NfAbsOrdIdl) -> Vector{NfOrdElem}
Returns the basis of .
-
+
basis(I::NfAbsOrdFracIdl) -> Vector{nf_elem}
Returns the -basis of .
-
+
#
lll_basis
— Method.
lll_basis(I::NumFieldOrdIdl) -> Vector{NumFieldElem}
A basis for that is reduced using the LLL algorithm for the Minkowski metric.
-
+
#
basis_matrix
— Method.
basis_matrix(A::NfAbsOrdIdl) -> fmpz_mat
Returns the basis matrix of .
-
+
#
basis_mat_inv
— Method.
basis_mat_inv(O::NfAbsOrd) -> FakeFmpqMat
Returns the inverse of the basis matrix of .
-
+
basis_mat_inv(A::NfAbsOrdIdl) -> fmpz_mat
Returns the inverse basis matrix of .
-
+
#
assure_has_basis_mat_inv
— Method.
basis_mat_inv(A::NfAbsOrdIdl) -> FakeFmpqMat
Returns the inverse of the basis matrix of .
-
+
#
has_basis
— Method.
has_basis(A::NfAbsOrdIdl) -> Bool
Returns whether has a basis already computed.
-
+
#
has_basis_matrix
— Method.
has_basis_matrix(A::NfAbsOrdIdl) -> Bool
Returns whether knows its basis matrix.
-
+
#
has_2_elem
— Method.
has_2_elem(A::NfAbsOrdIdl) -> Bool
Returns whether is generated by two elements.
-
+
#
has_2_elem_normal
— Method.
has_2_elem_normal(A::NfAbsOrdIdl) -> Bool
Returns whether has normal two element generators.
-
+
#
has_weakly_normal
— Method.
has_weakly_normal(A::NfAbsOrdIdl) -> Bool
Returns whether has weakly normal two element generators.
-
+
#
has_princ_gen_special
— Method.
has_princ_gen_special(A::NfAbsOrdIdl) -> Bool
Returns whether knows if it is generated by a rational integer.
-
+
#
principal_generator
— Method.
principal_generator(A::NfOrdIdl) -> NfOrdElem
For a principal ideal , find a generator.
-
+
#
principal_generator_fac_elem
— Method.
principal_generator_fac_elem(A::NfOrdIdl) -> FacElem{nf_elem, NumberField}
For a principal ideal , find a generator in factored form.
-
+
#
minimum
— Method.
minimum(A::NfAbsOrdIdl) -> fmpz
Returns the smallest nonnegative element in .
-
+
minimum(A::NfRelOrdIdl) -> NfOrdIdl
minimum(A::NfRelOrdIdl) -> NfRelOrdIdl
Returns the ideal where is the maximal order of the coefficient ideals of .
-
+
#
minimum
— Method.
minimum(A::NfRelOrdIdl) -> NfOrdIdl
minimum(A::NfRelOrdIdl) -> NfRelOrdIdl
Returns the ideal where is the maximal order of the coefficient ideals of .
-
+
#
minimum
— Method.
minimum(A::NfAbsOrdIdl) -> fmpz
Returns the smallest nonnegative element in .
-
+
#
has_minimum
— Method.
has_minimum(A::NfAbsOrdIdl) -> Bool
Returns whether knows its mininum.
-
+
#
norm
— Method.
norm(A::NfAbsOrdIdl) -> fmpz
Returns the norm of , that is, the cardinality of , where is the order of .
-
+
norm(a::NfRelOrdIdl) -> NfOrdIdl
Returns the norm of .
-
+
norm(a::NfRelOrdFracIdl{T, S}) -> S
Returns the norm of .
-
+
norm(a::AlgAssAbsOrdIdl, O::AlgAssAbsOrd; copy::Bool = true) -> fmpq
Returns the norm of considered as an (possibly fractional) ideal of .
-
+
norm(a::AlgAssRelOrdIdl{S, T, U}, O::AlgAssRelOrd{S, T, U}; copy::Bool = true)
where { S, T, U } -> T
Returns the norm of considered as an (possibly fractional) ideal of .
-
+
#
has_norm
— Method.
has_norm(A::NfAbsOrdIdl) -> Bool
Returns whether knows its norm.
-
+
#
idempotents
— Method.
idempotents(x::NfOrdIdl, y::NfOrdIdl) -> NfOrdElem, NfOrdElem
Returns a tuple (e, f)
consisting of elements e in x
, f in y
such that 1 = e + f
.
If the ideals are not coprime, an error is raised.
-
+
#
isprime
— Method.
isprime(A::NfOrdIdl) -> Bool
Returns whether is a prime ideal.
-
+
#
isprime_known
— Method.
isprime_known(A::NfOrdIdl) -> Bool
Returns whether knows if it is prime.
-
+
#
isramified
— Method.
isramified(O::NfOrd, p::Int) -> Bool
Returns whether the integer is ramified in . It is assumed that is prime.
-
+
#
ramification_index
— Method.
ramification_index(P::NfOrdIdl) -> Int
The ramification index of the prime-ideal .
-
+
#
degree
— Method.
degree(P::NfOrdIdl) -> Int
The inertia degree of the prime-ideal .
-
+
#
valuation
— Method.
valuation(a::NumFieldElem, p::NfOrdIdl) -> fmpz
Computes the -adic valuation of , that is, the largest such that is contained in .
-
+
#
valuation
— Method.
valuation(a::nf_elem, p::NfOrdIdl) -> fmpz
@@ -1731,19 +1731,19 @@ Miscaellenous
valuation(a::fmpz, p::NfOrdIdl) -> fmpz
Computes the -adic valuation of , that is, the largest such that is contained in .
-
+
#
valuation
— Method.
valuation(A::NfOrdIdl, p::NfOrdIdl) -> fmpz
Computes the -adic valuation of , that is, the largest such that is contained in .
-
+
#
valuation
— Method.
valuation(a::Integer, p::NfOrdIdl) -> fmpz
Computes the -adic valuation of , that is, the largest such that is contained in .
-
+
#
valuation
— Method.
valuation(a::nf_elem, p::NfOrdIdl) -> fmpz
@@ -1751,20 +1751,20 @@ Miscaellenous
valuation(a::fmpz, p::NfOrdIdl) -> fmpz
Computes the -adic valuation of , that is, the largest such that is contained in .
-
+
#
valuation
— Method.
valuation(A::NfAbsOrdFracIdl, p::NfAbsOrdIdl)
The valuation of at .
-
+
#
idempotents
— Method.
idempotents(x::NfOrdIdl, y::NfOrdIdl) -> NfOrdElem, NfOrdElem
Returns a tuple (e, f)
consisting of elements e in x
, f in y
such that 1 = e + f
.
If the ideals are not coprime, an error is raised.
-
+
Quotient Rings
@@ -1774,51 +1774,51 @@ Quotient Rings
quo(O::AlgAssAbsOrd, I::AlgAssAbsOrdIdl) -> AbsOrdQuoRing, Map
The quotient ring as a ring together with the section . The pointwise inverse of is the canonical projection .
-
+
#
ResidueRing
— Method.
ResidueRing(O::NfOrd, I::NfOrdIdl) -> NfOrdQuoRing
ResidueRing(O::AlgAssAbsOrd, I::AlgAssAbsOrdIdl) -> AbsOrdQuoRing
The quotient ring modulo as a new ring.
-
+
#
ResidueField
— Method.
ResidueField(O::NfOrd, P::NfOrdIdl, check::Bool = true) -> Field, Map
Returns the residue field of the prime ideal together with the projection map. If check
is true, the ideal is checked for being prime.
-
+
#
mod
— Method.
mod(x::NfOrdElem, I::NfAbsOrdIdl)
Returns the unique element of the ambient order of with and the following property: If are the diagonal entries of the unique HNF basis matrix of and is the coefficient vector of , then for .
-
+
#
crt
— Method.
crt(r1::NfOrdElem, i1::NfOrdIdl, r2::NfOrdElem, i2::NfOrdIdl) -> NfOrdElem
Find such that and using idempotents
.
-
+
#
euler_phi
— Method.
euler_phi(A::NfOrdIdl) -> fmpz
The ideal version of the totient function returns the size of the unit group of the residue ring modulo the ideal.
-
+
#
multiplicative_group
— Method.
multiplicative_group(Q::NfOrdQuoRing) -> GrpAbFinGen, Map{GrpAbFinGen, NfOrdQuoRing}
unit_group(Q::NfOrdQuoRing) -> GrpAbFinGen, Map{GrpAbFinGen, NfOrdQuoRing}
Returns the unit group of as an abstract group and an isomorphism map .
-
+
#
multiplicative_group_generators
— Method.
multiplicative_group_generators(Q::NfOrdQuoRing) -> Vector{NfOrdQuoRingElem}
Return a set of generators for .
-
+
diff --git a/dev/orders/orders/index.html b/dev/orders/orders/index.html
index 3ec880b39f..2fd360e937 100644
--- a/dev/orders/orders/index.html
+++ b/dev/orders/orders/index.html
@@ -1091,31 +1091,31 @@ Creation and basic properties
Order(K::AnticNumberField, B::Vector{nf_elem}; check::Bool = true, cached::Bool = true, isbasis::Bool = false) -> NfOrd
Returns the order generated by . If check
is set, it is checked whether defines an order. If isbasis
is set, then elements are assumed to form a -basis.
#
Order
— Method.
Order(K::AnticNumberField, A::FakeFmpqMat; check::Bool = true) -> NfOrd
Returns the order which has basis matrix with respect to the power basis of . If check
is set, it is checked whether defines an order.
#
Order
— Method.
Order(K::AnticNumberField, A::fmpz_mat, check::Bool = true) -> NfOrd
Returns the order which has basis matrix with respect to the power basis of . If check
is set, it is checked whether defines an order.
Order(A::AbsAlgAss{<: NumFieldElem}, M::PMat{<: NumFieldElem, T})
-> AlgAssRelOrd
Returns the order of with basis pseudo-matrix .
- +#
EquationOrder
— Method.
EquationOrder(K::NumberField) -> NumFieldOrd
equation_order(K::NumberField) -> NumFieldOrd
Returns the equation order of the number field .
- +#
MaximalOrder
— Method.
MaximalOrder(K::NumField{fmpq}; discriminant::fmpz, ramified_primes::Vector{fmpz}) -> NfAbsOrd
@@ -1126,33 +1126,33 @@ Creation and basic properties
julia> K, a = NumberField(x^3 + 2, "a");
julia> O = MaximalOrder(K);
#
MaximalOrder
— Method.
MaximalOrder(O::NfAbsOrd; index_divisors::Vector{fmpz}, discriminant::fmpz, ramified_primes::Vector{fmpz}) -> NfAbsOrd
Returns the maximal order of the number field that contains . Additional information can be supplied if they are already known, as the ramified primes, the discriminant of the maximal order or a set of integers dividing the index of in the maximal order.
- +MaximalOrder(O::AlgAssAbsOrd)
Given an order , this function returns a maximal order containing .
- +MaximalOrder(A::AbsAlgAss{fmpq}) -> AlgAssAbsOrd
Returns a maximal order of .
- +#
lll
— Method.
lll(M::NfAbsOrd) -> NfAbsOrd
The same order, but with the basis now being LLL reduced wrt. the Minkowski metric.
- +#
any_order
— Method.
any_order(K::NumberField)
Return some order in . In case the defining polynomial for is monic and integral, this just returns the equation order. In the other case is returned.
- +parent(O::NfAbsOrd) -> NfOrdSet
Returns the parent of , that is, the set of orders of the ambient number field.
- +#
signature
— Method.
signature(O::NumFieldOrd) -> Tuple{Int, Int}
Returns the signature of the ambient number field of .
- +#
nf
— Method.
nf(O::NumFieldOrd) -> NumField
Returns the ambient number field of .
- +#
basis
— Method.
basis(O::NfAbsOrd) -> Vector{NfAbsOrdElem}
Returns the -basis of .
- +basis(I::NfAbsOrdFracIdl) -> Vector{nf_elem}
Returns the -basis of .
- +#
lll_basis
— Method.
lll_basis(M::NumFieldOrd) -> Vector{NumFieldElem}
A basis for that is reduced using the LLL algorithm for the Minkowski metric.
- +#
basis
— Method.
basis(O::NfOrd, K::AnticNumberField) -> Vector{nf_elem}
Returns the -basis elements of as elements of the ambient number field.
- +#
pseudo_basis
— Method.
pseudo_basis(O::NfRelOrd{T, S}) -> Vector{Tuple{NumFieldElem{T}, S}}
Returns the pseudo-basis of .
- +#
basis_pmatrix
— Method.
basis_pmatrix(O::NfRelOrd) -> PMat
Returns the basis pseudo-matrix of with respect to the power basis of the ambient number field.
- +#
basis_nf
— Method.
basis_nf(O::NfRelOrd) -> Vector{NumFieldElem}
Returns the elements of the pseudo-basis of as elements of the ambient number field.
- +#
inv_coeff_ideals
— Method.
inv_coeff_ideals(O::NfRelOrd{T, S}) -> Vector{S}
Returns the inverses of the coefficient ideals of the pseudo basis of .
- +#
basis_matrix
— Method.
basis_matrix(O::NfAbsOrd) -> FakeFmpqMat
Returns the basis matrix of with respect to the basis of the ambient number field.
- +#
basis_mat_inv
— Method.
basis_mat_inv(O::NfAbsOrd) -> FakeFmpqMat
Returns the inverse of the basis matrix of .
- +basis_mat_inv(A::NfAbsOrdIdl) -> fmpz_mat
Returns the inverse basis matrix of .
- +#
gen_index
— Method.
gen_index(O::NfOrd) -> fmpq
Returns the generalized index of with respect to the equation order of the ambient number field.
- +#
isindex_divisor
— Method.
isindex_divisor(O::NfOrd, d::fmpz) -> Bool
isindex_divisor(O::NfOrd, d::Int) -> Bool
Returns whether is a divisor of the index of . It is assumed that contains the equation order of the ambient number field.
- +#
minkowski_matrix
— Method.
minkowski_matrix(O::NfAbsOrd, abs_tol::Int = 64) -> arb_mat
Returns the Minkowski matrix of . Thus if has degree , then the result is a matrix in . The entries of the matrix are real balls of type arb
with radius less then 2^-abs_tol
.
#
in
— Method.
in(a::NumFieldElem, O::NumFieldOrd) -> Bool
Checks whether lies in .
- +#
norm_change_const
— Method.
norm_change_const(O::NfOrd) -> (Float64, Float64)
Returns such that for all we have and , where is the -basis of .
- +#
trace_matrix
— Method.
trace_matrix(O::NfAbsOrd) -> fmpz_mat
Returns the trace matrix of , that is, the matrix .
- +#
+
— Method.
+(R::NfOrd, S::NfOrd) -> NfOrd
Given two orders , of , this function returns the smallest order containing both and . It is assumed that , contain the ambient equation order and have coprime index.
- +#
poverorder
— Method.
poverorder(O::NfOrd, p::fmpz) -> NfOrd
poverorder(O::NfOrd, p::Integer) -> NfOrd
This function tries to find an order that is locally larger than at the prime : If divides the index , this function will return an order such that . Otherwise is returned.
- +#
poverorders
— Method.
poverorders(O, p) -> Vector{Ord}
Returns all p
-overorders of O
, that is all overorders M
, such that the index of O
in M
is a p
-power.
#
pmaximal_overorder
— Method.
pmaximal_overorder(O::NfOrd, p::fmpz) -> NfOrd
pmaximal_overorder(O::NfOrd, p::Integer) -> NfOrd
This function finds a -maximal order containing . That is, the index is not divisible by .
- +#
pradical
— Method.
pradical(O::NfOrd, p::{fmpz|Integer}) -> NfAbsOrdIdl
Given a prime number , this function returns the -radical of , which is just . It is not checked that is prime.
- +#
pradical
— Method.
pradical(O::NfRelOrd, P::NfOrdIdl) -> NfRelOrdIdl
Given a prime ideal , this function returns the -radical of , which is just . It is not checked that is prime.
- +#
ring_of_multipliers
— Method.
ring_of_multipliers(I::NfAbsOrdIdl) -> NfAbsOrd
Computes the order , which is the set of all with .
- +discriminant(O::NfOrd) -> fmpz
Returns the discriminant of .
- +discriminant(E::EllCrv{T}) -> T
Computes the discriminant of .
- +discriminant(O::AlgssRelOrd)
Returns the discriminant of .
- +#
discriminant
— Method.
discriminant(O::NfOrd) -> fmpz
Returns the discriminant of .
- +#
reduced_discriminant
— Method.
reduced_discriminant(O::NfOrd) -> fmpz
Returns the reduced discriminant, that is, the largest elementary divisor of the trace matrix of .
- +#
degree
— Method.
degree(O::NumFieldOrd) -> Int
Returns the degree of .
- +#
index
— Method.
index(O::NfOrd) -> fmpz
Assuming that the order contains the equation order of the ambient number field, this function returns the index .
- +#
different
— Method.
different(R::NfAbsOrd) -> NfAbsOrdIdl
The differnt ideal of , that is, the ideal generated by all differents of elements in . For Gorenstein orders, this is also the inverse ideal of the co-different.
- +#
codifferent
— Method.
codifferent(R::NfAbsOrd) -> NfOrdIdl
The codiffernt ideal of , i.e. the trace-dual of .
- +#
isgorenstein
— Method.
isgorenstein(O::NfOrd) -> Bool
Return whether the order \mathcal{O}
is Gorenstein.
#
isbass
— Method.
isbass(O::NfOrd) -> Bool
Return whether the order \mathcal{O}
is Bass.
#
isequation_order
— Method.
isequation_order(O::NumFieldOrd) -> Bool
Returns whether is the equation order of the ambient number field .
- +#
zeta_log_residue
— Method.
zeta_log_residue(O::NfOrd, error::Float64) -> arb
Computes the residue of the zeta function of at . The output will be an element of type arb
with radius less then error
.
#
ramified_primes
— Method.
ramified_primes(O::NfAbsOrd) -> Vector{fmpz}
Returns the list of prime numbers that divide .
- +isindependent{T}(x::Vector{T})
Given an array of non-zero units in a number field, returns whether they are multiplicatively independent.
- +iscontained(R::NfAbsOrd, S::NfAbsOrd) -> Bool
Checks if is contained in .
- +#
ismaximal
— Method.
ismaximal(R::NfAbsOrd) -> Bool
Tests if the order is maximal. This might trigger the computation of the maximal order.
- + diff --git a/dev/pmat/introduction/index.html b/dev/pmat/introduction/index.html index cfbe629c82..5b94b1ec08 100644 --- a/dev/pmat/introduction/index.html +++ b/dev/pmat/introduction/index.html @@ -1055,19 +1055,19 @@PseudoMatrix(m::Generic.Mat{nf_elem}, c::Vector{NfOrdIdl}) -> PMat{nf_elem, NfOrdFracIdl}
Returns the (row) pseudo matrix representing the -module where are the ideals in and the rows of .
- +#
PseudoMatrix
— Method.
PseudoMatrix(m::Generic.Mat{NfOrdElem}, c::Vector{NfOrdIdl}) -> PMat{nf_elem, NfOrdFracIdl}
Returns the (row) pseudo matrix representing the -module where are the ideals in and the rows of .
- +#
PseudoMatrix
— Method.
PseudoMatrix(m::Generic.Mat{NfOrdElem}) -> PMat{nf_elem, NfOrdFracIdl}
Returns the free (row) pseudo matrix representing the -module where are the rows of .
- +(Those functions are also available as pseudo_matrix
)
coefficient_ideals(M::PMat)
Returns the vector of coefficient ideals.
- +#
matrix
— Method.
matrix(M::PMat)
Returns the matrix part of the PMat
.
#
base_ring
— Method.
base_ring(M::PMat)
The PMat
defines an -module for soem maximal order . This function returns the that was used to defined .
#
pseudo_hnf
— Method.
pseudo_hnf(P::PMat)
Transforms into pseudo-Hermite form as defined by Cohen. Essentially the matrix part of will be upper triangular with some technical normalisation for the off-diagonal elements. This operation preserves the module.
A optional second argument can be secified as a symbols, indicating the desiered shape of the echelon form. Possible are :upperright
(the default) and :lowerleft
#
pseudo_hnf_with_transform
— Method.
pseudo_hnf_with_transform(P::PMat)
Transforms into pseudo-Hermite form as defined by Cohen. Essentially the matrix part of will be upper triangular with some technical normalisation for the off-diagonal elements. This operation preserves the module. The used transformation is returned as a second return value.
A optional second argument can be secified as a symbols, indicating the desiered shape of the echelon form. Possible are :upperright
(the default) and :lowerleft
quadratic_space(K::NumField, n::Int; cached = true) -> QuadSpace
Create the quadratic space over K
with dimension n
and Gram matrix equal to the identity matrix.
#
quadratic_space
— Method.
quadratic_space(K::NumField, G::Int; cached = true) -> QuadSpace
Create the quadratic space over K
with Gram matrix G
. The matrix G
must be square and symmetric.
rank(V::AbsSpace) -> Int
Return the rank of the quadratic space V
.
#
dim
— Method.
dim(V::AbsSpace) -> Int
Return the dimension of the space V
.
#
gram_matrix
— Method.
gram_matrix(V::AbsSpace) -> MatElem
Return the Gram matrix of V
.
#
involution
— Method.
involution(V::AbsSpace) -> NumField
Return the involution of V
.
#
isregular
— Method.
isregular(V::AbsSpace) -> Bool
Return whether V
is regular, that is, if the Gram matrix has full rank.
#
det
— Method.
det(V::AbsSpace) -> FieldElem
Returns the determinant of the space V
as an element of the fixed field.
#
discriminant
— Method.
discriminant(V::AbsSpace) -> FieldElem
Returns the discriminant of the space V
as an element of the fixed field.
gram_matrix(V::AbsSpace, M::MatElem) -> MatElem
Returns the gram matrix of the rows of M
.
#
gram_matrix
— Method.
gram_matrix(V::AbsSpace, S::Vector{Vector}) -> MatElem
Returns the gram matrix of the sequence S
.
#
inner_product
— Method.
inner_product(V::AbsSpace, v::Vector, w::Vector) -> FieldElem
Returns the inner product of v
and w
with respect to V
.
#
orthogonal_basis
— Method.
orthogonal_basis(V::AbsSpace) -> MatElem
Returns a matrix M
, such that the rows of M
form an orthgonal basis of V
.
#
diagonal
— Method.
diagonal(V::AbsSpace) -> Vector{FieldElem}
Returns a vector of elements such that V
is isometric to the diagonal space .
The elements will be contained in the fixed field of V
.
hasse_invariant(V::QuadSpace, p::Union{InfPlc, NfOrdIdl}) -> Int
Returns the Hasse invariant of the quadratic space V
at p
. This is equal to the product of local Hilbert symbols , , where is isometric to . If V
is degenerate return the hasse invariant of V/radical(V)
.
#
witt_invariant
— Method.
witt_invariant(V::QuadSpace, p::Union{InfPlc, NfOrdIdl}) -> Int
Returns the Witt invariant of the quadratic space V
at p
.
See [Definition 3.2.1, Kir16].
- +#
isisometric
— Method.
isisometric(L::AbsSpace, M::AbsSpace, p::Union{InfPlc, NfOrdIdl}) -> Bool
Returns whether L
and M
are isometric over the completion at p
.
#
invariants
— Method.
invariants(M::QuadSpace)
@@ -1177,13 +1177,13 @@ Equivalence
Returns a tuple (n, k, d, H, I)
of invariants of M
, which determine the isometry class completely. Here n
is the dimension. The dimension of the kernel is k
. The element d
is the determinant of a Gram matrix of the non-degenerate part, H
contains the non-trivial Hasse invariants and I
contains for each real place the negative index of inertia.
Note that d
is determined only modulo squares.
#
isisometric
— Method.
isisometric(M::QuadSpace, L::QuadSpace) -> Bool
Tests if M
and L
are isometric.
Given a number field and a matrix , returns the quadratic lattice spanned by the rows of inside the quadratic space over with gram matrix .
If is not supplied, the gram matrix of the ambient space will be the identity matrix.
- +#
quadratic_lattice
— Method.
quadratic_lattice(K::NumField, B::PMat; gram_ambient_space = F) -> QuadLat
Given a number field and a pseudo-matrix , returns the quadratic lattice spanned by the pseudo-matrix inside the quadratic space over with gram matrix .
If is not supplied, the gram matrix of the ambient space will be the identity matrix.
- +#
hermitian_lattice
— Method.
hermitian_lattice(K::NumField, B::MatElem; gram_ambient_space = F) -> HermLat
Given a number field and a matrix , returns the hermitian lattice spanned by the rows of inside the hermitian space over with gram matrix .
If is not supplied, the gram matrix of the ambient space will be the identity matrix.
- +#
hermitian_lattice
— Method.
hermitian_lattice(K::NumField, B::PMat; gram_ambient_space = F) -> HermLat
Given a number field and a pseudo-matrix , returns the hermitian lattice spanned by the pseudo-matrix inside the hermitian space over with gram matrix .
If is not supplied, the gram matrix of the ambient space will be the identity matrix.
- +ambient_space(L::AbsLat) -> AbsSpace
Returns the ambient space of . If the ambient space is not known, an error is raised.
- +#
rational_span
— Method.
rational_span(L::AbsLat) -> AbsSpace
Returns the rational span of .
- +#
fixed_field
— Method.
fixed_field(L::AbsLat) -> NumField
Returns the fixed field of the involution of .
- +#
involution
— Method.
involution(L::AbsLat) -> Map
Returns the involution of the rational span of .
- +#
rank
— Method.
rank(L::AbsLat) -> Int
Returns the rank of the underlying module of .
- +#
degree
— Method.
degree(L::AbsLat) -> Int
Returns the dimension of the ambient space of .
- +#
generators
— Method.
generators(L::AbsLat; minimal = false) -> Vector{Vector}
Returns a set of generators of over the base ring of .
If minimal == true
, the number of generators is minimal. Note that computing minimal generators is expensive.
#
discriminant
— Method.
discriminant(L::AbsLat) -> NfOrdFracIdl
Returns the discriminant of , that is, the generalized index ideal .
- +#
pseudo_matrix
— Method.
pseudo_matrix(L::AbsLat) -> PMat
Returns the basis pseudo-matrix of .
- +#
coefficient_ideals
— Method.
coefficient_ideals(L::AbsLat) -> Vector{NfOrdIdl}
Returns the coefficient ideals of the pseudo-basis of .
- +#
absolute_basis
— Method.
absolute_basis(L::AbsLat) -> Vector
Returns a -basis of .
- +#
absolute_basis_matrix
— Method.
absolute_basis_matrix(L::AbsLat) -> MatElem
Returns a -basis matrix of .
- +hasse_invariant(L::AbsLat, p::Union{InfPlc, NfOrdIdl}) -> Int
Returns the Hasse invariant of the rational span of at . The lattice must be quadratic.
- +#
witt_invariant
— Method.
witt_invariant(L::AbsLat, p::Union{InfPlc, NfOrdIdl}) -> Int
Returns the Witt invariant of the rational span of at . The lattice must be quadratic.
- +#
isrationally_isometric
— Method.
isrationally_isometric(L::AbsLat, M::AbsLat, p::Union{InfPlc, NfOrdIdl})
-> Bool
Returns whether the rational spans of and are isometric over the completion at .
- +#
isrationally_isometric
— Method.
isrationally_isometric(L::AbsLat, M::AbsLat)
-> Bool
Returns whether the rational spans of and are isometric.
- +ispositive_definite(L::AbsLat) -> Bool
Returns whether the rational span of is positive definite.
- +#
isnegative_definite
— Method.
isnegative_definite(L::AbsLat) -> Bool
Returns whether the rational span of is negative definite.
- +#
isdefinite
— Method.
isdefinite(L::AbsLat) -> Bool
Returns whether the rational span of is definite.
- +#
can_scale_totally_positive
— Method.
can_scale_totally_positive(L::AbsLat) -> Bool, NumFieldElem
Returns whether there is a totally positive rescaled lattice of . If so, the second return value is an element such that is totally positive.
- +*(a::NumFieldElem, M::AbsLat) -> AbsLat
Returns the lattice inside the ambient space of .
- +#
*
— Method.
*(a::NfOrdIdl, M::AbsLat) -> AbsLat
Returns the lattice inside the ambient space of .
- +#
*
— Method.
*(a::NfOrdFracIdl, M::AbsLat) -> AbsLat
Returns the lattice inside the ambient space of .
- +#
rescale
— Method.
rescale(L::AbsLat, a::NumFieldElem) -> AbsLat
Returns the rescaled lattice . Note that this has a different ambient space than .
- +#
dual
— Method.
dual(L::AbsLat) -> AbsLat
Returns the dual lattice of .
- +norm(L::AbsLat) -> NfOrdFracIdl
Returns the norm of . This is a fractional ideal of the fixed field of .
- +#
scale
— Method.
scale(L::AbsLat) -> NfOrdFracIdl
Returns the scale of .
- +#
isintegral
— Method.
isintegral(L::AbsLat) -> Bool
Returns whether the lattice is integral.
- +#
volume
— Method.
volume(L::AbsLat) -> NfOrdFracIdl
Returns the volume of .
- +#
ismodular
— Method.
ismodular(L::AbsLat) -> Bool, NfOrdFracIdl
Returns whether is modular. In this case, the second return value is a fractional ideal such that , where is the dual of .
- +type == :supermodule
, the lattice will be a superlattice of .type == :any
, there may not be any containment relation between and .#
jordan_decomposition
— Method.
jordan_decomposition(L::AbsLat, p::NfOrdIdl)
@@ -1434,13 +1434,13 @@ Local properties
Returns a Jordan decomposition of the completion of at .
The return value consists of three lists , and of the same length . The completions of the row spans of the matrices yield a Jordan decomposition of into modular sublattices with gram matrices and scale of -adic valuation .
- +#
islocally_isometric
— Method.
islocally_isometric(L::AbsLat, M::AbsLat, p::NfOrdIdl) -> Bool
Returns whether the completions of and at the prime ideal are locally isometric.
- +Returns the genus of at the prime ideal .
See [Kir16, Definition 8.3.1].
- +#
genus
— Method.
genus(L::HermLat) -> GenusHerm
Given a Hermitian lattice, return the genus it belongs to.
- +rank(G::LocalGenusHerm) -> Int
Given a genus symbol , return the rank of a lattice in .
- +#
rank
— Method.
rank(G::LocalGenusHerm, i::Int)
Given a genus symbol for Hermitian lattices over , return the rank of the th Jordan block of .
- +#
ranks
— Method.
ranks(G::LocalGenusHerm)
Given a genus symbol for Hermitian lattices over , return the ranks of the Jordan blocks of .
- +#
det
— Method.
det(G::LocalGenusHerm) -> Int
Given a genus symbol , return the determinant of a lattice in . This will be 1
or -1
depending on whether the determinant is a local norm or not.
#
det_representative
— Method.
det_representative(G::LocalGenusHerm) -> NumFieldElem
Return a representative for the norm class of the determinant of .
- +#
gram_matrix
— Method.
gram_matrix(G::LocalGenusHerm)
Return a matrix , such that a lattice with Gram matrix is an element of the given genus.
- +#
primes
— Method.
primes(G::GenusHerm) -> Vector{NfOrdIdl}
Return the primes of a global genus symbol.
- +in(L::HermLat, G::LocalGenusHerm) -> Bool
Test if the lattice is contained in the local genus .
- +#
in
— Method.
in(L::HermLat, G::GenusHerm) -> Bool
Test if the lattice is contained in the genus .
- +representative(G::LocalGenusHerm) -> HermLat
Given a local genus, return a Hermitian lattice contained in this genus.
- + diff --git a/dev/sitemap.xml b/dev/sitemap.xml index aa3697db71..61c7522c83 100644 --- a/dev/sitemap.xml +++ b/dev/sitemap.xml @@ -2,167 +2,167 @@sparse_row(R::Ring, J::Vector{Tuple{Int, T}}) -> SRow{T}
Constructs the sparse row with , where . The elements must belong to the ring .
- +#
sparse_row
— Method.
sparse_row(R::Ring, J::Vector{Tuple{Int, T}}) -> SRow{T}
Constructs the sparse row with , where . The elements must belong to the ring .
- +sparse_row(R::Ring, J::Vector{Tuple{Int, Int}}) -> SRow
Constructs the sparse row over with , where .
- +#
sparse_row
— Method.
sparse_row(R::Ring, J::Vector{Int}, V::Vector{T}) -> SRow{T}
Constructs the sparse row over with , where and .
- +getindex(A::SRow, j::Int) -> RingElem
Given a sparse row and an index return .
- +#
add_scaled_row
— Method.
add_scaled_row(A::SRow{T}, B::SRow{T}, c::T) -> SRow{T}
Returns the row .
- +#
add_scaled_row
— Method.
add_scaled_row(A::SRow{T}, B::SRow{T}, c::T) -> SRow{T}
Returns the row .
- +#
transform_row
— Method.
transform_row(A::SRow{T}, B::SRow{T}, i::Int, j::Int, a::T, b::T, c::T, d::T)
Returns the tuple .
- +#
length
— Method.
length(A::SRow)
Returns the number of nonzero entries of .
- +change_base_ring(R::Ring, A::SRow) -> SRow
Create a new sparse row by coercing all elements into the ring .
- +maximum(A::SRow{T}) -> T
Returns the largest entry of .
- +#
maximum
— Method.
maximum(A::SRow{T}) -> T
Returns the largest entry of .
- +#
minimum
— Method.
minimum(A::NfRelOrdIdl) -> NfOrdIdl
minimum(A::NfRelOrdIdl) -> NfRelOrdIdl
Returns the ideal where is the maximal order of the coefficient ideals of .
- +minimum(A::SRow{T}) -> T
Returns the smallest entry of .
- +#
minimum
— Method.
minimum(A::SRow{T}) -> T
Returns the smallest entry of .
- +#
norm2
— Method.
norm2(A::SRow{T} -> T
Returns .
- +lift(A::SRow{nmod}) -> SRow{fmpz}
Return the sparse row obtained by lifting all entries in .
- +#
mod!
— Method.
mod!(A::SRow{fmpz}, n::fmpz) -> SRow{fmpz}
Inplace reduction of all entries of modulo to the positive residue system.
- +#
mod_sym!
— Method.
mod_sym!(A::SRow{fmpz}, n::fmpz) -> SRow{fmpz}
Inplace reduction of all entries of modulo to the symmetric residue system.
- +#
mod_sym!
— Method.
mod_sym!(A::SRow{fmpz}, n::Integer) -> SRow{fmpz}
Inplace reduction of all entries of modulo to the symmetric residue system.
- +#
maximum
— Method.
maximum(abs, A::SRow{fmpz}) -> fmpz
Returns the largest, in absolute value, entry of .
- +sparse_matrix(R::Ring) -> SMat
Return an empty sparse matrix with base ring .
- +Sparse matrices can also be created from dense matrices as well as from julia arrays:
#
sparse_matrix
— Method.
sparse_matrix(A::MatElem; keepzrows::Bool = true)
Constructs the sparse matrix corresponding to the dense matrix . If keepzrows
is false, then the constructor will drop any zero row of .
#
sparse_matrix
— Method.
sparse_matrix(R::Ring, A::Matrix{T}) -> SMat
Constructs the sparse matrix over corresponding to .
- +#
sparse_matrix
— Method.
sparse_matrix(R::Ring, A::Matrix{T}) -> SMat
Constructs the sparse matrix over corresponding to .
- +The normal way however, is to add rows:
#
push!
— Method.
push!(A::SMat{T}, B::SRow{T}) where T
Appends the sparse row B
to A
.
Sparse matrices can also be concatenated to form larger ones:
#
vcat!
— Method.
vcat!(A::SMat, B::SMat) -> SMat
Vertically joins and inplace, that is, the rows of are appended to .
- +#
vcat
— Method.
vcat(A::SMat, B::SMat) -> SMat
Vertically joins and .
- +#
hcat!
— Method.
hcat!(A::SMat, B::SMat) -> SMat
Horizontally concatenates and , inplace, changing .
- +#
hcat
— Method.
hcat(A::SMat, B::SMat) -> SMat
Horizontally concatenates and .
- +(Normal julia is also supported)
There are special constructors:
# @@ -1416,33 +1416,33 @@
identity_matrix(::Type{SMat}, R::Ring, n::Int)
Return a sparse times identity matrix over .
- +#
zero_matrix
— Method.
zero_matrix(::Type{SMat}, R::Ring, n::Int)
Return a sparse times zero matrix over .
- +#
zero_matrix
— Method.
zero_matrix(::Type{SMat}, R::Ring, n::Int, m::Int)
Return a sparse times zero matrix over .
- +Slices:
#
sub
— Method.
sub(A::SMat, r::UnitRange, c::UnitRange) -> SMat
Return the submatrix of , where the rows correspond to and the columns correspond to .
- +Transpose:
#
transpose
— Method.
transpose(A::SMat) -> SMat
Returns the transpose of .
- +sparsity(A::SMat) -> Float64
Return the sparsity of A
, that is, the number of zero-valued elements divided by the number of all elements.
#
density
— Method.
density(A::SMat) -> Float64
Return the density of A
, that is, the number of nonzero-valued elements divided by the number of all elements.
#
nnz
— Method.
nnz(A::SMat) -> Int
Return the number of non-zero entries of .
- +#
nrows
— Method.
nrows(A::SMat) -> Int
Return the number of rows of .
- +#
ncols
— Method.
ncols(A::SMat) -> Int
Return the number of columns of .
- +#
isone
— Method.
isone(A::SMat)
Tests if is an identity matrix.
- +#
iszero
— Method.
iszero(A::SMat)
Tests if is a zero matrix.
- +#
isupper_triangular
— Method.
isupper_triangular(A::SMat)
Returns true if and only if is upper (right) triangular.
- +#
maximum
— Method.
maximum(A::SMat{T}) -> T
Finds the largest entry of .
- +#
minimum
— Method.
minimum(A::SMat{T}) -> T
Finds the smallest entry of .
- +#
maximum
— Method.
maximum(abs, A::SMat{fmpz}) -> fmpz
Finds the largest, in absolute value, entry of .
- +#
elementary_divisors
— Method.
elementary_divisors(A::SMat{fmpz}) -> Vector{fmpz}
The elementary divisors of , i.e. the diagonal elements of the Smith normal form of .
- +#
solve_dixon_sf
— Method.
solve_dixon_sf(A::SMat{fmpz}, b::SRow{fmpz}, is_int::Bool = false) -> SRow{fmpz}, fmpz
solve_dixon_sf(A::SMat{fmpz}, B::SMat{fmpz}, is_int::Bool = false) -> SMat{fmpz}, fmpz
For a sparse square matrix of full rank and a sparse matrix (row), find a sparse matrix (row) and an integer s.th. holds. The algorithm is a Dixon-based linear p-adic lifting method. If \code{is_int} is given, then is assumed to be . In this case rational reconstruction is avoided.
- +#
hadamard_bound2
— Method.
hadamard_bound2(A::SMat{T}) -> T
The square of the product of the norms of the rows of .
- +#
echelon_with_transform
— Method.
echelon_with_transform(A::SMat{nmod}) -> SMat, SMat
Find a unimodular matrix and an upper-triangular s.th. holds.
- +#
reduce_full
— Method.
reduce_full(A::SMat{fmpz}, g::SRow{fmpz},
@@ -1545,49 +1545,49 @@ Elementary Properties
Reduces modulo and assumes that is upper triangular.
The second return value is the array of pivot elements of that changed.
If trafo
is set to Val{true}
, then additionally an array of transformations is returned.
-
+
#
hnf!
— Method.
hnf!(A::SMat{fmpz})
Inplace transform of into upper right Hermite normal form.
-
+
#
hnf
— Method.
hnf(A::SMat{fmpz}) -> SMat{fmpz}
Return the upper right Hermite normal form of .
-
+
#
snf
— Method.
snf(A::SMat{fmpz})
The Smith normal form (snf) of .
-
+
#
hnf_extend!
— Method.
hnf_extend!(A::SMat{fmpz}, b::SMat{fmpz}, offset::Int = 0) -> SMat{fmpz}
Given a matrix in HNF, extend this to get the HNF of the concatenation with .
-
+
#
isdiagonal
— Method.
isdiagonal(A::SMat) -> Bool
True iff only the i-th entry in the i-th row is non-zero.
-
+
#
det
— Method.
det(A::SMat{fmpz})
The determinant of using a modular algorithm. Uses the dense (nmod_mat) determinant on for various primes .
-
+
#
det_mc
— Method.
det_mc(A::SMat{fmpz})
Computes the determinant of using a LasVegas style algorithm, i.e. the result is not proven to be correct. Uses the dense (nmod_mat) determinant on for various primes .
-
+
#
valence_mc
— Method.
valence_mc{T}(A::SMat{T}; extra_prime = 2, trans = Vector{SMatSLP_add_row{T}}()) -> T
@@ -1595,26 +1595,26 @@ Elementary Properties
Uses a Monte-Carlo algorithm to compute the valence of . The valence is the valence of the minimal polynomial of , thus the last non-zero coefficient, typically .
The valence is computed modulo various primes until the computation stabilises for extra_prime
many.
trans
, if given, is a SLP (straight-line-program) in GL(n, Z). Then the valence of trans
* is computed instead.
-
+
#
saturate
— Method.
saturate(A::SMat{fmpz}) -> SMat{fmpz}
Computes the saturation of , that is, a basis for , where is the row span of and the number of rows of .
Equivalently, return for an invertible rational matrix , such that is integral and the elementary divisors of are all trivial.
-
+
#
hnf_kannan_bachem
— Method.
hnf_kannan_bachem(A::SMat{fmpz}) -> SMat{fmpz}
Compute the Hermite normal form of using the Kannan-Bachem algorithm.
-
+
#
diagonal_form
— Method.
diagonal_form(A::SMat{fmpz}) -> SMat{fmpz}
A matrix that is diagonal and obtained via unimodular row and column operations. Like a snf without the divisibility condition.
-
+
Manipulation/ Access
@@ -1623,116 +1623,116 @@ Manipulation/ Access
getindex(A::SMat, i::Int, j::Int)
Given a sparse matrix , return the entry .
-
+
#
getindex
— Method.
getindex(A::SMat, i::Int) -> SRow
Given a sparse matrix and an index , return the -th row of .
-
+
#
setindex!
— Method.
setindex!(A::SMat, b::SRow, i::Int)
Given a sparse matrix , a sparse row and an index , set the -th row of equal to .
-
+
#
swap_rows!
— Method.
swap_rows!(A::SMat{T}, i::Int, j::Int)
Swap the -th and -th row of inplace.
-
+
#
swap_cols!
— Method.
swap_cols!(A::SMat, i::Int, j::Int)
Swap the -th and -th column of inplace.
-
+
#
scale_row!
— Method.
scale_row!(A::SMat{T}, i::Int, c::T)
Multiply the -th row of by inplace.
-
+
#
add_scaled_col!
— Method.
add_scaled_col!(A::SMat{T}, i::Int, j::Int, c::T)
Add times the -th column to the -th column of inplace, that is, , where denote the columns of .
-
+
#
add_scaled_row!
— Method.
add_scaled_row!(A::SMat{T}, i::Int, j::Int, c::T)
Add times the -th row to the -th row of inplace, that is, , where denote the rows of .
-
+
#
transform_row!
— Method.
transform_row!(A::SMat{T}, i::Int, j::Int, a::T, b::T, c::T, d::T)
Applies the transformation to , where are the rows of .
-
+
#
diagonal
— Method.
diagonal(A::SMat) -> fmpz[]
The diagonal elements of in an array.
-
+
#
reverse_rows!
— Method.
reverse_rows!(A::SMat)
Inplace inversion of the rows of .
-
+
#
mod_sym!
— Method.
mod_sym!(A::SMat{fmpz}, n::fmpz)
Inplace reduction of all entries of modulo to the symmetric residue system.
-
+
#
find_row_starting_with
— Method.
find_row_starting_with(A::SMat, p::Int) -> Int
Tries to find the index such that and for all . It is assumed that is upper triangular. If such an index does not exist, find the smallest index larger.
-
+
#
reduce
— Method.
reduce(A::SMat{fmpz}, g::SRow{fmpz}, m::fmpz) -> SRow{fmpz}
Given an upper triangular matrix over the integers, a sparse row and an integer , this function reduces modulo and returns modulo with respect to the symmetric residue system.
-
+
#
reduce
— Method.
reduce(A::SMat{fmpz}, g::SRow{fmpz}) -> SRow{fmpz}
Given an upper triangular matrix over a field and a sparse row , this function reduces modulo .
-
+
<a id='reduce-Union{Tuple{T}, Tuple{SMat{T}, SRow{T}}} where T<:FieldElement' href='#reduce-Union{Tuple{T}, Tuple{SMat{T}, SRow{T}}} where T<:FieldElement'>#
reduce
— Method.
reduce(A::SMat{T}, g::SRow{T}) -> SRow{T}
Given an upper triangular matrix over a field and a sparse row , this function reduces modulo .
-
+
#
rand_row
— Method.
rand_row(A::SMat) -> SRow
Return a random row of the sparse matrix .
-
+
Changing of the ring:
#
map_entries
— Method.
map_entries(f, A::SMat) -> SMat
Given a sparse matrix and a callable object , this function will construct a new sparse matrix by applying to all elements of .
-
+
#
change_base_ring
— Method.
change_base_ring(R::Ring, A::SMat)
Create a new sparse matrix by coercing all elements into the ring .
-
+
Arithmetic
@@ -1748,50 +1748,50 @@ Arithmetic
mul(A::SMat{T}, b::AbstractVector{T}) -> Vector{T}
Return the product as a dense vector.
-
+
#
mul
— Method.
mul(A::SMat{T}, b::AbstractMatrix{T}) -> Matrix{T}
Return the product as a dense array.
-
+
#
mul
— Method.
mul(A::SMat{T}, b::MatElem{T}) -> MatElem
Return the product as a dense matrix.
-
+
#
mul
— Method.
mul(A::SRow, B::SMat) -> SRow
Return the product as a sparse row.
-
+
Other:
#
sparse
— Method.
sparse(A::SMat) -> SparseMatrixCSC
The same matrix, but as a sparse matrix of julia type SparseMatrixCSC
.
-
+
#
fmpz_mat
— Method.
fmpz_mat(A::SMat{fmpz})
The same matrix , but as an fmpz_mat
.
-
+
<a id='fmpz_mat-Union{Tuple{SMat{T}}, Tuple{T}} where T<:Integer' href='#fmpz_mat-Union{Tuple{SMat{T}}, Tuple{T}} where T<:Integer'>#
fmpz_mat
— Method.
fmpz_mat(A::SMat{T}) where {T <: Integer}
The same matrix , but as an fmpz_mat
. Requires a conversion from the base ring of to .
-
+
#
Array
— Method.
Array(A::SMat{T}) -> Matrix{T}
The same matrix, but as a two-dimensional julia array.
-
+