Skip to content

Commit d6610ba

Browse files
authored
fix: remove more illegal .fac access (#2162)
1 parent f1df4b3 commit d6610ba

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

src/generic/Misc/Poly.jl

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ function is_power(a::PolyRingElem, n::Int)
1212
fl, x = is_power(leading_coefficient(a), n)
1313
fl || return false, a
1414
f = factor(a)
15-
all(i -> i % n == 0, values(f.fac)) || return false, a
16-
return true, x*prod(p^div(k, n) for (p, k) = f.fac)
15+
all(i % n == 0 for (_, i) in f) || return false, a
16+
return true, x*prod(p^div(k, n) for (p, k) = f)
1717
end
1818

1919
################################################################################
@@ -31,15 +31,16 @@ end
3131
function factor(R::Ring, f::Union{FracElem, Rational})
3232
fn = factor(R(numerator(f)))
3333
fd = factor(R(denominator(f)))
34-
fn.unit = divexact(fn.unit, fd.unit)
35-
for (k,v) = fd.fac
36-
if Base.haskey(fn.fac, k)
37-
fn.fac[k] -= v
34+
un = divexact(unit(fn), unit(fd))
35+
fndc = Dict{elem_type(R), Int}(p => e for (p, e) in fn)
36+
for (k, v) = fd
37+
if Base.haskey(fndc, k)
38+
fndc[k] -= v
3839
else
39-
fn.fac[k] = -v
40+
fndc[k] = -v
4041
end
4142
end
42-
return fn
43+
return Fac(un, sort!(collect(fndc); by = x -> pretty_sort(x[1])))
4344
end
4445

4546
################################################################################

src/generic/imports.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ import ..AbstractAlgebra: pol_length
194194
import ..AbstractAlgebra: pow!
195195
import ..AbstractAlgebra: preimage
196196
import ..AbstractAlgebra: pretty
197+
import ..AbstractAlgebra: pretty_sort
197198
import ..AbstractAlgebra: primpart
198199
import ..AbstractAlgebra: promote_rule
199200
import ..AbstractAlgebra: pseudorem

0 commit comments

Comments
 (0)