diff --git a/src/operators.jl b/src/operators.jl index a0b8d033..fa8f55cc 100644 --- a/src/operators.jl +++ b/src/operators.jl @@ -91,7 +91,9 @@ function polynomial_merge!( combine::F6, keep::F7, resize::F8, -) where {F1,F2,F3,F4,F5,F6,F7,F8} + ::Type{term_type} = n1 > 0 ? typeof(get1(1)) : + n2 > 0 ? typeof(get2(1)) : Nothing, +) where {F1,F2,F3,F4,F5,F6,F7,F8,term_type} buffer = nothing i = j = k = 1 # Invariant: @@ -109,7 +111,7 @@ function polynomial_merge!( if k == i t0 = get1(i) if buffer === nothing - buffer = DataStructures.Queue{typeof(t0)}() + buffer = DataStructures.Queue{term_type}() end push!(buffer, t0) i += 1 diff --git a/test/commutative/complex.jl b/test/commutative/complex.jl index a69e4b61..2765822b 100644 --- a/test/commutative/complex.jl +++ b/test/commutative/complex.jl @@ -6,7 +6,7 @@ @test !isconj(a) @test ordinary_variable(a) == a @test conj(a) == real(a) == a - @test_broken iszero(imag(a)) # no iszero for MA.Zero + @test iszero(imag(a)) @test isreal(a^3 + 5a^2 + 4a) @test !isreal(a^3 + 5im * a^2 + 4a) diff --git a/test/commutative/gcd.jl b/test/commutative/gcd.jl index c5c43a00..fe7c043a 100644 --- a/test/commutative/gcd.jl +++ b/test/commutative/gcd.jl @@ -291,14 +291,15 @@ end end end end - @testset "Non-concrete polynomial GCD" begin - Mod.@polyvar p q - p1 = MP.polynomial(p^2 + q^2, Number) - p2 = MP.polynomial(p * q, Number) - g = @inferred gcd(p1, p2) - @test isone(g) + if nameof(Mod) == :DynamicPolynomials + @testset "Non-concrete polynomial GCD" begin + Mod.@polyvar p q + p1 = MP.polynomial(p^2 + q^2, Number) + p2 = MP.polynomial(p * q, Number) + g = @inferred gcd(p1, p2) + @test isone(g) + end end - @testset "Complex coefficient GCD" begin Mod.@polyvar p q p1 = MP.polynomial(p^2 + q^2, ComplexF64)