Skip to content

Commit 88586dc

Browse files
authored
Implement the new mapcoefficients API (#76)
* Updates * Up
1 parent 7477722 commit 88586dc

File tree

2 files changed

+28
-5
lines changed

2 files changed

+28
-5
lines changed

Project.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "TypedPolynomials"
22
uuid = "afbbf031-7a57-5f58-a1b9-b774a0fad08d"
33
repo = "https://github.com/JuliaAlgebra/TypedPolynomials.jl.git"
4-
version = "0.3.0"
4+
version = "0.3.1"
55

66
[deps]
77
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
@@ -13,7 +13,7 @@ Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
1313

1414
[compat]
1515
MacroTools = "0.5"
16-
MultivariatePolynomials = "0.4"
16+
MultivariatePolynomials = "0.4.1"
1717
MutableArithmetics = "0.3"
1818
NBInclude = "2"
1919
julia = "1"

src/operators.jl

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,16 +190,39 @@ adjoint(m::Monomial) = m
190190
adjoint(t::Term) = Term(adjoint(coefficient(t)), monomial(t))
191191
adjoint(x::Polynomial) = Polynomial(adjoint.(terms(x)))
192192

193-
function MP.mapcoefficientsnz_to!(output::Polynomial, f::Function, p::Polynomial)
193+
function MP.mapcoefficients(f::Function, p::Polynomial; nonzero = false)
194+
terms = map(p.terms) do term
195+
MP.mapcoefficients(f, term)
196+
end
197+
if !nonzero
198+
filter!(!iszero, terms)
199+
end
200+
return Polynomial(terms)
201+
end
202+
function MP.mapcoefficients!(f::Function, p::Polynomial; nonzero = false)
203+
for i in eachindex(p.terms)
204+
t = p.terms[i]
205+
p.terms[i] = Term(f(coefficient(t)), monomial(t))
206+
end
207+
if !nonzero
208+
filter!(!iszero, p.terms)
209+
end
210+
return p
211+
end
212+
213+
function MP.mapcoefficients_to!(output::Polynomial, f::Function, p::Polynomial; nonzero = false)
194214
resize!(output.terms, nterms(p))
195215
for i in eachindex(p.terms)
196216
t = p.terms[i]
197217
output.terms[i] = Term(f(coefficient(t)), monomial(t))
198218
end
219+
if !nonzero
220+
filter!(!iszero, output.terms)
221+
end
199222
return output
200223
end
201-
function MP.mapcoefficientsnz_to!(output::Polynomial, f::Function, p::AbstractPolynomialLike)
202-
return MP.mapcoefficientsnz_to!(output, f, polynomial(p))
224+
function MP.mapcoefficients_to!(output::Polynomial, f::Function, p::AbstractPolynomialLike; nonzero = false)
225+
return MP.mapcoefficients_to!(output, f, polynomial(p); nonzero = false)
203226
end
204227

205228
function MA.operate!(::typeof(MP.removeleadingterm), p::Polynomial)

0 commit comments

Comments
 (0)