Skip to content

Commit c2755b9

Browse files
authored
Implement sum (#44)
* Add sum for ContinuousPolynomial * sum for PiecewisePolynomial * Update continuouspolynomial.jl
1 parent 5d0d0f9 commit c2755b9

File tree

4 files changed

+27
-3
lines changed

4 files changed

+27
-3
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "PiecewiseOrthogonalPolynomials"
22
uuid = "4461d12d-4663-4550-8580-cb764c85e20f"
33
authors = ["Sheehan Olver <[email protected]>"]
4-
version = "0.2.1"
4+
version = "0.2.2"
55

66
[deps]
77
ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"

src/continuouspolynomial.jl

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ factorize(V::SubQuasiArray{T,N,<:ContinuousPolynomial{0},<:Tuple{Inclusion,Block
4646
factorize(view(PiecewisePolynomial(parent(V)), parentindices(V)...), dims...)
4747

4848
plan_grid_transform(P::ContinuousPolynomial{0}, args...) = plan_grid_transform(PiecewisePolynomial(P), args...)
49+
plan_grid_transform(P::ContinuousPolynomial{0}, lng::Union{Integer, Block{1}}, args...) = plan_grid_transform(PiecewisePolynomial(P), lng, args...)
4950

5051
for grd in (:grid, :plotgrid)
5152
@eval $grd(C::ContinuousPolynomial, n...) = $grd(PiecewisePolynomial(C), n...)
@@ -203,4 +204,15 @@ end
203204

204205
singularities(C::ContinuousPolynomial{λ}) where λ = C
205206
basis_singularities(C::ContinuousPolynomial) = C
206-
singularitiesbroadcast(_, C::ContinuousPolynomial) = C # Assume we stay smooth
207+
singularitiesbroadcast(_, C::ContinuousPolynomial) = C # Assume we stay smooth
208+
209+
210+
###
211+
# sum
212+
###
213+
214+
_sum(C::ContinuousPolynomial{0}, dims) = _sum(PiecewisePolynomial(C), dims)
215+
function _sum(C::ContinuousPolynomial, dims)
216+
P = ContinuousPolynomial{0}(C)
217+
_sum(P, dims) * (P \ C)
218+
end

src/piecewisepolynomial.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,4 +119,9 @@ end
119119

120120
singularities(C::PiecewisePolynomial) = C
121121
basis_singularities(C::PiecewisePolynomial) = C
122-
singularitiesbroadcast(_, C::PiecewisePolynomial) = C # Assume we stay piecewise smooth
122+
singularitiesbroadcast(_, C::PiecewisePolynomial) = C # Assume we stay piecewise smooth
123+
124+
####
125+
# sum
126+
####
127+
_sum(P::PiecewisePolynomial, dims) = blockvec(diff(P.points)/2 .* sum(P.basis; dims=1))'

test/test_continuouspolynomial.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,4 +150,11 @@ using PiecewiseOrthogonalPolynomials, StaticArrays, InfiniteArrays, ContinuumArr
150150
f = expand(C, exp)
151151
@test expand(exp.(f))[0.1] exp(exp(0.1))
152152
end
153+
154+
@testset "sum" begin
155+
r = [-1, 0.1, 0.2, 1]
156+
P = ContinuousPolynomial{0}(r)
157+
C = ContinuousPolynomial{1}(r)
158+
@test sum(expand(P, exp)) sum(expand(C, exp)) - 1/
159+
end
153160
end

0 commit comments

Comments
 (0)