Skip to content

Commit b70b102

Browse files
get tests passing
1 parent 9d4d0b5 commit b70b102

File tree

7 files changed

+301
-305
lines changed

7 files changed

+301
-305
lines changed

src/basic.jl

Lines changed: 97 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -38,35 +38,35 @@ has_ldiv!(::IdentityOperator) = true
3838

3939
# operator application
4040
for op in (:*, :\)
41-
@eval function Base.$op(ii::IdentityOperator, u::AbstractVecOrMat)
42-
@assert size(u, 1) == ii.len
43-
copy(u)
41+
@eval function Base.$op(ii::IdentityOperator, v::AbstractVecOrMat)
42+
@assert size(v, 1) == ii.len
43+
copy(v)
4444
end
4545
end
4646

4747
@inline function LinearAlgebra.mul!(
48-
v::AbstractVecOrMat, ii::IdentityOperator, u::AbstractVecOrMat)
49-
@assert size(u, 1) == ii.len
50-
copy!(v, u)
48+
w::AbstractVecOrMat, ii::IdentityOperator, v::AbstractVecOrMat)
49+
@assert size(v, 1) == ii.len
50+
copy!(w, v)
5151
end
5252

53-
@inline function LinearAlgebra.mul!(v::AbstractVecOrMat,
53+
@inline function LinearAlgebra.mul!(w::AbstractVecOrMat,
5454
ii::IdentityOperator,
55-
u::AbstractVecOrMat,
55+
v::AbstractVecOrMat,
5656
α,
5757
β)
58-
@assert size(u, 1) == ii.len
59-
mul!(v, I, u, α, β)
58+
@assert size(v, 1) == ii.len
59+
mul!(w, I, v, α, β)
6060
end
6161

62-
function LinearAlgebra.ldiv!(v::AbstractVecOrMat, ii::IdentityOperator, u::AbstractVecOrMat)
63-
@assert size(u, 1) == ii.len
64-
copy!(v, u)
62+
function LinearAlgebra.ldiv!(w::AbstractVecOrMat, ii::IdentityOperator, v::AbstractVecOrMat)
63+
@assert size(v, 1) == ii.len
64+
copy!(w, v)
6565
end
6666

67-
function LinearAlgebra.ldiv!(ii::IdentityOperator, u::AbstractVecOrMat)
68-
@assert size(u, 1) == ii.len
69-
u
67+
function LinearAlgebra.ldiv!(ii::IdentityOperator, v::AbstractVecOrMat)
68+
@assert size(v, 1) == ii.len
69+
v
7070
end
7171

7272
# Out-of-place: v is action vector, u is update vector
@@ -151,20 +151,20 @@ has_adjoint(::NullOperator) = true
151151
has_mul!(::NullOperator) = true
152152

153153
# operator application
154-
Base.:*(nn::NullOperator, u::AbstractVecOrMat) = (@assert size(u, 1) == nn.len; zero(u))
154+
Base.:*(nn::NullOperator, v::AbstractVecOrMat) = (@assert size(v, 1) == nn.len; zero(v))
155155

156-
function LinearAlgebra.mul!(v::AbstractVecOrMat, nn::NullOperator, u::AbstractVecOrMat)
157-
@assert size(u, 1) == size(v, 1) == nn.len
158-
lmul!(false, v)
156+
function LinearAlgebra.mul!(w::AbstractVecOrMat, nn::NullOperator, v::AbstractVecOrMat)
157+
@assert size(v, 1) == size(w, 1) == nn.len
158+
lmul!(false, w)
159159
end
160160

161-
function LinearAlgebra.mul!(v::AbstractVecOrMat,
161+
function LinearAlgebra.mul!(w::AbstractVecOrMat,
162162
nn::NullOperator,
163-
u::AbstractVecOrMat,
163+
v::AbstractVecOrMat,
164164
α,
165165
β)
166-
@assert size(u, 1) == size(v, 1) == nn.len
167-
lmul!(β, v)
166+
@assert size(v, 1) == size(w, 1) == nn.len
167+
lmul!(β, w)
168168
end
169169

170170
# Out-of-place: v is action vector, u is update vector
@@ -325,9 +325,9 @@ has_mul!(L::ScaledOperator) = has_mul!(L.L)
325325
has_ldiv(L::ScaledOperator) = has_ldiv(L.L) & !iszero(L.λ)
326326
has_ldiv!(L::ScaledOperator) = has_ldiv!(L.L) & !iszero(L.λ)
327327

328-
function cache_internals(L::ScaledOperator, u::AbstractVecOrMat)
329-
@reset L.L = cache_operator(L.L, u)
330-
@reset L.λ = cache_operator(L.λ, u)
328+
function cache_internals(L::ScaledOperator, v::AbstractVecOrMat)
329+
@reset L.L = cache_operator(L.L, v)
330+
@reset L.λ = cache_operator(L.λ, v)
331331
L
332332
end
333333

@@ -347,34 +347,34 @@ for fact in (:lu, :lu!,
347347
end
348348

349349
# operator application, inversion
350-
Base.:*(L::ScaledOperator, u::AbstractVecOrMat) = L.λ * (L.L * u)
351-
Base.:\(L::ScaledOperator, u::AbstractVecOrMat) = L.λ \ (L.L \ u)
350+
Base.:*(L::ScaledOperator, v::AbstractVecOrMat) = L.λ * (L.L * v)
351+
Base.:\(L::ScaledOperator, v::AbstractVecOrMat) = L.λ \ (L.L \ v)
352352

353353
@inline function LinearAlgebra.mul!(
354-
v::AbstractVecOrMat, L::ScaledOperator, u::AbstractVecOrMat)
355-
iszero(L.λ) && return lmul!(false, v)
354+
w::AbstractVecOrMat, L::ScaledOperator, v::AbstractVecOrMat)
355+
iszero(L.λ) && return lmul!(false, w)
356356
a = convert(Number, L.λ)
357-
mul!(v, L.L, u, a, false)
357+
mul!(w, L.L, v, a, false)
358358
end
359359

360-
@inline function LinearAlgebra.mul!(v::AbstractVecOrMat,
360+
@inline function LinearAlgebra.mul!(w::AbstractVecOrMat,
361361
L::ScaledOperator,
362-
u::AbstractVecOrMat,
362+
v::AbstractVecOrMat,
363363
α,
364364
β)
365-
iszero(L.λ) && return lmul!(β, v)
365+
iszero(L.λ) && return lmul!(β, w)
366366
a = convert(Number, L.λ * α)
367-
mul!(v, L.L, u, a, β)
367+
mul!(w, L.L, v, a, β)
368368
end
369369

370-
function LinearAlgebra.ldiv!(v::AbstractVecOrMat, L::ScaledOperator, u::AbstractVecOrMat)
371-
ldiv!(v, L.L, u)
372-
ldiv!(L.λ, v)
370+
function LinearAlgebra.ldiv!(w::AbstractVecOrMat, L::ScaledOperator, v::AbstractVecOrMat)
371+
ldiv!(w, L.L, v)
372+
ldiv!(L.λ, w)
373373
end
374374

375-
function LinearAlgebra.ldiv!(L::ScaledOperator, u::AbstractVecOrMat)
376-
ldiv!(L.λ, u)
377-
ldiv!(L.L, u)
375+
function LinearAlgebra.ldiv!(L::ScaledOperator, v::AbstractVecOrMat)
376+
ldiv!(L.λ, v)
377+
ldiv!(L.L, v)
378378
end
379379

380380
# Out-of-place: v is action vector, u is update vector
@@ -570,12 +570,12 @@ islinear(L::AddedOperator) = all(islinear, getops(L))
570570
Base.iszero(L::AddedOperator) = all(iszero, getops(L))
571571
has_adjoint(L::AddedOperator) = all(has_adjoint, L.ops)
572572

573-
@generated function cache_internals(L::AddedOperator, u::AbstractVecOrMat)
573+
@generated function cache_internals(L::AddedOperator, v::AbstractVecOrMat)
574574
ops_types = L.parameters[2].parameters
575575
N = length(ops_types)
576576
quote
577577
Base.@nexprs $N i->begin
578-
@reset L.ops[i] = cache_operator(L.ops[i], u)
578+
@reset L.ops[i] = cache_operator(L.ops[i], v)
579579
end
580580
L
581581
end
@@ -584,36 +584,36 @@ end
584584
getindex(L::AddedOperator, i::Int) = sum(op -> op[i], L.ops)
585585
getindex(L::AddedOperator, I::Vararg{Int, N}) where {N} = sum(op -> op[I...], L.ops)
586586

587-
function Base.:*(L::AddedOperator, u::AbstractVecOrMat)
588-
sum(op -> iszero(op) ? zero(u) : op * u, L.ops)
587+
function Base.:*(L::AddedOperator, v::AbstractVecOrMat)
588+
sum(op -> iszero(op) ? zero(v) : op * v, L.ops)
589589
end
590590

591591
@generated function LinearAlgebra.mul!(
592-
v::AbstractVecOrMat, L::AddedOperator, u::AbstractVecOrMat)
592+
w::AbstractVecOrMat, L::AddedOperator, v::AbstractVecOrMat)
593593
ops_types = L.parameters[2].parameters
594594
N = length(ops_types)
595595
quote
596-
mul!(v, L.ops[1], u)
596+
mul!(w, L.ops[1], v)
597597
Base.@nexprs $(N - 1) i->begin
598-
mul!(v, L.ops[i + 1], u, true, true)
598+
mul!(w, L.ops[i + 1], v, true, true)
599599
end
600-
v
600+
w
601601
end
602602
end
603603

604-
@generated function LinearAlgebra.mul!(v::AbstractVecOrMat,
604+
@generated function LinearAlgebra.mul!(w::AbstractVecOrMat,
605605
L::AddedOperator,
606-
u::AbstractVecOrMat,
606+
v::AbstractVecOrMat,
607607
α,
608608
β)
609609
ops_types = L.parameters[2].parameters
610610
N = length(ops_types)
611611
quote
612-
lmul!(β, v)
612+
lmul!(β, w)
613613
Base.@nexprs $(N) i->begin
614-
mul!(v, L.ops[i], u, α, true)
614+
mul!(w, L.ops[i], v, α, true)
615615
end
616-
v
616+
w
617617
end
618618
end
619619
# Out-of-place: v is action vector, u is update vector
@@ -797,33 +797,31 @@ end
797797
#Base.:*(L::ComposedOperator, u::AbstractVecOrMat) = foldl((acc, op) -> op * acc, reverse(L.ops); init=u)
798798
#Base.:\(L::ComposedOperator, u::AbstractVecOrMat) = foldl((acc, op) -> op \ acc, L.ops; init=u)
799799

800-
function Base.:\(L::ComposedOperator, u::AbstractVecOrMat)
801-
v = u
800+
function Base.:\(L::ComposedOperator, v::AbstractVecOrMat)
802801
for op in L.ops
803802
v = op \ v
804803
end
805804

806805
v
807806
end
808807

809-
function Base.:*(L::ComposedOperator, u::AbstractVecOrMat)
810-
v = u
808+
function Base.:*(L::ComposedOperator, v::AbstractVecOrMat)
811809
for op in reverse(L.ops)
812810
v = op * v
813811
end
814812

815813
v
816814
end
817815

818-
function cache_self(L::ComposedOperator, u::AbstractVecOrMat)
819-
K = size(u, 2)
820-
cache = (zero(u),)
816+
function cache_self(L::ComposedOperator, v::AbstractVecOrMat)
817+
K = size(v, 2)
818+
cache = (zero(v),)
821819

822820
for i in reverse(2:length(L.ops))
823821
op = L.ops[i]
824822

825823
M = size(op, 1)
826-
sz = u isa AbstractMatrix ? (M, K) : (M,)
824+
sz = v isa AbstractMatrix ? (M, K) : (M,)
827825

828826
T = if op isa FunctionOperator #
829827
# FunctionOperator isn't guaranteed to play by the rules of
@@ -834,16 +832,16 @@ function cache_self(L::ComposedOperator, u::AbstractVecOrMat)
834832
promote_type(eltype.((op, cache[1]))...)
835833
end
836834

837-
cache = (similar(u, T, sz), cache...)
835+
cache = (similar(v, T, sz), cache...)
838836
end
839837

840838
@reset L.cache = cache
841839
L
842840
end
843841

844-
function cache_internals(L::ComposedOperator, u::AbstractVecOrMat)
842+
function cache_internals(L::ComposedOperator, v::AbstractVecOrMat)
845843
if isnothing(L.cache)
846-
L = cache_self(L, u)
844+
L = cache_self(L, v)
847845
end
848846

849847
ops = ()
@@ -854,49 +852,49 @@ function cache_internals(L::ComposedOperator, u::AbstractVecOrMat)
854852
@reset L.ops = ops
855853
end
856854

857-
function LinearAlgebra.mul!(v::AbstractVecOrMat, L::ComposedOperator, u::AbstractVecOrMat)
855+
function LinearAlgebra.mul!(w::AbstractVecOrMat, L::ComposedOperator, v::AbstractVecOrMat)
858856
@assert iscached(L) """cache needs to be set up for operator of type
859-
$L. Set up cache by calling `cache_operator(L, u)`"""
857+
$L. Set up cache by calling `cache_operator(L, v)`"""
860858

861-
vecs = (v, L.cache[1:(end - 1)]..., u)
859+
vecs = (w, L.cache[1:(end - 1)]..., v)
862860
for i in reverse(1:length(L.ops))
863861
mul!(vecs[i], L.ops[i], vecs[i + 1])
864862
end
865-
v
863+
w
866864
end
867865

868-
function LinearAlgebra.mul!(v::AbstractVecOrMat,
866+
function LinearAlgebra.mul!(w::AbstractVecOrMat,
869867
L::ComposedOperator,
870-
u::AbstractVecOrMat,
868+
v::AbstractVecOrMat,
871869
α,
872870
β)
873871
@assert iscached(L) """cache needs to be set up for operator of type
874-
$L. Set up cache by calling `cache_operator(L, u)`."""
872+
$L. Set up cache by calling `cache_operator(L, v)`."""
875873

876874
cache = L.cache[end]
877-
copy!(cache, v)
875+
copy!(cache, w)
878876

879-
mul!(v, L, u)
880-
lmul!(α, v)
881-
axpy!(β, cache, v)
877+
mul!(w, L, v)
878+
lmul!(α, w)
879+
axpy!(β, cache, w)
882880
end
883881

884-
function LinearAlgebra.ldiv!(v::AbstractVecOrMat, L::ComposedOperator, u::AbstractVecOrMat)
882+
function LinearAlgebra.ldiv!(w::AbstractVecOrMat, L::ComposedOperator, v::AbstractVecOrMat)
885883
@assert iscached(L) """cache needs to be set up for operator of type
886-
$L. Set up cache by calling `cache_operator(L, u)`."""
884+
$L. Set up cache by calling `cache_operator(L, v)`."""
887885

888-
vecs = (u, reverse(L.cache[1:(end - 1)])..., v)
886+
vecs = (v, reverse(L.cache[1:(end - 1)])..., w)
889887
for i in 1:length(L.ops)
890888
ldiv!(vecs[i + 1], L.ops[i], vecs[i])
891889
end
892-
v
890+
w
893891
end
894892

895-
function LinearAlgebra.ldiv!(L::ComposedOperator, u::AbstractVecOrMat)
893+
function LinearAlgebra.ldiv!(L::ComposedOperator, v::AbstractVecOrMat)
896894
for i in 1:length(L.ops)
897-
ldiv!(L.ops[i], u)
895+
ldiv!(L.ops[i], v)
898896
end
899-
u
897+
v
900898
end
901899

902900
# Out-of-place: v is action vector, u is update vector
@@ -1022,34 +1020,34 @@ function cache_internals(L::InvertedOperator, u::AbstractVecOrMat)
10221020
L
10231021
end
10241022

1025-
function LinearAlgebra.mul!(v::AbstractVecOrMat, L::InvertedOperator, u::AbstractVecOrMat)
1026-
ldiv!(v, L.L, u)
1023+
function LinearAlgebra.mul!(w::AbstractVecOrMat, L::InvertedOperator, v::AbstractVecOrMat)
1024+
ldiv!(w, L.L, v)
10271025
end
10281026

1029-
function LinearAlgebra.mul!(v::AbstractVecOrMat,
1027+
function LinearAlgebra.mul!(w::AbstractVecOrMat,
10301028
L::InvertedOperator,
1031-
u::AbstractVecOrMat,
1029+
v::AbstractVecOrMat,
10321030
α,
10331031
β)
10341032
@assert iscached(L) """cache needs to be set up for operator of type
1035-
$L. Set up cache by calling `cache_operator(L, u)`."""
1033+
$L. Set up cache by calling `cache_operator(L, v)`."""
10361034

1037-
copy!(L.cache, v)
1038-
ldiv!(v, L.L, u)
1039-
lmul!(α, v)
1040-
axpy!(β, L.cache, v)
1035+
copy!(L.cache, w)
1036+
ldiv!(w, L.L, v)
1037+
lmul!(α, w)
1038+
axpy!(β, L.cache, w)
10411039
end
10421040

1043-
function LinearAlgebra.ldiv!(v::AbstractVecOrMat, L::InvertedOperator, u::AbstractVecOrMat)
1044-
mul!(v, L.L, u)
1041+
function LinearAlgebra.ldiv!(w::AbstractVecOrMat, L::InvertedOperator, v::AbstractVecOrMat)
1042+
mul!(w, L.L, v)
10451043
end
10461044

1047-
function LinearAlgebra.ldiv!(L::InvertedOperator, u::AbstractVecOrMat)
1045+
function LinearAlgebra.ldiv!(L::InvertedOperator, v::AbstractVecOrMat)
10481046
@assert iscached(L) """cache needs to be set up for operator of type
1049-
$L. Set up cache by calling `cache_operator(L, u)`."""
1047+
$L. Set up cache by calling `cache_operator(L, v)`."""
10501048

1051-
copy!(L.cache, u)
1052-
mul!(u, L.L, L.cache)
1049+
copy!(L.cache, v)
1050+
mul!(v, L.L, L.cache)
10531051
end
10541052

10551053
# Out-of-place: v is action vector, u is update vector

0 commit comments

Comments
 (0)