@@ -9,8 +9,7 @@ struct Polynomial{C, T} <: AbstractPolynomial{T}
99 x:: MonomialVector{C}
1010
1111 function Polynomial {C, T} (a:: Vector{T} , x:: MonomialVector{C} ) where {C, T}
12- if length (a) != length (x) throw (ArgumentError (" There should be as many coefficient than monomials" ))
13- end
12+ length (a) == length (x) || throw (ArgumentError (" There should be as many coefficient than monomials" ))
1413 zeroidx = Int[]
1514 for (i,α) in enumerate (a)
1615 if iszero (α)
@@ -20,7 +19,7 @@ struct Polynomial{C, T} <: AbstractPolynomial{T}
2019 if ! isempty (zeroidx)
2120 isnz = ones (Bool, length (a))
2221 isnz[zeroidx] = false
23- nzidx = find (isnz)
22+ nzidx = findall (isnz)
2423 a = a[nzidx]
2524 x = x[nzidx]
2625 end
@@ -41,18 +40,19 @@ Polynomial{C, T}(a::AbstractVector, X::DMonoVec) where {C, T} = Polynomial{C, T}
4140Polynomial {C} (a:: Vector{T} , x) where {C, T} = Polynomial {C, T} (a, x)
4241Polynomial (af:: Union{Function, Vector} , x:: DMonoVec{C} ) where {C} = Polynomial {C} (af, x)
4342
44- Polynomial {C} (α) where {C} = Polynomial (Term {C} (α))
45- Polynomial (x:: Union{PolyVar{C}, Monomial{C}} ) where {C} = Polynomial (Term {C} (x))
43+ Polynomial {C, T} (p:: Polynomial{C, T} ) where {C, T} = p
44+ Polynomial {C, T} (p:: Polynomial{C, S} ) where {C, S, T} = Polynomial {C} (Vector {T} (p. a), p. x)
45+ Polynomial {C, T} (p:: AbstractPolynomialLike ) where {C, T} = Polynomial {C, T} (polynomial (p, T))
46+ Polynomial {C, T} (t:: Term{C} ) where {C, T} = Polynomial {C, T} ([T (t. α)], [t. x])
47+ Polynomial {C, T} (m:: DMonomialLike{C} ) where {C, T} = Polynomial (Term {C, T} (m))
48+ Polynomial {C, T} (α) where {C, T} = Polynomial (Term {C, T} (α))
49+
4650Polynomial {C} (p:: Union{Polynomial{C}, Term{C}, Monomial{C}, PolyVar{C}} ) where {C} = Polynomial (p)
51+ Polynomial {C} (α) where {C} = Polynomial (Term {C} (α))
4752
4853Polynomial (p:: Polynomial ) = p
4954Polynomial (t:: Term{C, T} ) where {C, T} = Polynomial {C, T} ([t. α], [t. x])
50- Base. convert (:: Type{Polynomial{C, T}} , α) where {C, T} = Polynomial (Term {C, T} (α))
51- Base. convert (:: Type{Polynomial{C, T}} , m:: DMonomialLike{C} ) where {C, T} = Polynomial (Term {C, T} (m))
52- Base. convert (:: Type{Polynomial{C, T}} , t:: Term{C} ) where {C, T} = Polynomial {C, T} ([T (t. α)], [t. x])
53- Base. convert (:: Type{Polynomial{C, T}} , p:: Polynomial{C, T} ) where {C, T} = p
54- Base. convert (:: Type{Polynomial{C, T}} , p:: Polynomial{C, S} ) where {C, S, T} = Polynomial {C} (Vector {T} (p. a), p. x)
55- Base. convert (:: Type{Polynomial{C, T}} , p:: AbstractPolynomialLike ) where {C, T} = Polynomial {C, T} (polynomial (p, T))
55+ Polynomial (x:: Union{PolyVar{C}, Monomial{C}} ) where {C} = Polynomial (Term {C} (x))
5656
5757# Base.convert(::Type{TermContainer{C, T}}, p::Polynomial{C}) where {C, T} = Polynomial{C, T}(p)
5858
@@ -168,8 +168,8 @@ function MP.polynomial(Q::AbstractMatrix, mv::MonomialVector{C}, ::Type{T}) wher
168168 n = length (mv)
169169 if C
170170 N = trimap (n, n, n)
171- Z = Vector {Vector{Int}} (N)
172- a = Vector {T} (N)
171+ Z = Vector {Vector{Int}} (uninitialized, N)
172+ a = Vector {T} (uninitialized, N)
173173 for i in 1 : n
174174 for j in i: n
175175 k = trimap (i, j, n)
@@ -184,8 +184,8 @@ function MP.polynomial(Q::AbstractMatrix, mv::MonomialVector{C}, ::Type{T}) wher
184184 v = _vars (mv)
185185 else
186186 N = n^ 2
187- x = Vector {Monomial{C}} (N)
188- a = Vector {T} (N)
187+ x = Vector {Monomial{C}} (uninitialized, N)
188+ a = Vector {T} (uninitialized, N)
189189 offset = 0
190190 for i in 1 : n
191191 # for j in 1:n wouldn't be cache friendly for Q
0 commit comments