Skip to content

Commit f4d90d9

Browse files
authored
Improve inference in derivative/integrate (#514)
1 parent 2de280b commit f4d90d9

File tree

3 files changed

+15
-7
lines changed

3 files changed

+15
-7
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name = "Polynomials"
22
uuid = "f27b6e38-b328-58d1-80ce-0feddd5e7a45"
33
license = "MIT"
44
author = "JuliaMath"
5-
version = "3.2.13"
5+
version = "3.2.14"
66

77
[deps]
88
ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"

src/polynomials/standard-basis.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -184,22 +184,22 @@ function derivative(p::P, order::Integer = 1) where {T, X, P <: StandardBasisPol
184184
order == 0 && return p
185185
d = degree(p)
186186
order > d && return 0*p
187-
hasnan(p) && return (P)(zero(T)/zero(T), X) # NaN{T}
187+
hasnan(p) && return (P)(zero(T)/zero(T), Var(X)) # NaN{T}
188188

189189
n = d + 1
190190
dp = [reduce(*, (i - order + 1):i, init = p[i]) for i order:d]
191-
return (P)(dp, X)
191+
return (P)(dp, Var(X))
192192

193193
end
194194

195195
function integrate(p::P) where {T, X, P <: StandardBasisPolynomial{T, X}}
196196

197-
hasnan(p) && return (P)(NaN, X)
197+
hasnan(p) && return (P)(NaN, Var(X))
198198
iszero(p) && return zero(p)/1
199199

200200
as = [pᵢ/(i+1) for (i, pᵢ) pairs(p)]
201201
pushfirst!(as, zero(constantterm(p)))
202-
return (P)(as, X)
202+
return (P)(as, Var(X))
203203
end
204204

205205

test/StandardBasis.jl

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,9 +1032,17 @@ end
10321032
c = [1, 2, 3, 4]
10331033
p = P(c)
10341034

1035-
der = derivative(p)
1035+
der = if P == ImmutablePolynomial # poor inference
1036+
derivative(p)
1037+
else
1038+
@inferred derivative(p)
1039+
end
10361040
@test coeffs(der) ==ᵗ⁰ [2, 6, 12]
1037-
int = integrate(der, 1)
1041+
int = if P == ImmutablePolynomial
1042+
integrate(der, 1)
1043+
else
1044+
@inferred integrate(der, 1)
1045+
end
10381046
@test coeffs(int) ==ᵗ⁰ c
10391047

10401048

0 commit comments

Comments
 (0)