Skip to content

Commit 1689685

Browse files
authored
aggressive constprop in default_CachedOperator (#228)
* aggressive constprop in default_CachedOperator * static version check
1 parent dbe2bb5 commit 1689685

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

src/Operators/general/CachedOperator.jl

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,30 @@ CachedOperator(op::Operator,data::AbstractMatrix,sz::Tuple{Int,Int},pd=false) =
2424
CachedOperator(op::Operator,data::AbstractMatrix,padding=false) = CachedOperator(op,data,size(data),padding)
2525

2626

27-
28-
function default_CachedOperator(op::Operator;padding::Bool=false)
27+
@static if VERSION >= v"1.8"
28+
Base.@constprop :aggressive function default_CachedOperator(op::Operator;padding::Bool=false)
29+
_default_CachedOperator(op, padding)
30+
end
31+
else
32+
function default_CachedOperator(op::Operator;padding::Bool=false)
33+
_default_CachedOperator(op, padding)
34+
end
35+
end
36+
@inline function _default_CachedOperator(op::Operator, padding)
2937
if isbanded(op)
30-
CachedOperator(BandedMatrix,op;padding=padding)
38+
CachedOperator(BandedMatrix, op; padding=padding)
3139
elseif isbandedblockbanded(op) && !padding
32-
CachedOperator(BandedBlockBandedMatrix,op)
40+
CachedOperator(BandedBlockBandedMatrix, op)
3341
elseif isblockbanded(op)
34-
CachedOperator(BlockBandedMatrix,op;padding=padding)
42+
CachedOperator(BlockBandedMatrix, op; padding=padding)
3543
elseif israggedbelow(op)
36-
CachedOperator(RaggedMatrix,op;padding=padding)
44+
CachedOperator(RaggedMatrix, op; padding=padding)
3745
else
38-
CachedOperator(Matrix,op;padding=padding)
46+
CachedOperator(Matrix, op; padding=padding)
3947
end
4048
end
4149

42-
CachedOperator(op::Operator;padding::Bool=false) = default_CachedOperator(op;padding=padding)
50+
CachedOperator(op::Operator; kw...) = default_CachedOperator(op; kw...)
4351

4452
"""
4553
cache(op::Operator)

0 commit comments

Comments
 (0)