From 4c301d8591cbeaf795872f2085ec94576169bbd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20G=C3=B6ttgens?= Date: Wed, 31 May 2023 15:27:39 +0200 Subject: [PATCH] Update all uses of `roots` --- src/EllCrv/RationalPointSearch.jl | 2 +- src/LocalField/Conjugates.jl | 4 ++-- src/LocalField/automorphisms.jl | 2 +- src/Map/FiniteField.jl | 2 +- src/Map/automorphisms.jl | 4 ++-- src/Misc/FiniteField.jl | 4 ++-- src/Misc/Poly.jl | 14 +++++++------- src/Misc/RelFiniteField.jl | 2 +- src/Misc/nmod_poly.jl | 2 +- src/NumField/NfAbs/MPolyAbsFact.jl | 4 ++-- src/NumField/NfAbs/NfAbs.jl | 4 ++-- src/NumField/NfAbs/Simplify.jl | 6 +++--- src/NumField/NfRel/NfRelNSMor.jl | 2 +- src/NumField/NfRel/Simplify.jl | 4 ++-- src/NumField/SimpleNumField/Subfields.jl | 2 +- src/NumField/Subfields.jl | 2 +- src/NumFieldOrd/NfOrd/Ideal/Prime.jl | 2 +- src/NumFieldOrd/NfOrd/TorsionUnits.jl | 2 +- src/RCF/autos.jl | 4 ++-- test/Misc/Poly.jl | 2 +- test/NfAbs/Elem.jl | 2 +- 21 files changed, 36 insertions(+), 36 deletions(-) diff --git a/src/EllCrv/RationalPointSearch.jl b/src/EllCrv/RationalPointSearch.jl index 6fe366297b..c08e668045 100644 --- a/src/EllCrv/RationalPointSearch.jl +++ b/src/EllCrv/RationalPointSearch.jl @@ -830,7 +830,7 @@ mutable struct NegativityCertificate end - rr = roots(f, AcbField(64, cached = false)) + rr = roots(AcbField(64, cached = false), f) r = sort!(map(real, filter!(isreal, rr))) # Let's first consider what happens between two roots diff --git a/src/LocalField/Conjugates.jl b/src/LocalField/Conjugates.jl index 1081e0fdb1..b47d2714c1 100644 --- a/src/LocalField/Conjugates.jl +++ b/src/LocalField/Conjugates.jl @@ -75,7 +75,7 @@ The roots of $f$ in $Q$, $f$ has to be square-free (at least the roots have to b """ function roots(Q::FlintQadicField, f::ZZPolyRingElem; max_roots::Int = degree(f)) k, mk = residue_field(Q) - rt = roots(f, k) + rt = roots(k, f) RT = qadic[] for r = rt push!(RT, newton_lift(f, preimage(mk, r))) @@ -98,7 +98,7 @@ function roots(C::qAdicRootCtx, n::Int = 10) Q.prec_max = n for x = lf if is_splitting(C) || degree(x[1]) == degree(Q) - append!(rt, roots(x[1], Q, max_roots = 1)) + append!(rt, roots(Q, x[1], max_roots = 1)) end end end diff --git a/src/LocalField/automorphisms.jl b/src/LocalField/automorphisms.jl index c7f99637da..37149b3c62 100644 --- a/src/LocalField/automorphisms.jl +++ b/src/LocalField/automorphisms.jl @@ -122,7 +122,7 @@ function absolute_automorphism_list(K::LocalField{qadic, S}) where S auts = morphism_type(K)[] for f in autsk fnew = map_coefficients(f, defining_polynomial(K)) - rt = roots(fnew, K) + rt = roots(K, fnew) for x in rt push!(auts, hom(K, K, f, x)) end diff --git a/src/Map/FiniteField.jl b/src/Map/FiniteField.jl index 1c5e68a647..b2cc888ae6 100644 --- a/src/Map/FiniteField.jl +++ b/src/Map/FiniteField.jl @@ -90,7 +90,7 @@ end #Function that finds an embedding of k into K function Nemo.embed_any(k::FinField, K::FinField) f = defining_polynomial(k) - rt = roots(f, K)[1] + rt = roots(K, f)[1] return hom(k, K, rt) end diff --git a/src/Map/automorphisms.jl b/src/Map/automorphisms.jl index acbfca5673..07bd180f77 100644 --- a/src/Map/automorphisms.jl +++ b/src/Map/automorphisms.jl @@ -13,7 +13,7 @@ function _automorphisms(K::NfAbsNS; is_abelian::Bool = false) pols = QQPolyRingElem[is_univariate(x)[2] for x in K.pol] rt = Vector{Vector{NfAbsNSElem}}(undef, length(pols)) for i = 1:length(pols) - rt[i] = roots(pols[i], K) + rt[i] = roots(K, pols[i]) end auts = Vector{NfAbsNSToNfAbsNS}(undef, prod(length(x) for x in rt)) ind = 1 @@ -677,7 +677,7 @@ function absolute_automorphism_list(K::NumField) end function _automorphisms(K::NumField{QQFieldElem}, F::NumField, L::QQField) - rt = roots(defining_polynomial(K), F) + rt = roots(F, defining_polynomial(K)) auts = morphism_type(K, F)[hom(K, F, x) for x in rt] return auts end diff --git a/src/Misc/FiniteField.jl b/src/Misc/FiniteField.jl index b25fc40a3b..aa8523eafe 100644 --- a/src/Misc/FiniteField.jl +++ b/src/Misc/FiniteField.jl @@ -293,7 +293,7 @@ function splitting_field(f::PolyElem{<:FinFieldElem}; do_roots::Bool = false) embed(k, K) end if do_roots - return K, roots(f, K) + return K, roots(K, f) end return K -end +end diff --git a/src/Misc/Poly.jl b/src/Misc/Poly.jl index 91d3e28337..312a1351ff 100644 --- a/src/Misc/Poly.jl +++ b/src/Misc/Poly.jl @@ -711,14 +711,14 @@ function roots(f::ZZPolyRingElem, ::QQField; max_roots::Int=degree(f)) end function roots(f::ZZPolyRingElem; max_roots::Int=degree(f)) - r = roots(f, FlintQQ, max_roots=max_roots) + r = roots(FlintQQ, f, max_roots=max_roots) return ZZRingElem[FlintZZ(x) for x = r if denominator(x) == 1] end function roots(f::QQPolyRingElem; max_roots::Int=degree(f)) - Zx, x = polynomial_ring(FlintZZ, cached=false) - g = Zx(denominator(f) * f) - return roots(g, FlintQQ) + Zx, x = polynomial_ring(FlintZZ, cached = false) + g = Zx(denominator(f)*f) + return roots(FlintQQ, g) end function roots(R::AcbField, f::Union{ZZPolyRingElem, QQPolyRingElem}, abs_tol::Int=R.prec, initial_prec::Int...) @@ -740,7 +740,7 @@ function factor(R::AcbField, f::Union{ZZPolyRingElem, QQPolyRingElem}, abs_tol:: d = Dict{acb_poly, Int}() Rt, t = polynomial_ring(R, String(var(parent(f))), cached = false) for (k,v) = g.fac - for r = roots(k, R) + for r = roots(R, k) d[t-r] = v end end @@ -753,7 +753,7 @@ function roots(R::ArbField, f::Union{ZZPolyRingElem, QQPolyRingElem}, abs_tol::I C = AcbField(precision(R)) for k = keys(g.fac) s, _ = signature(k) - rt = roots(k, C) + rt = roots(C, k) append!(r, map(real, rt[1:s])) end return r @@ -766,7 +766,7 @@ function factor(R::ArbField, f::Union{ZZPolyRingElem, QQPolyRingElem}, abs_tol:: C = AcbField(precision(R)) for (k,v) = g.fac s, t = signature(k) - r = roots(k, C) + r = roots(C, k) for i=1:s d[x-real(r[i])] = v end diff --git a/src/Misc/RelFiniteField.jl b/src/Misc/RelFiniteField.jl index d06c37ce27..20baff8d85 100644 --- a/src/Misc/RelFiniteField.jl +++ b/src/Misc/RelFiniteField.jl @@ -669,7 +669,7 @@ function absolute_field(F::RelFinField{T}; cached::Bool = true) where T <: FinFi K, gK = Native.FiniteField(p, d, "a", cached = cached) k, mk = absolute_field(base_field(F)) def_pol_new = map_coefficients(pseudo_inv(mk), defining_polynomial(F)) - img_gen_k = roots(defining_polynomial(k), K)[1] + img_gen_k = roots(K, defining_polynomial(k))[1] mp = hom(k, K, img_gen_k) g = map_coefficients(mp, def_pol_new) img_gen_F = roots(g)[1] diff --git a/src/Misc/nmod_poly.jl b/src/Misc/nmod_poly.jl index 8ea52d995c..5548bf1e2c 100644 --- a/src/Misc/nmod_poly.jl +++ b/src/Misc/nmod_poly.jl @@ -1276,7 +1276,7 @@ function FlintFiniteField(f::fqPolyRepPolyRingElem, s::AbstractString = "o"; cac k = base_ring(f) p = characteristic(k) K, o = FlintFiniteField(p, degree(k)*degree(f), s, cached = cached) - r = roots(f, K)[1] # not working, embeddings are missing + r = roots(K, f)[1] # not working, embeddings are missing fl || error("s.th. went wrong") return K, r end diff --git a/src/NumField/NfAbs/MPolyAbsFact.jl b/src/NumField/NfAbs/MPolyAbsFact.jl index f7333f853c..2405ef0391 100644 --- a/src/NumField/NfAbs/MPolyAbsFact.jl +++ b/src/NumField/NfAbs/MPolyAbsFact.jl @@ -444,7 +444,7 @@ function analytic_roots(f::ZZMPolyRingElem, r::ZZRingElem, pr::Int = 10; prec::I g = evaluate(f, [Hecke.Globals.Zx(r), gen(Hecke.Globals.Zx)]) @assert is_squarefree(g) C = AcbField(prec) - rt = Hecke.roots(g, C)[1:max_roots] + rt = Hecke.roots(C, g)[1:max_roots] @assert all(x->parent(x) == C, rt) Cs, s = power_series_ring(C, pr+2, "s", cached = false) Cst, t = polynomial_ring(Cs, cached = false) @@ -476,7 +476,7 @@ function symbolic_roots(f::ZZMPolyRingElem, r::ZZRingElem, pr::Int = 10; max_roo g = evaluate(f, [Hecke.Globals.Zx(r), gen(Hecke.Globals.Zx)]) @assert is_squarefree(g) lg = factor(g) - rt = vcat([Hecke.roots(x, number_field(x)[1]) for x = keys(lg.fac)]...) + rt = vcat([Hecke.roots(number_field(x)[1], x) for x = keys(lg.fac)]...) rt = rt[1:min(length(rt), max_roots)] RT = [] for i = 1:length(rt) diff --git a/src/NumField/NfAbs/NfAbs.jl b/src/NumField/NfAbs/NfAbs.jl index beb2e3c0eb..30b7093310 100644 --- a/src/NumField/NfAbs/NfAbs.jl +++ b/src/NumField/NfAbs/NfAbs.jl @@ -396,7 +396,7 @@ end function _issubfield(K::AnticNumberField, L::AnticNumberField) f = K.pol - R = roots(f, L, max_roots = 1) + R = roots(L, f, max_roots = 1) if isempty(R) return false, L() else @@ -875,7 +875,7 @@ The normal closure of $K$ together with the embedding map. """ function normal_closure(K::AnticNumberField) s = splitting_field(K.pol) - r = roots(K.pol, s)[1] + r = roots(s, K.pol)[1] return s, hom(K, s, r, check = false) end diff --git a/src/NumField/NfAbs/Simplify.jl b/src/NumField/NfAbs/Simplify.jl index 36448142df..a6a14d6e41 100644 --- a/src/NumField/NfAbs/Simplify.jl +++ b/src/NumField/NfAbs/Simplify.jl @@ -145,7 +145,7 @@ function _sieve_primitive_elements(B::Vector{NfAbsNSElem}) Ft = polynomial_ring(F, "t", cached = false)[1] rt = Vector{Vector{fqPolyRepFieldElem}}(undef, ngens(K)) for i = 1:length(pols) - rt[i] = roots(pols[i], F) + rt[i] = roots(F, pols[i]) end rt_all = Vector{Vector{fqPolyRepFieldElem}}(undef, degree(K)) ind = 1 @@ -219,7 +219,7 @@ function _sieve_primitive_elements(B::Vector{nf_elem}) Ft = polynomial_ring(F, "t", cached = false)[1] ap = zero(Ft) fit!(ap, degree(K)+1) - rt = roots(f, F) + rt = roots(F, f) n = degree(K) indices = Int[] @@ -358,7 +358,7 @@ function polredabs(K::AnticNumberField) Ft = polynomial_ring(F, "t", cached = false)[1] ap = zero(Ft) fit!(ap, degree(K)+1) - rt = roots(f, F) + rt = roots(F, f) n = degree(K) diff --git a/src/NumField/NfRel/NfRelNSMor.jl b/src/NumField/NfRel/NfRelNSMor.jl index 2464683fb9..1e2fb73be9 100644 --- a/src/NumField/NfRel/NfRelNSMor.jl +++ b/src/NumField/NfRel/NfRelNSMor.jl @@ -282,7 +282,7 @@ end function _automorphisms(L::NfRelNS{T}) where T Kx, _ = polynomial_ring(base_field(L), "x", cached = false) - rts = Vector{elem_type(L)}[roots(to_univariate(Kx, x), L) for x in L.pol] + rts = Vector{elem_type(L)}[roots(L, to_univariate(Kx, x)) for x in L.pol] auts = Vector{morphism_type(L)}(undef, prod(length(x) for x in rts)) ind = 1 it = cartesian_product_iterator([1:length(rts[i]) for i in 1:length(rts)], inplace = true) diff --git a/src/NumField/NfRel/Simplify.jl b/src/NumField/NfRel/Simplify.jl index 2baaa6cc71..bf2a9bdd58 100644 --- a/src/NumField/NfRel/Simplify.jl +++ b/src/NumField/NfRel/Simplify.jl @@ -152,7 +152,7 @@ function _setup_block_system(Lrel::NfRel{nf_elem}) Fpx = polynomial_ring(Fp, cached = false)[1] F = FlintFiniteField(p, abs_deg, "w", cached = false)[1] Fx = polynomial_ring(F, cached = false)[1] - rt_base_field = roots(Zx(K.pol), F) + rt_base_field = roots(F, Zx(K.pol)) tmp = Fpx() g = Lrel.pol rt = Dict{FqPolyRepFieldElem, Vector{FqPolyRepFieldElem}}() @@ -276,7 +276,7 @@ function _setup_block_system(Lrel::NfRelNS{nf_elem}) Fpx = polynomial_ring(Fp, cached = false)[1] F = FlintFiniteField(p, abs_deg, "w", cached = false)[1] Fx = polynomial_ring(F, cached = false)[1] - rt_base_field = roots(Zx(K.pol), F) + rt_base_field = roots(F, Zx(K.pol)) rt = Dict{FqPolyRepFieldElem, Vector{Vector{FqPolyRepFieldElem}}}() Rxy = polynomial_ring(F, ngens(Lrel), cached = false)[1] tmp = Fpx() diff --git a/src/NumField/SimpleNumField/Subfields.jl b/src/NumField/SimpleNumField/Subfields.jl index 095d283dbe..14fb0be2a2 100644 --- a/src/NumField/SimpleNumField/Subfields.jl +++ b/src/NumField/SimpleNumField/Subfields.jl @@ -22,7 +22,7 @@ function _principal_subfields_basis(K::SimpleNumField) #f in Kx #fk = Kx([coeff(f,i) for i in 0:n]) #determine roots - rts = roots(f, K) + rts = roots(K, f) ar_lin_fac = elem_type(Kx)[x - root for root in rts] fK = change_base_ring(K, f, parent = Kx) ##divide by roots diff --git a/src/NumField/Subfields.jl b/src/NumField/Subfields.jl index 14a556a9f5..b7b2b2220d 100644 --- a/src/NumField/Subfields.jl +++ b/src/NumField/Subfields.jl @@ -145,7 +145,7 @@ function _subfield_primitive_element_from_basis(K::AnticNumberField, as::Vector{ Ft = polynomial_ring(F, "t", cached = false)[1] ap = zero(Ft) fit!(ap, degree(K)+1) - rt = roots(f, F) + rt = roots(F, f) indices = Int[] for i = 1:length(as) b = _block(as[i], rt, ap) diff --git a/src/NumFieldOrd/NfOrd/Ideal/Prime.jl b/src/NumFieldOrd/NfOrd/Ideal/Prime.jl index 1da997a476..8b79f08406 100644 --- a/src/NumFieldOrd/NfOrd/Ideal/Prime.jl +++ b/src/NumFieldOrd/NfOrd/Ideal/Prime.jl @@ -1384,7 +1384,7 @@ function prime_dec_nonindex(O::NfAbsOrd{NfAbsNS,NfAbsNSElem}, p::IntegerUnion, d t = x[ti] g = gcd(d, degree(t[1])) d = lcm(d, degree(t[1])) - r = roots(t[1], Fq) + r = roots(Fq, t[1]) if g == 1 push!(rt, [r[1]]) else diff --git a/src/NumFieldOrd/NfOrd/TorsionUnits.jl b/src/NumFieldOrd/NfOrd/TorsionUnits.jl index e98a1df5ef..bfd8126e32 100644 --- a/src/NumFieldOrd/NfOrd/TorsionUnits.jl +++ b/src/NumFieldOrd/NfOrd/TorsionUnits.jl @@ -486,7 +486,7 @@ function _torsion_units_gen(K::NumField) end for i = v:-1:1 f = cyclotomic(Int(p)^i, x) - r = roots(f, K) + r = roots(K, f) if length(r) > 0 mul!(gen, gen, r[1]) ord *= Int(p)^(i) diff --git a/src/RCF/autos.jl b/src/RCF/autos.jl index b98494a113..a40343b056 100644 --- a/src/RCF/autos.jl +++ b/src/RCF/autos.jl @@ -277,7 +277,7 @@ end function rel_auto_generic(A::ClassField_pp) K = A.A - imgs = roots(K.pol, K) + imgs = roots(K, K.pol) homs = morphism_type(K)[hom(K, K, x, check = false) for x in imgs] return small_generating_set(homs, *)[1] end @@ -594,7 +594,7 @@ function extend_generic(A::ClassField, autos::Vector{NfToNfMor}, p::ZZRingElem) imgs = Vector{NfRelNSElem{nf_elem}}(undef, length(Cp)) for j = 1:length(gA) pol = map_coefficients(autos[i], Cp[j].A.pol) - imgs[j] = roots(pol, A)[1] + imgs[j] = roots(A, pol)[1] end rts[i] = imgs end diff --git a/test/Misc/Poly.jl b/test/Misc/Poly.jl index 205755ea01..92d292e38c 100644 --- a/test/Misc/Poly.jl +++ b/test/Misc/Poly.jl @@ -20,7 +20,7 @@ local l while p < 4096 - l = roots(f, ArbField(p, cached = false)) + l = roots(ArbField(p, cached = false), f) sgtpos = count(ispositive, l) sgtneg = count(isnegative, l) sgtz = count(iszero, l) diff --git a/test/NfAbs/Elem.jl b/test/NfAbs/Elem.jl index f6c42d3ef5..383916b327 100644 --- a/test/NfAbs/Elem.jl +++ b/test/NfAbs/Elem.jl @@ -157,7 +157,7 @@ end Qx, x = QQ["x"] f = x^3-39*x-65 K, a = number_field(f, "a") - r = @inferred roots(f, K) + r = @inferred roots(K, f) @test length(r) == 3 @test all(iszero, (f(b) for b in r)) end