@@ -52,7 +52,7 @@ Change `S` to use LinearOperators on GPU.
5252"""
5353function opEye (T:: Type , n:: Int ; S = Vector{T})
5454 prod! = @closure (res, v, α, β) -> mulOpEye! (res, v, α, β, n)
55- LinearOperator {T} (n, n, true , true , prod!, prod!, prod!, S = S )
55+ LinearOperator {T, S } (n, n, true , true , prod!, prod!, prod!)
5656end
5757
5858opEye (n:: Int ) = opEye (Float64, n)
@@ -71,7 +71,7 @@ function opEye(T::Type, nrow::I, ncol::I; S = Vector{T}) where {I <: Integer}
7171 return opEye (T, nrow; S = S)
7272 end
7373 prod! = @closure (res, v, α, β) -> mulOpEye! (res, v, α, β, min (nrow, ncol))
74- return LinearOperator {T} (nrow, ncol, false , false , prod!, prod!, prod!, S = S )
74+ return LinearOperator {T, S } (nrow, ncol, false , false , prod!, prod!, prod!)
7575end
7676
7777opEye (nrow:: I , ncol:: I ) where {I <: Integer } = opEye (Float64, nrow, ncol)
@@ -94,7 +94,7 @@ Change `S` to use LinearOperators on GPU.
9494"""
9595function opOnes (T:: Type , nrow:: I , ncol:: I ; S = Vector{T}) where {I <: Integer }
9696 prod! = @closure (res, v, α, β) -> mulOpOnes! (res, v, α, β)
97- LinearOperator {T} (nrow, ncol, nrow == ncol, nrow == ncol, prod!, prod!, prod!, S = S )
97+ LinearOperator {T, S } (nrow, ncol, nrow == ncol, nrow == ncol, prod!, prod!, prod!)
9898end
9999
100100opOnes (nrow:: I , ncol:: I ) where {I <: Integer } = opOnes (Float64, nrow, ncol)
@@ -117,7 +117,7 @@ Change `S` to use LinearOperators on GPU.
117117"""
118118function opZeros (T:: Type , nrow:: I , ncol:: I ; S = Vector{T}) where {I <: Integer }
119119 prod! = @closure (res, v, α, β) -> mulOpZeros! (res, v, α, β)
120- LinearOperator {T} (nrow, ncol, nrow == ncol, nrow == ncol, prod!, prod!, prod!, S = S )
120+ LinearOperator {T, S } (nrow, ncol, nrow == ncol, nrow == ncol, prod!, prod!, prod!)
121121end
122122
123123opZeros (nrow:: I , ncol:: I ) where {I <: Integer } = opZeros (Float64, nrow, ncol)
@@ -138,7 +138,7 @@ Diagonal operator with the vector `d` on its main diagonal.
138138function opDiagonal (d:: AbstractVector{T} ) where {T}
139139 prod! = @closure (res, v, α, β) -> mulSquareOpDiagonal! (res, d, v, α, β)
140140 ctprod! = @closure (res, w, α, β) -> mulSquareOpDiagonal! (res, conj .(d), w, α, β)
141- LinearOperator {T} (length (d), length (d), true , isreal (d), prod!, prod!, ctprod!, S = typeof (d) )
141+ LinearOperator {T, typeof(d) } (length (d), length (d), true , isreal (d), prod!, prod!, ctprod!)
142142end
143143
144144function mulOpDiagonal! (res, d, v, α, β:: T , n_min) where {T}
@@ -161,11 +161,11 @@ function opDiagonal(nrow::I, ncol::I, d::AbstractVector{T}) where {T, I <: Integ
161161 prod! = @closure (res, v, α, β) -> mulOpDiagonal! (res, d, v, α, β, n_min)
162162 tprod! = @closure (res, u, α, β) -> mulOpDiagonal! (res, d, u, α, β, n_min)
163163 ctprod! = @closure (res, w, α, β) -> mulOpDiagonal! (res, conj .(d), w, α, β, n_min)
164- LinearOperator {T} (nrow, ncol, false , false , prod!, tprod!, ctprod!, S = typeof (d) )
164+ LinearOperator {T, typeof(d) } (nrow, ncol, false , false , prod!, tprod!, ctprod!)
165165end
166166
167167function mulRestrict! (res, I, v, α, β)
168- res .= v[I]
168+ res .= view (v, I)
169169end
170170
171171function multRestrict! (res, I, u, α, β)
@@ -190,9 +190,9 @@ function opRestriction(Idx::LinearOperatorIndexType{I}, ncol::I; S = nothing) wh
190190 prod! = @closure (res, v, α, β) -> mulRestrict! (res, Idx, v, α, β)
191191 tprod! = @closure (res, u, α, β) -> multRestrict! (res, Idx, u, α, β)
192192 if isnothing (S)
193- return LinearOperator {I} (nrow, ncol, false , false , prod!, tprod!, tprod!)
193+ return LinearOperator {I, Vector{I} } (nrow, ncol, false , false , prod!, tprod!, tprod!)
194194 else
195- return LinearOperator {I} (nrow, ncol, false , false , prod!, tprod!, tprod!; S = S )
195+ return LinearOperator {I, S } (nrow, ncol, false , false , prod!, tprod!, tprod!)
196196 end
197197end
198198
@@ -291,5 +291,5 @@ function BlockDiagonalOperator(ops...; S = promote_type(storage_type.(ops)...))
291291 symm = all ((issymmetric (op) for op ∈ ops))
292292 herm = all ((ishermitian (op) for op ∈ ops))
293293 args5 = all ((has_args5 (op) for op ∈ ops))
294- CompositeLinearOperator (T, nrow, ncol, symm, herm, prod!, tprod!, ctprod!, args5, S = S )
294+ CompositeLinearOperator (T, nrow, ncol, symm, herm, prod!, tprod!, ctprod!, args5, S)
295295end
0 commit comments