@@ -4,36 +4,30 @@ struct WrappedMap{T, A<:MapOrVecOrMat} <: LinearMap{T}
4
4
_ishermitian:: Bool
5
5
_isposdef:: Bool
6
6
end
7
- function WrappedMap {T} (lmap:: MapOrMatrix ;
7
+ function WrappedMap {T} (lmap:: MapOrVecOrMat ;
8
8
issymmetric:: Bool = _issymmetric (lmap),
9
9
ishermitian:: Bool = _ishermitian (lmap),
10
10
isposdef:: Bool = _isposdef (lmap)) where {T}
11
11
WrappedMap {T, typeof(lmap)} (lmap, issymmetric, ishermitian, isposdef)
12
12
end
13
- function WrappedMap {T} (lmap:: AbstractVector ;
14
- issym:: Bool = false ,
15
- isherm:: Bool = false ,
16
- ispd:: Bool = false ) where {T}
17
- WrappedMap {T, typeof(lmap)} (lmap,
18
- length (lmap) == 1 && issymmetric (first (lmap)),
19
- length (lmap) == 1 && ishermitian (first (lmap)),
20
- length (lmap) == 1 && isposdef (first (lmap)))
21
- end
22
13
WrappedMap (lmap:: MapOrVecOrMat{T} ; kwargs... ) where {T} = WrappedMap {T} (lmap; kwargs... )
23
14
24
15
# cheap property checks (usually by type)
16
+ _issymmetric (A:: AbstractVector ) = length (A) == 1 && issymmetric (first (A))
25
17
_issymmetric (A:: AbstractMatrix ) = false
26
18
_issymmetric (A:: AbstractQ ) = false
27
19
_issymmetric (A:: LinearMap ) = issymmetric (A)
28
20
_issymmetric (A:: LinearAlgebra.RealHermSymComplexSym ) = issymmetric (A)
29
21
_issymmetric (A:: Union{Bidiagonal,Diagonal,SymTridiagonal,Tridiagonal} ) = issymmetric (A)
30
22
23
+ _ishermitian (A:: AbstractVector ) = length (A) == 1 && ishermitian (first (A))
31
24
_ishermitian (A:: AbstractMatrix ) = false
32
25
_ishermitian (A:: AbstractQ ) = false
33
26
_ishermitian (A:: LinearMap ) = ishermitian (A)
34
27
_ishermitian (A:: LinearAlgebra.RealHermSymComplexHerm ) = ishermitian (A)
35
28
_ishermitian (A:: Union{Bidiagonal,Diagonal,SymTridiagonal,Tridiagonal} ) = ishermitian (A)
36
29
30
+ _isposdef (A:: AbstractVector ) = length (A) == 1 && isposdef (first (A))
37
31
_isposdef (A:: AbstractMatrix ) = false
38
32
_isposdef (A:: AbstractQ ) = false
39
33
_isposdef (A:: LinearMap ) = isposdef (A)
0 commit comments