Skip to content

Commit 927a734

Browse files
Improve IdentityOperator and ScaledOperator actions
1 parent 7f2a61a commit 927a734

File tree

1 file changed

+10
-24
lines changed

1 file changed

+10
-24
lines changed

src/basic.jl

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -77,16 +77,14 @@ function (ii::IdentityOperator)(v::AbstractVecOrMat, u, p, t; kwargs...)
7777
end
7878

7979
# In-place: w is destination, v is action vector, u is update vector
80-
function (ii::IdentityOperator)(w::AbstractVecOrMat, v::AbstractVecOrMat, u, p, t; kwargs...)
80+
@inline function (ii::IdentityOperator)(w::AbstractVecOrMat, v::AbstractVecOrMat, u, p, t; kwargs...)
8181
@assert size(v, 1) == ii.len
82-
update_coefficients!(ii, u, p, t; kwargs...)
8382
copy!(w, v)
8483
end
8584

8685
# In-place with scaling: w = α*(ii*v) + β*w
87-
function (ii::IdentityOperator)(w::AbstractVecOrMat, v::AbstractVecOrMat, u, p, t, α, β; kwargs...)
86+
@inline function (ii::IdentityOperator)(w::AbstractVecOrMat, v::AbstractVecOrMat, u, p, t, α, β; kwargs...)
8887
@assert size(v, 1) == ii.len
89-
update_coefficients!(ii, u, p, t; kwargs...)
9088
mul!(w, I, v, α, β)
9189
end
9290

@@ -388,29 +386,17 @@ function (L::ScaledOperator)(v::AbstractVecOrMat, u, p, t; kwargs...)
388386
end
389387

390388
# In-place: w is destination, v is action vector, u is update vector
391-
function (L::ScaledOperator)(w::AbstractVecOrMat, v::AbstractVecOrMat, u, p, t; kwargs...)
392-
update_coefficients!(L, u, p, t; kwargs...)
393-
if iszero(L.λ)
394-
lmul!(false, w)
395-
return w
396-
else
397-
a = convert(Number, L.λ)
398-
mul!(w, L.L, v, a, false)
399-
return w
400-
end
389+
@inline function (L::ScaledOperator)(w::AbstractVecOrMat, v::AbstractVecOrMat, u, p, t; kwargs...)
390+
update_coefficients!(L.λ, u, p, t; kwargs...)
391+
a = convert(Number, L.λ)
392+
return L.L(w, v, u, p, t, a, false; kwargs...)
401393
end
402394

403395
# In-place with scaling: w = α*(L*v) + β*w
404-
function (L::ScaledOperator)(w::AbstractVecOrMat, v::AbstractVecOrMat, u, p, t, α, β; kwargs...)
405-
update_coefficients!(L, u, p, t; kwargs...)
406-
if iszero(L.λ)
407-
lmul!(β, w)
408-
return w
409-
else
410-
a = convert(Number, L.λ * α)
411-
mul!(w, L.L, v, a, β)
412-
return w
413-
end
396+
@inline function (L::ScaledOperator)(w::AbstractVecOrMat, v::AbstractVecOrMat, u, p, t, α, β; kwargs...)
397+
update_coefficients!(L.λ, u, p, t; kwargs...)
398+
a = convert(Number, L.λ * α)
399+
return L.L(w, v, u, p, t, a, β; kwargs...)
414400
end
415401

416402

0 commit comments

Comments
 (0)