From 8bb5a21e73674212ab629a7ce861d297290b3231 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20G=C3=B6ttgens?= Date: Wed, 18 Oct 2023 17:22:04 +0200 Subject: [PATCH] Remove many calls to `vcat(::Vector{...})` --- examples/Klueners.jl | 16 ++++++++-------- examples/MultiQuad.jl | 2 +- examples/polymake.jl | 8 ++++---- src/GenOrd/Ideal.jl | 4 ++-- src/GenOrd/Types.jl | 2 +- src/GrpAb/GrpAbFinGen.jl | 8 ++++---- src/GrpAb/Map.jl | 12 ++++++------ src/GrpAb/stable_sub.jl | 6 +++--- src/LocalField/neq.jl | 8 ++++---- src/Map/GrpAb.jl | 2 +- src/Misc/Poly.jl | 2 +- src/Misc/PseudoPolynomial.jl | 2 +- src/NumField/NfAbs/MPolyAbsFact.jl | 2 +- src/NumFieldOrd/NfOrd/LinearAlgebra.jl | 8 ++++---- src/NumFieldOrd/NfOrd/norm_eqn.jl | 2 +- src/conjugates.jl | 2 +- 16 files changed, 43 insertions(+), 43 deletions(-) diff --git a/examples/Klueners.jl b/examples/Klueners.jl index ceb98296fb..e164548709 100644 --- a/examples/Klueners.jl +++ b/examples/Klueners.jl @@ -186,7 +186,7 @@ function s3_extensions(k::AnticNumberField, d::ZZRingElem, _T::Int = 0) wild = [1*zk] for (P, e) = l3 b = floor(Int, 3//2*(1+e)) - wild = vcat([[P^i * x for x = wild] for i=1:b]...) + wild = reduce(vcat, [[P^i * x for x = wild] for i=1:b]) end sort!(wild, lt = (a,b) -> norm(a) <= norm(b)) @@ -282,12 +282,12 @@ function s3_extensions(k::AnticNumberField, d::ZZRingElem, _T::Int = 0) return end - m2, map2 = sub(R.M, vcat([lift(mat(x[2])) for x = i2]), !false) + m2, map2 = sub(R.M, reduce(vcat, [lift(mat(x[2])) for x = i2]), !false) sub_m2 = Hecke.stable_subgroups(m2, [GrpAbFinGenMap(map2*x*pseudo_inv(map2)) for x = R.ac], quotype = [3, 3], op = (R, x) -> sub(R, x, !false)) m1 = [] target_ind = 0 for (k,v) = ii - m, mp = sub(R.M, vcat([lift(mat(i1[x][2])) for x = v])) + m, mp = sub(R.M, reduce(vcat, [lift(mat(i1[x][2])) for x = v])) push!(m1, mp) if target == k target_ind = length(m1) @@ -302,7 +302,7 @@ function s3_extensions(k::AnticNumberField, d::ZZRingElem, _T::Int = 0) if length(m1) == 1 rest = sub(R.M, [R.M[0]]) else - rest = sub(R.M, vcat([matrix(m1[j]) for j=1:length(m1) if i != j]), !false) + rest = sub(R.M, reduce(vcat, [matrix(m1[j]) for j=1:length(m1) if i != j]), !false) end for s = sub_m2 rr = rest[1]+map2(s[2](s[1])[1])[1] @@ -534,7 +534,7 @@ function s3_extensions2(k::AnticNumberField, d::ZZRingElem, _T::Int = 0) wild = [1*zk] for (P, e) = l3 b = floor(Int, 3//2*(1+e)) - wild = vcat([[P^i * x for x = wild] for i=1:b]...) + wild = reduce(vcat, [[P^i * x for x = wild] for i=1:b]) end sort!(wild, lt = (a,b) -> norm(a) <= norm(b)) _wild = sort(collect(Set(minimum(x) for x = wild))) @@ -589,12 +589,12 @@ function s3_extensions2(k::AnticNumberField, d::ZZRingElem, _T::Int = 0) return end - m2, map2 = sub(R.M, vcat([lift(mat(x[2])) for x = i2]), !false) + m2, map2 = sub(R.M, reduce(vcat, [lift(mat(x[2])) for x = i2]), !false) sub_m2 = Hecke.stable_subgroups(m2, [GrpAbFinGenMap(map2*x*pseudo_inv(map2)) for x = R.ac], quotype = [3, 3], op = (R, x) -> sub(R, x, !false)) m1 = [] target_ind = 0 for (k,v) = ii - m, mp = sub(R.M, vcat([lift(mat(i1[x][2])) for x = v])) + m, mp = sub(R.M, reduce(vcat, [lift(mat(i1[x][2])) for x = v])) push!(m1, mp) if target == k target_ind = length(m1) @@ -609,7 +609,7 @@ function s3_extensions2(k::AnticNumberField, d::ZZRingElem, _T::Int = 0) if length(m1) == 1 rest = sub(R.M, [R.M[0]]) else - rest = sub(R.M, vcat([matrix(m1[j]) for j=1:length(m1) if i != j]), !false) + rest = sub(R.M, reduce(vcat, [matrix(m1[j]) for j=1:length(m1) if i != j]), !false) end for s = sub_m2 rr = rest[1]+map2(s[2](s[1])[1])[1] diff --git a/examples/MultiQuad.jl b/examples/MultiQuad.jl index e613880c4a..ac6fda4e4d 100644 --- a/examples/MultiQuad.jl +++ b/examples/MultiQuad.jl @@ -58,7 +58,7 @@ function multi_quad_with_emb(d::Vector{ZZRingElem}) for i=1:div(length(lp), 2) K, m1, m2 = compositum(lp[2*i-1], lp[2*i]) push!(ld, K) - push!(lau, vcat([ m1(x) for x = aut[2*i-1]], [ m2(x) for x = aut[2*i]])) + push!(lau, vcat([m1(x) for x = aut[2*i-1]], [m2(x) for x = aut[2*i]])) end if isodd(length(lp)) push!(ld, lp[end]) diff --git a/examples/polymake.jl b/examples/polymake.jl index 3209771230..6a26018019 100644 --- a/examples/polymake.jl +++ b/examples/polymake.jl @@ -141,10 +141,10 @@ function norm_equation2_fac_elem(R::NfAbsOrd, k::ZZRingElem; abs::Bool = false) @assert Hecke.is_maximal(R) lp = factor(k*R) s, ms = Hecke.sunit_mod_units_group_fac_elem(collect(keys(lp))) - C = vcat([matrix(FlintZZ, 1, ngens(s), [valuation(ms(s[i]), p) for i=1:ngens(s)]) for p = keys(lp)]) + C = reduce(vcat, [matrix(FlintZZ, 1, ngens(s), [valuation(ms(s[i]), p) for i=1:ngens(s)]) for p = keys(lp)]) lp = factor(k) - A = vcat([matrix(FlintZZ, 1, ngens(s), [valuation(Hecke.factored_norm(ms(s[i])), p) for i=1:ngens(s)]) for p = keys(lp.fac)]) + A = reduce(vcat, [matrix(FlintZZ, 1, ngens(s), [valuation(Hecke.factored_norm(ms(s[i])), p) for i=1:ngens(s)]) for p = keys(lp.fac)]) b = matrix(FlintZZ, length(lp.fac), 1, [valuation(k, p) for p = keys(lp.fac)]) so = solve_mixed(A, b, C) @@ -225,9 +225,9 @@ function norm_equation_fac_elem(R::Hecke.NfRelOrd{nf_elem,Hecke.NfOrdFracIdl}, a q, mms = snf(q) mq = mq*inv(mms) - C = vcat([matrix(FlintZZ, 1, ngens(q), [valuation(mS(preimage(mq, q[i])), p) for i=1:ngens(q)]) for p = keys(lp)]) + C = reduce(vcat, [matrix(FlintZZ, 1, ngens(q), [valuation(mS(preimage(mq, q[i])), p) for i=1:ngens(q)]) for p = keys(lp)]) - A = vcat([matrix(FlintZZ, 1, ngens(q), [valuation(norm(mkK, mS(preimage(mq, g))), p) for g in gens(q)]) for p = keys(la)]) + A = reduce(vcat, [matrix(FlintZZ, 1, ngens(q), [valuation(norm(mkK, mS(preimage(mq, g))), p) for g in gens(q)]) for p = keys(la)]) b = matrix(FlintZZ, length(la), 1, [valuation(a, p) for p = keys(la)]) so = solve_mixed(A, b, C) diff --git a/src/GenOrd/Ideal.jl b/src/GenOrd/Ideal.jl index d6688fdd75..b3648f5680 100644 --- a/src/GenOrd/Ideal.jl +++ b/src/GenOrd/Ideal.jl @@ -178,7 +178,7 @@ function assure_has_basis_matrix(A::GenOrdIdl) @hassert :NfOrd 1 has_2_elem(A) - V = hnf(vcat([representation_matrix(x) for x in [O(A.gen_one),A.gen_two]]),:lowerleft) + V = hnf(reduce(vcat, [representation_matrix(x) for x in [O(A.gen_one),A.gen_two]]),:lowerleft) d = ncols(V) A.basis_matrix = V[d+1:2*d,1:d] return nothing @@ -272,7 +272,7 @@ function Base.:(*)(a::GenOrdIdl, b::GenOrdIdl) O = order(a) Ma = basis_matrix(a) Mb = basis_matrix(b) - V = hnf(vcat([Mb*representation_matrix(O([Ma[i,o] for o in 1:ncols(Ma)])) for i in 1:ncols(Ma)]),:lowerleft) + V = hnf(reduce(vcat, [Mb*representation_matrix(O([Ma[i,o] for o in 1:ncols(Ma)])) for i in 1:ncols(Ma)]),:lowerleft) d = ncols(V) return GenOrdIdl(O, V[d*(d-1)+1:d^2,1:d]) end diff --git a/src/GenOrd/Types.jl b/src/GenOrd/Types.jl index e9ef7084f7..817d69cfb5 100644 --- a/src/GenOrd/Types.jl +++ b/src/GenOrd/Types.jl @@ -138,7 +138,7 @@ end function GenOrdIdl(O::GenOrd, T::Vector{<:GenOrdElem}) @assert all(x -> parent(x) === O, T) # One should do this block by block instead of the big matrix - V = hnf(vcat([representation_matrix(O) for x in T]), :lowerleft) + V = hnf(reduce(vcat, [representation_matrix(O) for x in T]), :lowerleft) d = ncols(V) n = length(T) return GenOrdIdl(O, V[((n - 1)*d + 1):(n*d), :]) diff --git a/src/GrpAb/GrpAbFinGen.jl b/src/GrpAb/GrpAbFinGen.jl index 3d867cee27..f0b2e7fef7 100644 --- a/src/GrpAb/GrpAbFinGen.jl +++ b/src/GrpAb/GrpAbFinGen.jl @@ -784,7 +784,7 @@ function matrix(M::Map{GrpAbFinGen, GrpAbFinGen}) return M.map end G = domain(M) - return vcat([M(g).coeff for g = gens(G)]) + return reduce(vcat, [M(g).coeff for g = gens(G)]) end function matrix(M::Generic.IdentityMap{GrpAbFinGen}) @@ -814,7 +814,7 @@ function hom(G::GrpAbFinGen, H::GrpAbFinGen, A::Matrix{ <: Map{GrpAbFinGen, GrpA error("both groups need to be direct products") end @assert all(i -> domain(A[i[1], i[2]]) == dG[i[1]] && codomain(A[i[1], i[2]]) == dH[i[2]], Base.Iterators.ProductIterator((1:r, 1:c))) - h = hom(G, H, vcat([reduce(hcat, [matrix(A[i,j]) for j=1:c]) for i=1:r])) + h = hom(G, H, reduce(vcat, [reduce(hcat, [matrix(A[i,j]) for j=1:c]) for i=1:r])) return h end @@ -823,7 +823,7 @@ function _flat(G::GrpAbFinGen) if s === nothing return [G] end - return vcat([_flat(x) for x = s]...) + return reduce(vcat, [_flat(x) for x = s]) end function _tensor_flat(G::GrpAbFinGen) @@ -831,7 +831,7 @@ function _tensor_flat(G::GrpAbFinGen) if s === nothing return [G] end - return vcat([_tensor_flat(x) for x = s]...) + return reduce(vcat, [_tensor_flat(x) for x = s]) end diff --git a/src/GrpAb/Map.jl b/src/GrpAb/Map.jl index 1a37d1fb62..eeb0cf1071 100644 --- a/src/GrpAb/Map.jl +++ b/src/GrpAb/Map.jl @@ -86,10 +86,10 @@ function haspreimage(M::GrpAbFinGenMap, a::Vector{GrpAbFinGenElem}) isdefined(H, :exponent) && G.exponent == H.exponent e = G.exponent RR = Native.GF(Int(e)) - fl, p = can_solve_with_solution(map_entries(RR, m), map_entries(RR, vcat([x.coeff for x = a])), side = :left) + fl, p = can_solve_with_solution(map_entries(RR, m), map_entries(RR, reduce(vcat, [x.coeff for x = a])), side = :left) p = map_entries(x -> lift(x), p) else - fl, p = can_solve_with_solution(m, vcat([x.coeff for x = a]), side = :left) + fl, p = can_solve_with_solution(m, reduce(vcat, [x.coeff for x = a]), side = :left) end if fl @@ -159,7 +159,7 @@ function hom(A::Vector{GrpAbFinGenElem}, B::Vector{GrpAbFinGenElem}; check::Bool return hom(GA, GB, matrix(FlintZZ, ngens(GA), 0, ZZRingElem[]), check = check) end - M = vcat([hcat(A[i].coeff, B[i].coeff) for i = 1:length(A)]) + M = reduce(vcat, [hcat(A[i].coeff, B[i].coeff) for i = 1:length(A)]) RA = rels(GA) M = vcat(M, hcat(RA, zero_matrix(FlintZZ, nrows(RA), ncols(B[1].coeff)))) if isdefined(GB, :exponent) && nrows(M) >= ncols(M) @@ -180,7 +180,7 @@ Creates the homomorphism which maps $G[i]$ to $B[i]$. function hom(G::GrpAbFinGen, B::Vector{GrpAbFinGenElem}; check::Bool = true) GB = parent(B[1]) @assert length(B) == ngens(G) - M = vcat([B[i].coeff for i = 1:length(B)]) + M = reduce(vcat, [B[i].coeff for i = 1:length(B)]) h = hom(G, GB, M, check = check) return h end @@ -191,7 +191,7 @@ function hom(G::GrpAbFinGen, H::GrpAbFinGen, B::Vector{GrpAbFinGenElem}; check:: if length(B) == 0 M = zero_matrix(ZZ, ngens(G), ngens(H)) else - M = vcat([x.coeff for x = B]...) + M = reduce(vcat, [x.coeff for x = B]) end #= M = zero_matrix(FlintZZ, ngens(G), ngens(H)) @@ -620,7 +620,7 @@ function hom(G::GrpAbFinGen, H::GrpAbFinGen; task::Symbol = :map) if ngens(sG) == 0 return R[0] end - local mm = transpose(vcat([preimage(mH, r(mG(sG[i]))).coeff for i = 1:ngens(sG)])) + local mm = transpose(reduce(vcat, [preimage(mH, r(mG(sG[i]))).coeff for i = 1:ngens(sG)])) return R([divexact(mm[j,i], c[(i-1)*m+j]) for i=1:n for j=1:m]) end return R, MapFromFunc(R, MapParent(G, H, "homomorphisms"), phi, ihp) diff --git a/src/GrpAb/stable_sub.jl b/src/GrpAb/stable_sub.jl index 2a37b66b47..193cfa8795 100644 --- a/src/GrpAb/stable_sub.jl +++ b/src/GrpAb/stable_sub.jl @@ -334,7 +334,7 @@ function maximal_submodules(M::ZpnGModule, ind::Int=-1) end mH = Hecke.GrpAbFinGenMap(S.V,K,A) sg, msg = kernel(mH) - push!(list, vcat([ (mS(msg(y))).coeff for y in gens(sg)])) + push!(list, reduce(vcat, [(mS(msg(y))).coeff for y in gens(sg)])) end return list @@ -762,7 +762,7 @@ function submodules_order(M::ZpnGModule, ord::Int) MatSnf=map(mS.map, R) for j=1:length(list) - list[j]=list[j]*MatSnf #vcat([W(( mS( S.V([list[j][k,i].data for i=1:ngens(S.V)]))).coeff) for k=1:nrows(list[j])]) + list[j]=list[j]*MatSnf #reduce(vcat, [W(( mS( S.V([list[j][k,i].data for i=1:ngens(S.V)]))).coeff) for k=1:nrows(list[j])]) end # @@ -771,7 +771,7 @@ function submodules_order(M::ZpnGModule, ord::Int) minlist=minimal_submodules(N,ord, lf) for x in minlist - push!(list, vcat([W((mS( S.V(ZZRingElem[FlintZZ(coeff(x[k,i],0))*((M.p)^(v[i]-1)) for i=1:ngens(S.V)]))).coeff) for k=1:nrows(x) ])) + push!(list, reduce(vcat, [W((mS( S.V(ZZRingElem[FlintZZ(coeff(x[k,i],0))*((M.p)^(v[i]-1)) for i=1:ngens(S.V)]))).coeff) for k=1:nrows(x) ])) end return (x for x in list) diff --git a/src/LocalField/neq.jl b/src/LocalField/neq.jl index bb183d59ed..fb7a6d8a27 100644 --- a/src/LocalField/neq.jl +++ b/src/LocalField/neq.jl @@ -205,7 +205,7 @@ end function coordinates(a::Union{qadic, LocalFieldElem}, k) c = [coeff(a, i) for i=0:degree(parent(a))-1] while absolute_degree(parent(c[1])) > absolute_degree(k) - c = vcat([[coeff(x, i) for i=0:(degree(parent(c[1]))-1)] for x = c]...) + c = reduce(vcat, [[coeff(x, i) for i=0:(degree(parent(c[1]))-1)] for x = c]) end if parent(c[1]) != k if isa(parent(c[1]), FlintQadicField) && degree(parent(c[1])) ==1 @@ -300,7 +300,7 @@ function solve_1_units(a::Vector{T}, b::T) where T end expo += s.coeff * expo_mult - expo_mult = vcat([_mk(x).coeff for x = gens(_k)]...)*expo_mult + expo_mult = reduce(vcat, [_mk(x).coeff for x = gens(_k)])*expo_mult cur_a = [prod(cur_a[i]^_mk(x)[i] for i=1:length(cur_a)) for x = gens(_k)] # @show [e*valuation(x-1) for x = cur_a] @@ -562,8 +562,8 @@ struct MapEvalCtx mat = matrix(prime_field(domain(M)), absolute_degree(domain(M)), absolute_degree(codomain(M)), - vcat([absolute_coordinates(M(x)) - for x = absolute_basis(domain(M))]...)) + reduce(vcat, [absolute_coordinates(M(x)) + for x = absolute_basis(domain(M))])) return new(domain(M), codomain(M), mat) end diff --git a/src/Map/GrpAb.jl b/src/Map/GrpAb.jl index 430a961cea..6733d48cc6 100644 --- a/src/Map/GrpAb.jl +++ b/src/Map/GrpAb.jl @@ -79,7 +79,7 @@ mutable struct GrpAbFinGenMap <: Map{GrpAbFinGen, GrpAbFinGen, if ngens(D) == 0 r.map = matrix(FlintZZ, 0, ngens(codomain(M)), ZZRingElem[]) else - r.map = vcat([M(D[i]).coeff for i=1:ngens(D)]) + r.map = reduce(vcat, [M(D[i]).coeff for i=1:ngens(D)]) end return r end diff --git a/src/Misc/Poly.jl b/src/Misc/Poly.jl index cd017a572d..f72f2e4c13 100644 --- a/src/Misc/Poly.jl +++ b/src/Misc/Poly.jl @@ -723,7 +723,7 @@ end function roots(R::AcbField, f::Union{ZZPolyRingElem, QQPolyRingElem}, abs_tol::Int=R.prec, initial_prec::Int...) lf = factor(f) - return map(R, vcat([_roots(g, abs_tol, initial_prec...) for g = keys(lf.fac) if degree(g) > 0]...)) + return map(R, reduce(vcat, [_roots(g, abs_tol, initial_prec...) for g = keys(lf.fac) if degree(g) > 0])) end function _roots(f::QQPolyRingElem, ::PosInf; prec::Int=64) diff --git a/src/Misc/PseudoPolynomial.jl b/src/Misc/PseudoPolynomial.jl index bc786f7afa..142a1ba9bb 100644 --- a/src/Misc/PseudoPolynomial.jl +++ b/src/Misc/PseudoPolynomial.jl @@ -82,7 +82,7 @@ function _contains(a::nf_elem, I) d = lcm(dena, lcm([denominator(id) for id in I])) v = matrix(FlintZZ, 1, degree(OK), coordinates(OK(d * a))) @assert all(isone(denominator(basis_matrix(d * id))) for id in I) - M = vcat([numerator(basis_matrix(d * id)) for id in I ]) + M = reduce(vcat, [numerator(basis_matrix(d * id)) for id in I ]) b, w = cansolve(M', v') @assert b res = nf_elem[] diff --git a/src/NumField/NfAbs/MPolyAbsFact.jl b/src/NumField/NfAbs/MPolyAbsFact.jl index 893b31c883..b081b7b076 100644 --- a/src/NumField/NfAbs/MPolyAbsFact.jl +++ b/src/NumField/NfAbs/MPolyAbsFact.jl @@ -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(number_field(x)[1], x) for x = keys(lg.fac)]...) + rt = reduce(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/NumFieldOrd/NfOrd/LinearAlgebra.jl b/src/NumFieldOrd/NfOrd/LinearAlgebra.jl index f494f7ebe2..0ff99adcb3 100644 --- a/src/NumFieldOrd/NfOrd/LinearAlgebra.jl +++ b/src/NumFieldOrd/NfOrd/LinearAlgebra.jl @@ -1639,14 +1639,14 @@ function vcat(P::PMat, Q::PMat) end function vcat(A::Vector{ <: PMat }) - m = vcat([ P.matrix for P in A ]) - c = vcat([ P.coeffs for P in A ]...) + m = reduce(vcat, [P.matrix for P in A]) + c = reduce(vcat, [P.coeffs for P in A]) return pseudo_matrix(m, c) end function vcat(A::PMat...) - m = vcat([ P.matrix for P in A ]) - c = vcat([ P.coeffs for P in A ]...) + m = reduce(vcat, [P.matrix for P in A]) + c = reduce(vcat, [P.coeffs for P in A]) return pseudo_matrix(m, c) end diff --git a/src/NumFieldOrd/NfOrd/norm_eqn.jl b/src/NumFieldOrd/NfOrd/norm_eqn.jl index 3c3570e61b..f1cf7cf331 100644 --- a/src/NumFieldOrd/NfOrd/norm_eqn.jl +++ b/src/NumFieldOrd/NfOrd/norm_eqn.jl @@ -124,7 +124,7 @@ function is_norm(K::AnticNumberField, a::ZZRingElem; extra::Vector{ZZRingElem}=Z #@assert norm(evaluate(x)) == evaluate(image(mu, h[end])) end s, ms = sub(u, h) - mp = GrpAbFinGenMap(U, u, vcat([x.coeff for x=h])) + mp = GrpAbFinGenMap(U, u, reduce(vcat, [x.coeff for x=h])) fl, p = haspreimage(mp, preimage(mu, a)) if fl diff --git a/src/conjugates.jl b/src/conjugates.jl index 4983b594cc..43a4e82db0 100644 --- a/src/conjugates.jl +++ b/src/conjugates.jl @@ -149,7 +149,7 @@ function minkowski_matrix(K::AnticNumberField, p::Int = 50) g = gen(K) n = degree(K) - mm = vcat([minkowski(g^i, p) for i=0:n-1]) + mm = reduce(vcat, [minkowski(g^i, p) for i=0:n-1]) m = Array{BigFloat}(undef, n, n) for i=1:n for j=1:n