3
3
# Methods operating on different special matrix types
4
4
5
5
# Interconversion between special matrix types
6
- convert (:: Type{Bidiagonal} , A:: Diagonal{T} ) where {T} =
7
- Bidiagonal (A. diag, zeros (T, size (A. diag,1 )- 1 ), :U )
8
- convert (:: Type{SymTridiagonal} , A:: Diagonal{T} ) where {T} =
9
- SymTridiagonal (A. diag, zeros (T, size (A. diag,1 )- 1 ))
10
- convert (:: Type{Tridiagonal} , A:: Diagonal{T} ) where {T} =
11
- Tridiagonal (zeros (T, size (A. diag,1 )- 1 ), A. diag, zeros (T, size (A. diag,1 )- 1 ))
6
+ convert (:: Type{Bidiagonal} , A:: Diagonal ) =
7
+ Bidiagonal (A. diag, fill! (similar (A. diag, length (A. diag)- 1 ), 0 ), :U )
8
+ convert (:: Type{SymTridiagonal} , A:: Diagonal ) =
9
+ SymTridiagonal (A. diag, fill! (similar (A. diag, length (A. diag)- 1 ), 0 ))
10
+ convert (:: Type{Tridiagonal} , A:: Diagonal ) =
11
+ Tridiagonal (fill! (similar (A. diag, length (A. diag)- 1 ), 0 ), A. diag,
12
+ fill! (similar (A. diag, length (A. diag)- 1 ), 0 ))
12
13
13
14
function convert (:: Type{Diagonal} , A:: Union{Bidiagonal, SymTridiagonal} )
14
15
if ! iszero (A. ev)
@@ -25,8 +26,8 @@ function convert(::Type{SymTridiagonal}, A::Bidiagonal)
25
26
end
26
27
27
28
convert (:: Type{Tridiagonal} , A:: Bidiagonal{T} ) where {T} =
28
- Tridiagonal (A. uplo == ' U' ? zeros (T, size (A. dv, 1 ) - 1 ) : A. ev, A. dv,
29
- A. uplo == ' U' ? A. ev : zeros (T, size (A. dv, 1 ) - 1 ))
29
+ Tridiagonal (A. uplo == ' U' ? fill! ( similar (A. ev), 0 ) : A. ev, A. dv,
30
+ A. uplo == ' U' ? A. ev : fill! ( similar (A. ev), 0 ))
30
31
31
32
function convert (:: Type{Bidiagonal} , A:: SymTridiagonal )
32
33
if ! iszero (A. ev)
0 commit comments