Skip to content

Commit 1c3450d

Browse files
authored
Replace Vec by SVector (#61)
* Replace Vec by SVector * BandedMatrices for bandwidths
1 parent 9457fb0 commit 1c3450d

File tree

6 files changed

+98
-110
lines changed

6 files changed

+98
-110
lines changed

Project.toml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,34 @@
11
name = "ApproxFunFourier"
22
uuid = "59844689-9c9d-51bf-9583-5b794ec66d30"
3-
version = "0.3.4"
3+
version = "0.3.5"
44

55
[deps]
66
AbstractFFTs = "621f4979-c628-5d54-868e-fcf4e3e8185c"
77
ApproxFunBase = "fbd15aa5-315a-5a7d-a8a4-24992e37be05"
8+
BandedMatrices = "aae01518-5342-5314-be14-df237901396f"
89
DomainSets = "5b8099bc-c8ec-5219-889f-1d9e522a28bf"
910
FFTW = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341"
1011
FastTransforms = "057dd010-8810-581a-b7be-e3fc3b93f78c"
1112
InfiniteArrays = "4858937d-0d70-526a-a4dd-2d5cb5dd786c"
1213
IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953"
1314
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
1415
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
16+
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
1517

1618
[compat]
1719
AbstractFFTs = "0.5, 1"
18-
ApproxFunBase = "0.7"
20+
ApproxFunBase = "0.7.34"
1921
ApproxFunBaseTest = "0.1"
2022
Aqua = "0.5"
23+
BandedMatrices = "0.16, 0.17"
2124
DomainSets = "0.3, 0.4, 0.5"
2225
FFTW = "1.1"
2326
FastTransforms = "0.10, 0.11, 0.12, 0.13, 0.14"
2427
InfiniteArrays = "0.5, 0.6, 0.7, 0.8, 0.9, 0.10, 0.11, 0.12"
2528
IntervalSets = "0.5, 0.6, 0.7"
2629
Reexport = "0.2, 1"
2730
SpecialFunctions = "0.8, 0.9, 0.10, 1.0, 2.0"
31+
StaticArrays = "1"
2832
julia = "1.6"
2933

3034
[extras]

src/ApproxFunFourier.jl

Lines changed: 49 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,57 @@
11
module ApproxFunFourier
2-
using Base, LinearAlgebra, Reexport, AbstractFFTs, FFTW, InfiniteArrays, FastTransforms, IntervalSets,
3-
DomainSets
2+
using Base, LinearAlgebra, Reexport, AbstractFFTs, FFTW, InfiniteArrays,
3+
FastTransforms, IntervalSets, DomainSets
44

55
@reexport using ApproxFunBase
66

77
import AbstractFFTs: Plan, fft, ifft
8-
import FFTW: plan_r2r!, fftwNumber, REDFT10, REDFT01, REDFT00, RODFT00, R2HC, HC2R,
9-
r2r!, r2r, plan_fft, plan_ifft, plan_ifft!, plan_fft!
10-
11-
import ApproxFunBase: normalize!, flipsign, FiniteRange, Fun, MatrixFun, UnsetSpace, VFun, RowVector,
12-
UnivariateSpace, AmbiguousSpace, SumSpace, SubSpace, WeightSpace, NoSpace, Space,
13-
HeavisideSpace, PointSpace,
14-
IntervalOrSegment, RaggedMatrix, AlmostBandedMatrix,
15-
AnyDomain, ZeroSpace, ArraySpace, TrivialInterlacer, BlockInterlacer,
16-
AbstractTransformPlan, TransformPlan, ITransformPlan,
17-
ConcreteConversion, ConcreteMultiplication, ConcreteDerivative, ConcreteIntegral, CalculusOperator,
18-
ConcreteVolterra, Volterra, VolterraWrapper,
19-
MultiplicationWrapper, ConversionWrapper, DerivativeWrapper, Evaluation, EvaluationWrapper,
20-
Conversion, defaultConversion, defaultcoefficients, default_Fun, Multiplication, Derivative, Integral, bandwidths,
21-
ConcreteEvaluation, ConcreteDefiniteLineIntegral, ConcreteDefiniteIntegral, ConcreteIntegral,
22-
DefiniteLineIntegral, DefiniteIntegral, ConcreteDefiniteIntegral, ConcreteDefiniteLineIntegral, IntegralWrapper,
23-
ReverseOrientation, ReverseOrientationWrapper, ReverseWrapper, Reverse, NegateEven,
24-
Dirichlet, ConcreteDirichlet, DirichletWrapper,
25-
TridiagonalOperator, SubOperator, Space, @containsconstants, spacescompatible,
26-
hasfasttransform, canonicalspace, domain, setdomain, prectype, domainscompatible,
27-
plan_transform, plan_itransform, plan_transform!, plan_itransform!, transform, itransform, hasfasttransform,
28-
CanonicalTransformPlan, ICanonicalTransformPlan,
29-
Integral,
30-
domainspace, rangespace,
31-
union_rule, conversion_rule, maxspace_rule, conversion_type, maxspace, hasconversion, points,
32-
rdirichlet, ldirichlet, lneumann, rneumann, ivp, bvp,
33-
linesum, differentiate, integrate, linebilinearform, bilinearform,
34-
UnsetNumber, coefficienttimes, subspace_coefficients, sumspacecoefficients, specialfunctionnormalizationpoint,
35-
Segment, IntervalOrSegmentDomain, PiecewiseSegment, isambiguous, Vec, eps, isperiodic,
36-
arclength, complexlength,
37-
invfromcanonicalD, fromcanonical, tocanonical, fromcanonicalD, tocanonicalD, canonicaldomain, setcanonicaldomain, mappoint,
38-
reverseorientation, checkpoints, evaluate, mul_coefficients, coefficients, coefficientmatrix, isconvertible,
39-
clenshaw, ClenshawPlan, sineshaw,
40-
toeplitz_getindex, toeplitz_axpy!, sym_toeplitz_axpy!, hankel_axpy!, ToeplitzOperator, SymToeplitzOperator, hankel_getindex,
41-
SpaceOperator, ZeroOperator, InterlaceOperator,
42-
interlace!, reverseeven!, negateeven!, cfstype, pad!, alternatesign!, mobius,
43-
extremal_args, hesseneigvals, chebyshev_clenshaw, recA, recB, recC, roots,splitatroots,
44-
chebmult_getindex, intpow, alternatingsum,
45-
domaintype, diagindshift, rangetype, weight, isapproxinteger, default_Dirichlet, scal!, dotu,
46-
components, promoterangespace, promotedomainspace, choosedomainspace,
47-
block, blockstart, blockstop, blocklengths, isblockbanded, pointscompatible,
48-
AbstractProductSpace, MultivariateFun, BivariateSpace,
49-
@wrapperstructure, @wrapperspaces, @wrapper, @calculus_operator, resizedata!, slnorm, affine_setdiff,
50-
complexroots, EmptyDomain, RectDomain
51-
52-
53-
import DomainSets: Domain, indomain, UnionDomain, ProductDomain, FullSpace, Point, elements, DifferenceDomain,
54-
Interval, ChebyshevInterval, boundary, ∂, rightendpoint, leftendpoint,
55-
dimension
56-
57-
import Base: values, convert, getindex, setindex!, *, +, -, ==, <, <=, >, |, !, !=, eltype, iterate,
58-
>=, /, ^, \, , transpose, size, tail, broadcast, broadcast!, copyto!, copy, to_index, (:),
59-
similar, map, vcat, hcat, hvcat, show, summary, stride, sum, cumsum, sign, imag, conj, inv,
60-
complex, reverse, exp, sqrt, abs, abs2, sign, issubset, values, in, first, last, rand, intersect, setdiff,
61-
isless, union, angle, join, isnan, isapprox, isempty, sort, merge, promote_rule,
62-
minimum, maximum, extrema, argmax, argmin, findmax, findmin, isfinite,
63-
zeros, zero, one, promote_rule, repeat, length, resize!, isinf,
64-
getproperty, findfirst, unsafe_getindex, fld, cld, div, real, imag,
65-
@_inline_meta, eachindex, firstindex, lastindex, keys, isreal, OneTo,
66-
Array, Vector, Matrix, view, ones, @propagate_inbounds, print_array,
67-
split
68-
69-
import LinearAlgebra: BlasInt, BlasFloat, norm, ldiv!, mul!, det, eigvals, dot, cross,
70-
qr, qr!, rank, isdiag, istril, istriu, issymmetric, ishermitian,
71-
Tridiagonal, diagm, diagm_container, factorize, nullspace,
72-
Hermitian, Symmetric, adjoint, transpose, char_uplo
73-
74-
import InfiniteArrays: InfRanges, AbstractInfUnitRange, OneToInf
75-
76-
import FastTransforms: ChebyshevTransformPlan, IChebyshevTransformPlan, plan_chebyshevtransform,
77-
plan_chebyshevtransform!, plan_ichebyshevtransform, plan_ichebyshevtransform!
78-
8+
import FFTW: plan_r2r!, fftwNumber, RODFT00, R2HC, HC2R, plan_fft, plan_ifft,
9+
plan_ifft!, plan_fft!
10+
11+
import ApproxFunBase: Fun, SumSpace, SubSpace, NoSpace, IntervalOrSegment,
12+
AnyDomain, AbstractTransformPlan, TransformPlan, ITransformPlan,
13+
ConcreteConversion, ConcreteMultiplication, ConcreteDerivative,
14+
MultiplicationWrapper, ConversionWrapper, DerivativeWrapper,
15+
Evaluation, Conversion, Multiplication,
16+
Derivative, ConcreteEvaluation, ConcreteIntegral,
17+
DefiniteLineIntegral, DefiniteIntegral, ConcreteDefiniteIntegral,
18+
ConcreteDefiniteLineIntegral, IntegralWrapper, Reverse, NegateEven,
19+
ReverseOrientation, ReverseOrientationWrapper, ReverseWrapper,
20+
Dirichlet, DirichletWrapper, Space, @containsconstants,
21+
spacescompatible, canonicalspace, domain, setdomain, prectype,
22+
domainscompatible, plan_transform, plan_itransform, plan_transform!,
23+
plan_itransform!, transform, itransform, hasfasttransform, Integral,
24+
domainspace, rangespace, union_rule, conversion_rule, maxspace_rule,
25+
conversion_type, maxspace, hasconversion, points, rdirichlet,
26+
ldirichlet, lneumann, rneumann, ivp, bvp, eps,
27+
linesum, differentiate, integrate, linebilinearform, bilinearform,
28+
UnsetNumber, coefficienttimes, Segment, isambiguous, isperiodic,
29+
arclength, complexlength, invfromcanonicalD, fromcanonical,
30+
tocanonical, fromcanonicalD, tocanonicalD, canonicaldomain,
31+
setcanonicaldomain, mappoint, reverseorientation, checkpoints,
32+
evaluate, mul_coefficients, coefficients, clenshaw, ClenshawPlan,
33+
sineshaw, toeplitz_getindex, ToeplitzOperator, hankel_getindex,
34+
SpaceOperator, ZeroOperator, InterlaceOperator, interlace!,
35+
reverseeven!, negateeven!, cfstype, alternatesign!, extremal_args,
36+
hesseneigvals, chebyshev_clenshaw, roots, EmptyDomain,
37+
chebmult_getindex, components, affine_setdiff, complexroots
38+
39+
import BandedMatrices: bandwidths
40+
41+
import DomainSets: Domain, indomain, UnionDomain, Point, Interval,
42+
boundary, rightendpoint, leftendpoint
43+
44+
import Base: convert, getindex, *, +, -, ==, /, eltype,
45+
show, sum, cumsum, conj, issubset, first, last, rand, setdiff,
46+
angle, isempty, zeros, one, promote_rule, real, imag
47+
48+
import LinearAlgebra: norm, mul!
49+
50+
using InfiniteArrays: AbstractInfUnitRange
51+
52+
using FastTransforms: plan_chebyshevtransform, plan_ichebyshevtransform
53+
54+
using StaticArrays: SVector
7955

8056
export Fourier, Taylor, Hardy, CosSpace, SinSpace, Laurent, PeriodicDomain
8157

src/Domains/Circle.jl

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ struct Circle{T,V<:Real,TT} <: PeriodicDomain{TT}
2121
end
2222

2323
Circle(c::Number,r::Real,o::Bool) = Circle{typeof(c),typeof(r),Complex{typeof(r)}}(c,r,o)
24-
Circle(c::Vec,r::Real,o::Bool) = Circle{typeof(c),typeof(r),typeof(c)}(c,r,o)
24+
Circle(c::SVector,r::Real,o::Bool) = Circle{typeof(c),typeof(r),typeof(c)}(c,r,o)
2525

2626
Circle(::Type{T1},c::T2,r::V,o::Bool) where {T1,T2,V<:Real} = Circle(convert(promote_type(T1,T2,V),c),
2727
convert(promote_type(real(T1),real(T2),V),r),o)
@@ -30,15 +30,15 @@ Circle(::Type{T1},c,r::Real) where {T1<:Number} = Circle(T1,c,r)
3030
Circle(c,r::Real) = Circle(c,r,true)
3131
Circle(r::Real) = Circle(zero(r),r)
3232
Circle(r::Int) = Circle(Float64,0.,r)
33-
Circle(a::Tuple,r::Real) = Circle(Vec(a...),r)
33+
Circle(a::Tuple,r::Real) = Circle(SVector(a...),r)
3434

3535
Circle(::Type{V}) where {V<:Real} = Circle(one(V))
3636
Circle() = Circle(1.0)
3737

3838

3939

4040
isambiguous(d::Circle{T}) where {T<:Number} = isnan(d.center) && isnan(d.radius)
41-
isambiguous(d::Circle{T}) where {T<:Vec} = all(isnan,d.center) && isnan(d.radius)
41+
isambiguous(d::Circle{T}) where {T<:SVector} = all(isnan,d.center) && isnan(d.radius)
4242
convert(::Type{Circle{T,V}},::AnyDomain) where {T<:Number,V<:Real} = Circle{T,V}(NaN,NaN)
4343
convert(::Type{IT},::AnyDomain) where {IT<:Circle} = Circle(NaN,NaN)
4444

@@ -52,7 +52,7 @@ function tocanonical(d::Circle{T},ζ) where T<:Number
5252
_tocanonical(reim(v))
5353
end
5454

55-
function tocanonical(d::Circle{T},ζ) where T<:Vec
55+
function tocanonical(d::Circle{T},ζ) where T<:SVector
5656
v=mappoint(d,Circle((0.0,0.0),1.0),ζ)
5757
_tocanonical(v)
5858
end
@@ -64,10 +64,10 @@ fromcanonicalD(d::Circle{T},θ) where {T<:Number} =
6464
(d.orientation ? 1 : -1)*d.radius*1.0im*exp((d.orientation ? 1 : -1)*1.0im*θ)
6565

6666

67-
fromcanonical(d::Circle{T}::Number) where {T<:Vec} =
68-
d.radius*Vec(cos((d.orientation ? 1 : -1)*θ),sin((d.orientation ? 1 : -1)*θ)) + d.center
69-
fromcanonicalD(d::Circle{T}::Number) where {T<:Vec} =
70-
d.radius*(d.orientation ? 1 : -1)*Vec(-sin((d.orientation ? 1 : -1)*θ),cos((d.orientation ? 1 : -1)*θ))
67+
fromcanonical(d::Circle{T}::Number) where {T<:SVector} =
68+
d.radius*SVector(cos((d.orientation ? 1 : -1)*θ),sin((d.orientation ? 1 : -1)*θ)) + d.center
69+
fromcanonicalD(d::Circle{T}::Number) where {T<:SVector} =
70+
d.radius*(d.orientation ? 1 : -1)*SVector(-sin((d.orientation ? 1 : -1)*θ),cos((d.orientation ? 1 : -1)*θ))
7171

7272

7373
indomain(z,d::Circle) = norm(z-d.center) d.radius
@@ -80,11 +80,11 @@ complexlength(d::Circle) = (d.orientation ? 1 : -1)*im*arclength(d) #TODO: why?
8080

8181

8282

83-
mappoint(d1::Circle{T},d2::Circle{V},z) where {T<:Vec,V<:Number} =
83+
mappoint(d1::Circle{T},d2::Circle{V},z) where {T<:SVector,V<:Number} =
8484
mappoint(Circle(complex(d1.center...),d1.radius),d2,z[1]+im*z[2])
8585

86-
mappoint(d1::Circle{T},d2::Circle{V},z) where {T<:Number,V<:Vec} =
87-
mappoint(Circle(Vec(d1.center...),d1.radius),d2,Vec(real(z),imag(z)))
86+
mappoint(d1::Circle{T},d2::Circle{V},z) where {T<:Number,V<:SVector} =
87+
mappoint(Circle(SVector(d1.center...),d1.radius),d2,SVector(real(z),imag(z)))
8888

8989
function mappoint(d1::Circle,d2::Circle,z)
9090
v=(z-d1.center)/d1.radius

src/Domains/Disk.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,22 @@ Disk(c::Real,r) = Disk(complex(c),r)
1717
Disk(c::Integer,r) = Disk(float(c),r)
1818
Disk(c::Complex{<:Integer},r) = Disk(float(c),r)
1919

20-
Disk() = Disk(Vec(0.,0.),1.)
20+
Disk() = Disk(SVector(0.,0.),1.)
2121
Disk(::AnyDomain) = Disk(NaN,(NaN,NaN))
2222

2323
const 𝔻 = Disk()
2424

2525
isambiguous(d::Disk) = isnan(d.radius) && all(isnan,d.center)
2626

27-
polar(r,θ) = Vec(r*cos(θ),r*sin(θ))
28-
ipolar(x,y) = Vec(sqrt(abs2(x)+abs2(y)), atan(y,x))
29-
polar(rθ::Vec) = polar(rθ...)
30-
ipolar(xy::Vec) = ipolar(xy...)
27+
polar(r,θ) = SVector(r*cos(θ),r*sin(θ))
28+
ipolar(x,y) = SVector(sqrt(abs2(x)+abs2(y)), atan(y,x))
29+
polar(rθ::SVector) = polar(rθ...)
30+
ipolar(xy::SVector) = ipolar(xy...)
3131

32-
fromcanonical(D::Disk{T},xy::Vec) where {T<:Vec} = Vec((D.radius.*xy .+ D.center)...)
33-
tocanonical(D::Disk{T},x,y) where {T<:Vec} = Vec((xy .- D.center)./D.radius)
32+
fromcanonical(D::Disk{T},xy::SVector) where {T<:SVector} = SVector((D.radius.*xy .+ D.center)...)
33+
tocanonical(D::Disk{T},x,y) where {T<:SVector} = SVector((xy .- D.center)./D.radius)
3434

35-
checkpoints(d::Disk) = [fromcanonical(d,Vec(.1,.2243)),fromcanonical(d,Vec(-.212423,-.3))]
35+
checkpoints(d::Disk) = [fromcanonical(d,SVector(.1,.2243)),fromcanonical(d,SVector(-.212423,-.3))]
3636

3737
# function points(d::Disk,n,m,k)
3838
# ptsx=0.5*(1-gaussjacobi(n,1.,0.)[1])

src/Domains/PeriodicSegment.jl

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
2-
3-
41
export PeriodicSegment
52

63
"""
@@ -19,7 +16,7 @@ end
1916
PeriodicSegment()=PeriodicSegment{Float64}()
2017
PeriodicSegment(a::Int,b::Int) = PeriodicSegment(Float64(a),Float64(b)) #convenience method
2118
PeriodicSegment(a,b) = PeriodicSegment{promote_type(typeof(a),typeof(b))}(a,b)
22-
PeriodicSegment(a::Tuple,b::Tuple) = Interval(Vec(a...),Vec(b...))
19+
PeriodicSegment(a::Tuple,b::Tuple) = PeriodicSegment(SVector(a), SVector(b))
2320

2421
function convert(::Type{PeriodicSegment}, d::ClosedInterval)
2522
a,b = d.left,d.right
@@ -35,7 +32,9 @@ convert(::Type{PeriodicSegment{T}}, d::PeriodicSegment) where {T<:Number} = Peri
3532

3633
isambiguous(d::PeriodicSegment) = all(isnan(leftendpoint(d))) && all(isnan(rightendpoint(d)))
3734
convert(::Type{PeriodicSegment{T}},::AnyDomain) where {T<:Number} = PeriodicSegment{T}(NaN,NaN)
38-
convert(::Type{PeriodicSegment{Vec{d,T}}},::AnyDomain) where {d,T} = PeriodicSegment(Vec(fill(NaN,d)...),Vec(fill(NaN,d)...))
35+
function convert(::Type{PeriodicSegment{SVector{d,T}}},::AnyDomain) where {d,T}
36+
PeriodicSegment(SVector{d,T}(ntuple(x->T(NaN),d)), SVector{d,T}(ntuple(x->T(NaN),d)))
37+
end
3938
convert(::Type{PeriodicSegment{T}},::AnyDomain) where {T} = PeriodicSegment(nan(T),nan(T))
4039
PeriodicSegment{T}(d) where T = convert(PeriodicSegment{T}, d)
4140
PeriodicSegment(d) = convert(PeriodicSegment, d)
@@ -85,7 +84,7 @@ for op in (:*,:+,:-)
8584
end
8685

8786

88-
@eval /(d::PeriodicSegment,c::Number) = PeriodicSegment(/(leftendpoint(d),c),/(rightendpoint(d),c))
87+
/(d::PeriodicSegment,c::Number) = PeriodicSegment(/(leftendpoint(d),c),/(rightendpoint(d),c))
8988

9089
+(d1::PeriodicSegment,d2::PeriodicSegment) = PeriodicSegment(d1.a+d2.a,d1.b+d2.b)
9190

@@ -111,11 +110,11 @@ issubset(a::IntervalOrSegment, b::PeriodicSegment) = PeriodicSegment(endpoints(a
111110

112111

113112
boundary(d::VcatDomain{2,<:Any,(1,1),<:Tuple{<:IntervalOrSegment,<:PeriodicSegment}}) =
114-
UnionDomain((PeriodicSegment(Vec(rightendpoint(factor(d,1)),leftendpoint(factor(d,2))),Vec(rightendpoint(factor(d,1)),rightendpoint(factor(d,2)))),
115-
PeriodicSegment(Vec(leftendpoint(factor(d,1)),rightendpoint(factor(d,2))),Vec(leftendpoint(factor(d,1)),leftendpoint(factor(d,2))))))
113+
UnionDomain((PeriodicSegment(SVector(rightendpoint(factor(d,1)),leftendpoint(factor(d,2))),SVector(rightendpoint(factor(d,1)),rightendpoint(factor(d,2)))),
114+
PeriodicSegment(SVector(leftendpoint(factor(d,1)),rightendpoint(factor(d,2))),SVector(leftendpoint(factor(d,1)),leftendpoint(factor(d,2))))))
116115
boundary(d::VcatDomain{2,<:Any,(1,1),<:Tuple{<:PeriodicSegment,<:IntervalOrSegment}}) =
117-
UnionDomain((PeriodicSegment(Vec(leftendpoint(factor(d,1)),leftendpoint(factor(d,2))),Vec(rightendpoint(factor(d,1)),leftendpoint(factor(d,2)))),
118-
PeriodicSegment(Vec(rightendpoint(factor(d,1)),rightendpoint(factor(d,2))),Vec(leftendpoint(factor(d,1)),rightendpoint(factor(d,2))))))
116+
UnionDomain((PeriodicSegment(SVector(leftendpoint(factor(d,1)),leftendpoint(factor(d,2))),SVector(rightendpoint(factor(d,1)),leftendpoint(factor(d,2)))),
117+
PeriodicSegment(SVector(rightendpoint(factor(d,1)),rightendpoint(factor(d,2))),SVector(leftendpoint(factor(d,1)),rightendpoint(factor(d,2))))))
119118
boundary(d::VcatDomain{2,<:Any,(1,1),<:Tuple{<:PeriodicSegment,<:PeriodicSegment}}) = EmptyDomain()
120119

121120
union_rule(A::SumSpace{<:Any,<:PeriodicSegment}, B::Space{<:IntervalOrSegment}) =

test/runtests.jl

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
using ApproxFunFourier
22
using ApproxFunBase
3-
using ApproxFunBase: Block, Vec, EmptyDomain, UnionDomain
3+
using ApproxFunBase: Block, EmptyDomain, UnionDomain
44
using ApproxFunBaseTest: testspace, testtransforms, testmultiplication, testraggedbelowoperator,
55
testbandedoperator, testblockbandedoperator, testbandedblockbandedoperator,
66
testcalculus, testfunctional
77
using LinearAlgebra
88
using SpecialFunctions
99
_factorial(n) = gamma(n+1)
10+
11+
using StaticArrays: SVector
1012
using Test
1113

1214
using Aqua
@@ -23,13 +25,20 @@ end
2325
@test -10.0 PeriodicLine()
2426
@test -10.0+im PeriodicLine()
2527

26-
@test ApproxFunBase.Vec(0,0.5) PeriodicSegment(ApproxFunBase.Vec(0.0,0), ApproxFunBase.Vec(0,1))
28+
@test SVector(0,0.5) PeriodicSegment(SVector(0.0,0), SVector(0,1))
2729

28-
@test ApproxFunBase.Vec(1,0) Circle((0.,0.),1.)
30+
@test SVector(1,0) Circle((0.,0.),1.)
2931

3032
@test (PeriodicSegment() × ChebyshevInterval()) isa UnionDomain
3133
@test (ChebyshevInterval() × PeriodicSegment()) isa UnionDomain
3234
@test (PeriodicSegment() × PeriodicSegment()) isa EmptyDomain
35+
36+
T = PeriodicSegment{SVector{2,Float64}}
37+
@test convert(T, ApproxFunBase.AnyDomain()) isa T
38+
39+
a = PeriodicSegment(0,2π)
40+
b = a/2
41+
@test rightendpoint(a)/2 rightendpoint(b)
3342
end
3443

3544
@testset "Cos/SinSpace" begin
@@ -323,11 +332,11 @@ end
323332
end
324333

325334

326-
@testset "Vec circle" begin
335+
@testset "SVector circle" begin
327336
d=Circle((0.,0.),1.)
328337
f=Fun(xy->exp(-xy[1]-2cos(xy[2])),Fourier(d),40)
329338
@test f(cos(0.1),sin(0.1)) exp(-cos(0.1)-2cos(sin(0.1)))
330-
@test f(Vec(cos(0.1),sin(0.1))) exp(-cos(0.1)-2cos(sin(0.1)))
339+
@test f(SVector(cos(0.1),sin(0.1))) exp(-cos(0.1)-2cos(sin(0.1)))
331340

332341
f=Fun((x,y)->exp(-x-2cos(y)),Fourier(d),40)
333342
@test f(cos(0.1),sin(0.1)) exp(-cos(0.1)-2cos(sin(0.1)))
@@ -581,7 +590,7 @@ end
581590
end
582591

583592
@testset "off domain evaluate" begin
584-
g = Fun(1, PeriodicSegment(Vec(0,-1) , Vec(π,-1)))
593+
g = Fun(1, PeriodicSegment(SVector(0,-1) , SVector(π,-1)))
585594
@test g(0.1,-1) 1
586595
@test g(0.1,1) 0
587596
end

0 commit comments

Comments
 (0)