Skip to content

Commit 6ba0e52

Browse files
bugfix in SubResultant
1 parent 6a17e76 commit 6ba0e52

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/general.jl

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -282,15 +282,21 @@ function SubResultant(A::PolyElem{T}, B::PolyElem{T}) where T <: RingElement
282282
return constant_coefficient(Rs[k+1]), vcat(Rs[1:k+1], zero_poly)
283283
end
284284
s = 1
285-
c = T_one
285+
c_num = T_one
286+
c_den = T_one
286287
for j=1:k-1
287288
if isodd(degree(Rs[j-1+1])) && isodd(degree(Rs[j+1]))
288289
s = -s
290+
end
291+
d = -(1+δ[j])*degree(Rs[j+1]) + degree(Rs[j-1+1]) - degree(Rs[j+1+1])
292+
c_num *= β[j]^degree(Rs[j+1])
293+
if d>=0
294+
c_num *= r[j]^d
295+
else
296+
c_den *= r[j]^(-d)
289297
end
290-
q = divexact(β[j], r[j]^(1+δ[j])) # only exact if T is field
291-
c = c*q^degree(Rs[j+1])*r[j]^(degree(Rs[j-1+1])-degree(Rs[j+1+1]))
292298
end
293-
constant_coefficient((s*c)*Rs[k+1]^degree(Rs[k-1+1])), vcat(Rs[1:k+1], zero_poly)
299+
constant_coefficient(divexact(s*c_num*Rs[k+1]^degree(Rs[k-1+1]), c_den)), vcat(Rs[1:k+1], zero_poly)
294300
end
295301

296302
function Squarefree_Musser(A::PolyElem{T}) where T <: RingElement

0 commit comments

Comments
 (0)