6565
6666storage_type (:: ProdOp{T,U,V,vecT} ) where {T,U,V,vecT} = vecT
6767
68- mutable struct ProdNormalOp{T,S,U,V <: AbstractVector{T} } <: AbstractLinearOperator{T}
69- nrow :: Int
70- ncol :: Int
71- symmetric :: Bool
72- hermitian :: Bool
73- prod! :: Function
74- tprod! :: Nothing
75- ctprod! :: Nothing
68+ mutable struct ProdNormalOp{T, vecT <: AbstractVector{T} , S, U } <: AbstractLinearOperator{T}
69+ const nrow :: Int
70+ const ncol :: Int
71+ const symmetric :: Bool
72+ const hermitian :: Bool
73+ const prod! :: Function
74+ const tprod! :: Nothing
75+ const ctprod! :: Nothing
7676 nprod :: Int
7777 ntprod :: Int
7878 nctprod :: Int
79- args5 :: Bool
80- use_prod5! :: Bool
81- allocated5 :: Bool
82- Mv5 :: V
83- Mtu5 :: V
84- opOuter:: S
85- normalOpInner:: U
86- tmp:: V
79+ Mv :: vecT
80+ Mtu :: vecT
81+ const opOuter:: S
82+ const normalOpInner:: U
83+ tmp:: vecT
8784end
8885
89- storage_type (op :: ProdNormalOp ) = typeof (op . Mv5)
86+ storage_type (:: ProdNormalOp{T, vecT} ) where {T, vecT} = vecT
9087
9188
9289function ProdNormalOp (opOuter, normalOpInner, tmp)
@@ -101,7 +98,7 @@ function ProdNormalOp(opOuter, normalOpInner, tmp)
10198 , (res,x) -> produ! (res, opOuter, normalOpInner, tmp, x)
10299 , nothing
103100 , nothing
104- , 0 , 0 , 0 , false , false , false , similar (tmp, 0 ), similar (tmp, 0 )
101+ , 0 , 0 , 0 , similar (tmp, 0 ), similar (tmp, 0 )
105102 , opOuter, normalOpInner, tmp)
106103end
107104
112109"""
113110 normalOperator(prod::ProdOp{T, <:WeightingOp, matT}; kwargs...)
114111
115- Fuses weights of `ẀeightingOp ` by computing `adjoint.(weights) .* weights`
112+ Fuses weights of `WeightingOp ` by computing `adjoint.(weights) .* weights`
116113"""
117114normalOperator (S:: ProdOp{T, <:WeightingOp, matT} ; kwargs... ) where {T, matT} = normalOperator (S. B, WeightingOp (adjoint .(S. A. weights) .* S. A. weights); kwargs... )
118115function normalOperator (S:: ProdOp , W= nothing ; kwargs... )
0 commit comments