1
- export LSR1Operator, diag # , InverseLSR1Operator
1
+ export LSR1Operator, diag
2
2
3
3
" A data type to hold information relative to LSR1 operators."
4
4
mutable struct LSR1Data{T, I <: Integer }
@@ -20,9 +20,7 @@ function LSR1Data(
20
20
n:: I ;
21
21
mem:: I = 5 ,
22
22
scaling:: Bool = true ,
23
- inverse:: Bool = false ,
24
23
) where {I <: Integer }
25
- inverse && @warn " inverse LSR1 operator not yet implemented"
26
24
LSR1Data {T, I} (
27
25
max (mem, 1 ),
28
26
scaling,
@@ -49,7 +47,6 @@ mutable struct LSR1Operator{T, I <: Integer, F, Ft, Fct} <: AbstractQuasiNewtonO
49
47
prod!:: F # apply the operator to a vector
50
48
tprod!:: Ft # apply the transpose operator to a vector
51
49
ctprod!:: Fct # apply the transpose conjugate operator to a vector
52
- inverse:: Bool
53
50
data:: LSR1Data{T, I}
54
51
nprod:: I
55
52
ntprod:: I
@@ -64,7 +61,6 @@ LSR1Operator{T}(
64
61
prod!:: F ,
65
62
tprod!:: Ft ,
66
63
ctprod!:: Fct ,
67
- inverse:: Bool ,
68
64
data:: LSR1Data{T, I} ,
69
65
) where {T, I <: Integer , F, Ft, Fct} = LSR1Operator {T, I, F, Ft, Fct} (
70
66
nrow,
@@ -74,7 +70,6 @@ LSR1Operator{T}(
74
70
prod!,
75
71
tprod!,
76
72
ctprod!,
77
- inverse,
78
73
data,
79
74
0 ,
80
75
0 ,
@@ -116,7 +111,7 @@ function LSR1Operator(T::Type, n::I; kwargs...) where {I <: Integer}
116
111
end
117
112
118
113
prod! = @closure (res, x, α, β) -> lsr1_multiply (res, lsr1_data, x, α, β)
119
- return LSR1Operator {T} (n, n, true , true , prod!, nothing , nothing , false , lsr1_data)
114
+ return LSR1Operator {T} (n, n, true , true , prod!, nothing , nothing , lsr1_data)
120
115
end
121
116
122
117
LSR1Operator (n:: I ; kwargs... ) where {I <: Integer } = LSR1Operator (Float64, n; kwargs... )
@@ -197,7 +192,6 @@ function diag(op::LSR1Operator{T}) where {T}
197
192
end
198
193
199
194
function diag! (op:: LSR1Operator{T} , d) where {T}
200
- op. inverse && throw (" only the diagonal of a forward L-SR1 approximation is available" )
201
195
data = op. data
202
196
203
197
fill! (d, 1 )
0 commit comments