Skip to content

Commit ec0a55f

Browse files
authored
isdiag for deriv/integral (#71)
1 parent 18bb145 commit ec0a55f

File tree

4 files changed

+15
-4
lines changed

4 files changed

+15
-4
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "ApproxFunFourier"
22
uuid = "59844689-9c9d-51bf-9583-5b794ec66d30"
3-
version = "0.3.9"
3+
version = "0.3.10"
44

55
[deps]
66
AbstractFFTs = "621f4979-c628-5d54-868e-fcf4e3e8185c"

src/ApproxFunFourier.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ import Base: convert, getindex, *, +, -, ==, /, eltype,
4646
show, sum, cumsum, conj, issubset, first, last, rand, setdiff,
4747
angle, isempty, zeros, one, promote_rule, real, imag
4848

49-
import LinearAlgebra: norm, mul!
49+
import LinearAlgebra: norm, mul!, isdiag
5050

5151
using InfiniteArrays: AbstractInfUnitRange
5252

src/FourierOperators.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ getindex(C::ConcreteConversion{Fourier{DD,R1},Fourier{DD,R2},T},k::Integer,j::In
8888

8989
function Derivative(S::Union{CosSpace,SinSpace},order)
9090
@assert isa(domain(S),PeriodicSegment)
91+
@assert order > 0 "order of derivative must be > 0"
9192
ConcreteDerivative(S,order)
9293
end
9394

@@ -138,6 +139,7 @@ end
138139
# Use Laurent derivative
139140
function Derivative(S::Fourier{<:Circle}, k::Number)
140141
assert_integer(k)
142+
@assert k > 0 "order of derivative must be > 0"
141143
DerivativeWrapper(Derivative(Laurent(S),k)*Conversion(S,Laurent(S)),k)
142144
end
143145

@@ -146,6 +148,7 @@ Integral(::CosSpace, m::Number) =
146148

147149
function Integral(sp::SinSpace{<:PeriodicSegment}, m::Number)
148150
assert_integer(m)
151+
@assert m > 0 "order of integral must be > 0"
149152
ConcreteIntegral(sp,m)
150153
end
151154

@@ -174,7 +177,8 @@ function getindex(D::ConcreteIntegral{CS,OT,T},k::Integer,j::Integer) where {CS<
174177
end
175178

176179
function Integral(S::SubSpace{<:CosSpace,<:AbstractInfUnitRange{Int},<:PeriodicSegment},k::Number)
177-
@assert Integer(k) == k "order must be an integer"
180+
assert_integer(k)
181+
@assert k > 0 "order of integral must be > 0"
178182
@assert first(S.indexes)==2
179183
ConcreteIntegral(S,k)
180184
end

src/LaurentOperators.jl

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,14 +69,17 @@ coefficienttimes(f::Fun{Laurent{DD,RR}},g::Fun{Laurent{DD,RR}}) where {DD,RR} =
6969
# override map definition
7070
function Derivative(S::Hardy{<:Any,<:Circle}, k::Number)
7171
assert_integer(k)
72+
@assert k > 0 " order of derivative must be > 0"
7273
ConcreteDerivative(S,k)
7374
end
7475
function Derivative(S::Hardy{<:Any,<:PeriodicSegment}, k::Number)
7576
assert_integer(k)
77+
@assert k > 0 " order of derivative must be > 0"
7678
ConcreteDerivative(S,k)
7779
end
7880
function Derivative(S::Laurent{<:Circle}, k::Number)
7981
assert_integer(k)
82+
@assert k > 0 " order of derivative must be > 0"
8083
t = map(s->Derivative(s,k), S.spaces)
8184
v = convert_vector_or_svector(t)
8285
D = Diagonal(v)
@@ -85,7 +88,8 @@ function Derivative(S::Laurent{<:Circle}, k::Number)
8588
end
8689

8790
bandwidths(D::ConcreteDerivative{Hardy{s,DD,RR}}) where {s,DD<:PeriodicSegment,RR}=(0,0)
88-
bandwidths(D::ConcreteDerivative{Hardy{s,DD,RR}}) where {s,DD<:Circle,RR}=s ? (-D.order,D.order) : (D.order,-D.order)
91+
bandwidths(D::ConcreteDerivative{Hardy{s,DD,RR}}) where {s,DD<:Circle,RR} = s ? (-D.order,D.order) : (D.order,-D.order)
92+
isdiag(D::ConcreteDerivative{Hardy{s,DD,RR}}) where {s,DD<:Circle,RR} = false
8993

9094
rangespace(D::ConcreteDerivative{S}) where {S<:Hardy}=D.space
9195

@@ -151,10 +155,12 @@ getindex(D::ConcreteDerivative{Hardy{false,DD,RR},OT,T},k::Integer,j::Integer) w
151155

152156
function Integral(S::Hardy{s,DD,RR}, k::Number) where {s,DD<:Circle,RR}
153157
assert_integer(k)
158+
@assert k > 0 "order of integral must be > 0"
154159
ConcreteIntegral(S,k)
155160
end
156161

157162
bandwidths(D::ConcreteIntegral{Taylor{DD,RR}}) where {DD<:Circle,RR} = (D.order,0)
163+
isdiag(D::ConcreteIntegral{Taylor{DD,RR}}) where {DD<:Circle,RR} = false
158164
rangespace(Q::ConcreteIntegral{Hardy{s,DD,RR}}) where {s,DD<:Circle,RR} = Q.space
159165

160166
function getindex(D::ConcreteIntegral{Taylor{DD,RR}},k::Integer,j::Integer) where {DD<:Circle,RR}
@@ -177,6 +183,7 @@ end
177183

178184
function Integral(S::SubSpace{<:Hardy{false,<:Circle}, <:AbstractInfUnitRange{Int}}, k::Number)
179185
assert_integer(k)
186+
@assert k > 0 "order of integral must be > 0"
180187
if first(S.indexes) == k+1
181188
ConcreteIntegral(S,k)
182189
else

0 commit comments

Comments
 (0)