Skip to content

Commit c77edcb

Browse files
author
Tomas Lycken
committed
Use _build_woodbury_specs everywhere
This is in preparation of removing this method entirely, in favor of the same function under another name now provided from the WoodburyMatrices package.
1 parent cab4975 commit c77edcb

File tree

2 files changed

+22
-43
lines changed

2 files changed

+22
-43
lines changed

src/b-splines/cubic.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,5 +278,5 @@ function prefiltering_system{T,TC,GT<:GridType}(::Type{T}, ::Type{TC}, n::Int,
278278
(n, 1, dl[end])
279279
)
280280

281-
Woodbury(lufact!(Tridiagonal(dl, d, du), Val{false}), rowspec, valspec, colspec), zeros(TC, n)
281+
Woodbury(lufact!(Tridiagonal(dl, d, du), Val{false}), specs...), zeros(TC, n)
282282
end

src/b-splines/quadratic.jl

Lines changed: 21 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -136,71 +136,50 @@ function prefiltering_system{T,TC,BC<:Union{Flat,Reflect}}(::Type{T}, ::Type{TC}
136136
d[1] = d[end] = -1
137137
du[1] = dl[end] = 0
138138

139-
rowspec = spzeros(T,n,2)
140-
# first row last row
141-
rowspec[1,1] = rowspec[n,2] = 1
142-
colspec = spzeros(T,2,n)
143-
# third col third-to-last col
144-
colspec[1,3] = colspec[2,n-2] = 1
145-
valspec = zeros(T,2,2)
146-
# [1,3] [n,n-2]
147-
valspec[1,1] = valspec[2,2] = 1
139+
specs = _build_woodbury_specs(T, n,
140+
(1, 3, one(T)),
141+
(n, n-2, one(T))
142+
)
148143

149-
Woodbury(lufact!(Tridiagonal(dl, d, du), Val{false}), rowspec, valspec, colspec), zeros(TC, n)
144+
Woodbury(lufact!(Tridiagonal(dl, d, du), Val{false}), specs...), zeros(TC, n)
150145
end
151146

152147
function prefiltering_system{T,TC,GT<:GridType}(::Type{T}, ::Type{TC}, n::Int, ::Type{Quadratic{Line}}, ::Type{GT})
153148
dl,d,du = inner_system_diags(T,n,Quadratic{Line})
154149
d[1] = d[end] = 1
155150
du[1] = dl[end] = -2
156151

157-
rowspec = spzeros(T,n,2)
158-
# first row last row
159-
rowspec[1,1] = rowspec[n,2] = 1
160-
colspec = spzeros(T,2,n)
161-
# third col third-to-last col
162-
colspec[1,3] = colspec[2,n-2] = 1
163-
valspec = zeros(T,2,2)
164-
# [1,3] [n,n-2]
165-
valspec[1,1] = valspec[2,2] = 1
152+
specs = _build_woodbury_specs(T, n,
153+
(1, 3, one(T)),
154+
(n, n-2, one(T)),
155+
)
166156

167-
Woodbury(lufact!(Tridiagonal(dl, d, du), Val{false}), rowspec, valspec, colspec), zeros(TC, n)
157+
Woodbury(lufact!(Tridiagonal(dl, d, du), Val{false}), specs...), zeros(TC, n)
168158
end
169159

170160
function prefiltering_system{T,TC,GT<:GridType}(::Type{T}, ::Type{TC}, n::Int, ::Type{Quadratic{Free}}, ::Type{GT})
171161
dl,d,du = inner_system_diags(T,n,Quadratic{Free})
172162
d[1] = d[end] = 1
173163
du[1] = dl[end] = -3
174164

175-
rowspec = spzeros(T,n,4)
176-
# first row first row last row last row
177-
rowspec[1,1] = rowspec[1,2] = rowspec[n,3] = rowspec[n,4] = 1
178-
colspec = spzeros(T,4,n)
179-
# third col fourth col third-to-last col fourth-to-last col
180-
colspec[1,3] = colspec[2,4] = colspec[3,n-2] = colspec[4,n-3] = 1
181-
valspec = zeros(T,4,4)
182-
# [1,3] [n,n-2]
183-
valspec[1,1] = valspec[3,3] = 3
184-
# [1,4] [n,n-3]
185-
valspec[2,2] = valspec[4,4] = -1
165+
specs = _build_woodbury_specs(T, n,
166+
(1, 3, 3),
167+
(1, 4, -1),
168+
(n, n-2, 3),
169+
(n, n-3, -1))
186170

187-
Woodbury(lufact!(Tridiagonal(dl, d, du), Val{false}), rowspec, valspec, colspec), zeros(TC, n)
171+
Woodbury(lufact!(Tridiagonal(dl, d, du), Val{false}), specs...), zeros(TC, n)
188172
end
189173

190174
function prefiltering_system{T,TC,GT<:GridType}(::Type{T}, ::Type{TC}, n::Int, ::Type{Quadratic{Periodic}}, ::Type{GT})
191175
dl,d,du = inner_system_diags(T,n,Quadratic{Periodic})
192176

193-
rowspec = spzeros(T,n,2)
194-
# first row last row
195-
rowspec[1,1] = rowspec[n,2] = 1
196-
colspec = spzeros(T,2,n)
197-
# last col first col
198-
colspec[1,n] = colspec[2,1] = 1
199-
valspec = zeros(T,2,2)
200-
# [1,n] [n,1]
201-
valspec[1,1] = valspec[2,2] = SimpleRatio(1,8)
177+
specs = _build_woodbury_specs(T, n,
178+
(1, n, du[1]),
179+
(n, 1, dl[end])
180+
)
202181

203-
Woodbury(lufact!(Tridiagonal(dl, d, du), Val{false}), rowspec, valspec, colspec), zeros(TC, n)
182+
Woodbury(lufact!(Tridiagonal(dl, d, du), Val{false}), specs...), zeros(TC, n)
204183
end
205184

206185

0 commit comments

Comments
 (0)