2929
3030iscomm (:: Type{Polynomial{C, T}} ) where {C, T} = C
3131
32+ Base. broadcastable (p:: Polynomial ) = Ref (p)
3233Base. copy (p:: Polynomial{C, T} ) where {C, T} = Polynomial {C, T} (copy (p. a), copy (p. x))
3334Base. zero (:: Type{Polynomial{C, T}} ) where {C, T} = Polynomial (T[], MonomialVector {C} ())
3435Base. one (:: Type{Polynomial{C, T}} ) where {C, T} = Polynomial ([one (T)], MonomialVector {C} (PolyVar{C}[], [Int[]]))
@@ -75,9 +76,10 @@ Polynomial{C}(f::Function, x) where {C} = Polynomial{C, Base.promote_op(f, Int)}
7576
7677Base. length (p:: Polynomial ) = length (p. a)
7778Base. isempty (p:: Polynomial ) = isempty (p. a)
78- Base. start (:: Polynomial ) = 1
79- Base. done (p:: Polynomial , state) = length (p) < state
80- Base. next (p:: Polynomial , state) = (p[state], state+ 1 )
79+ Base. iterate (p:: Polynomial ) = isempty (p) ? nothing : (p[1 ], 1 )
80+ function Base. iterate (p:: Polynomial , state:: Int )
81+ state < length (p) ? (p[state+ 1 ], state+ 1 ) : nothing
82+ end
8183# eltype(::Type{Polynomial{C, T}}) where {C, T} = T
8284Base. getindex (p:: Polynomial , I:: Int ) = Term (p. a[I[1 ]], p. x[I[1 ]])
8385
@@ -90,9 +92,11 @@ Base.endof(p::TermIterator) = length(p.p)
9092Base. length (p:: TermIterator ) = length (p. p. a)
9193Base. size (p:: TermIterator ) = (length (p),)
9294Base. isempty (p:: TermIterator ) = isempty (p. p. a)
93- Base. start (:: TermIterator ) = 1
94- Base. done (p:: TermIterator , state) = length (p. p) < state
95- Base. next (p:: TermIterator , state) = (p. p[state], state+ 1 )
95+ Base. iterate (p:: TermIterator ) = isempty (p) ? nothing : (p[1 ], 1 )
96+ function Base. iterate (p:: TermIterator , state:: Int )
97+ state < length (p) ? (p[state+ 1 ], state+ 1 ) : nothing
98+ end
99+
96100Base. getindex (p:: TermIterator , I:: Int ) = Term (p. p. a[I[1 ]], p. p. x[I[1 ]])
97101
98102MP. terms (p:: Polynomial ) = TermIterator (p)
0 commit comments