Skip to content

Commit d478688

Browse files
fix: handle non-concrete polynomials in polynomial_merge! (#339)
* fix: handle non-concrete polynomials in `polynomial_merge!` * test: mark test as no longer broken * test: run non-concrete polynomial GCD test only for DynamicPolynomials
1 parent ce49572 commit d478688

File tree

3 files changed

+13
-10
lines changed

3 files changed

+13
-10
lines changed

src/operators.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,9 @@ function polynomial_merge!(
9191
combine::F6,
9292
keep::F7,
9393
resize::F8,
94-
) where {F1,F2,F3,F4,F5,F6,F7,F8}
94+
::Type{term_type} = n1 > 0 ? typeof(get1(1)) :
95+
n2 > 0 ? typeof(get2(1)) : Nothing,
96+
) where {F1,F2,F3,F4,F5,F6,F7,F8,term_type}
9597
buffer = nothing
9698
i = j = k = 1
9799
# Invariant:
@@ -109,7 +111,7 @@ function polynomial_merge!(
109111
if k == i
110112
t0 = get1(i)
111113
if buffer === nothing
112-
buffer = DataStructures.Queue{typeof(t0)}()
114+
buffer = DataStructures.Queue{term_type}()
113115
end
114116
push!(buffer, t0)
115117
i += 1

test/commutative/complex.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
@test !isconj(a)
77
@test ordinary_variable(a) == a
88
@test conj(a) == real(a) == a
9-
@test_broken iszero(imag(a)) # no iszero for MA.Zero
9+
@test iszero(imag(a))
1010
@test isreal(a^3 + 5a^2 + 4a)
1111
@test !isreal(a^3 + 5im * a^2 + 4a)
1212

test/commutative/gcd.jl

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -291,14 +291,15 @@ end
291291
end
292292
end
293293
end
294-
@testset "Non-concrete polynomial GCD" begin
295-
Mod.@polyvar p q
296-
p1 = MP.polynomial(p^2 + q^2, Number)
297-
p2 = MP.polynomial(p * q, Number)
298-
g = @inferred gcd(p1, p2)
299-
@test isone(g)
294+
if nameof(Mod) == :DynamicPolynomials
295+
@testset "Non-concrete polynomial GCD" begin
296+
Mod.@polyvar p q
297+
p1 = MP.polynomial(p^2 + q^2, Number)
298+
p2 = MP.polynomial(p * q, Number)
299+
g = @inferred gcd(p1, p2)
300+
@test isone(g)
301+
end
300302
end
301-
302303
@testset "Complex coefficient GCD" begin
303304
Mod.@polyvar p q
304305
p1 = MP.polynomial(p^2 + q^2, ComplexF64)

0 commit comments

Comments
 (0)