Skip to content

Commit b4c1b99

Browse files
committed
start tests
1 parent 65df07d commit b4c1b99

File tree

3 files changed

+36
-2
lines changed

3 files changed

+36
-2
lines changed

REQUIRE

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
julia 0.7
2+
ApproxFunBase 0.0.1
3+
ApproxFunFourier
4+
ApproxFunOrthogonalPolynomials
25
ApproxFun 0.8
36
BlockArrays 0.3.1
47
FillArrays 0.1
@@ -9,3 +12,4 @@ FastTransforms 0.4.1
912
StaticArrays 0.3
1013
SpecialFunctions 0.6
1114
LazyArrays 0.2.1
15+
InfiniteArrays 0.0.3

src/Disk/Disk.jl

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,30 @@ plan_transform(S::ChebyshevDisk, n::AbstractVector) =
2020
plan_itransform(S::ChebyshevDisk, n::AbstractVector) =
2121
ITransformPlan(S, plan_itransform(rectspace(S),n), Val{false})
2222

23+
# drop every other entry
24+
function checkerboard(A::AbstractMatrix{T}) where T
25+
m,n = size(A)
26+
C = zeros(T, (m+1)÷2, n)
27+
z = @view(A[1:2:end,1])
28+
e1 = @view(A[1:2:end,4:4:end])
29+
e2 = @view(A[1:2:end,5:4:end])
30+
o1 = @view(A[2:2:end,2:4:end])
31+
o2 = @view(A[2:2:end,3:4:end])
32+
C[1:size(z,1),1] .= z
33+
C[1:size(e1,1),4:4:n] .= e1
34+
C[1:size(e2,1),5:4:n] .= e2
35+
C[1:size(o1,1),2:4:n] .= o1
36+
C[1:size(o2,1),3:4:n] .= o2
37+
C
38+
end
39+
40+
function icheckerboard(C::AbstractMatrix{T}) where T
41+
m,n = size(C)
42+
A = zeros(T, 2*m, n)
43+
A[1:2:end,1:2:end] .= C[:,1:2:end]
44+
A[2:2:end,2:2:end] .= C[:,2:2:end]
45+
A
46+
end
2347

2448
*(P::TransformPlan{<:Any,<:ChebyshevDisk}, v::AbstractArray) = checkerboard(P.plan*v)
2549
*(P::ITransformPlan{<:Any,<:ChebyshevDisk}, v::AbstractArray) = P.plan*icheckerboard(v)

test/test_disk.jl

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1-
using ApproxFun
1+
using Revise, ApproxFun, MultivariateOrthogonalPolynomials
2+
import MultivariateOrthogonalPolynomials: checkerboard, icheckerboard
3+
24
f = (x,y) -> x*y+cos(y-0.1)+sin(x)+1; ff = Fun((r,θ) -> f(r*cos(θ),r*sin(θ)), (-1..1) × PeriodicSegment());
3-
ApproxFunBase.coefficientmatrix(ff)
5+
6+
cfs = ApproxFunBase.coefficientmatrix(ff)
7+
icheckerboard(checkerboard(cfs))[1:size(cfs,1),:]
8+
9+
cfs

0 commit comments

Comments
 (0)