Skip to content

Commit 89772d4

Browse files
authored
fix some convert methods that depwarned (#23494)
1 parent 5645fb2 commit 89772d4

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

base/linalg/special.jl

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
# Methods operating on different special matrix types
44

55
# 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))
1213

1314
function convert(::Type{Diagonal}, A::Union{Bidiagonal, SymTridiagonal})
1415
if !iszero(A.ev)
@@ -25,8 +26,8 @@ function convert(::Type{SymTridiagonal}, A::Bidiagonal)
2526
end
2627

2728
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))
3031

3132
function convert(::Type{Bidiagonal}, A::SymTridiagonal)
3233
if !iszero(A.ev)

base/test.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1422,4 +1422,6 @@ Base.size(a::GenericArray) = size(a.a)
14221422
Base.getindex(a::GenericArray, i...) = a.a[i...]
14231423
Base.setindex!(a::GenericArray, x, i...) = a.a[i...] = x
14241424

1425+
Base.similar(A::GenericArray, s::Integer...) = GenericArray(similar(A.a, s...))
1426+
14251427
end # module

test/linalg/special.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ srand(1)
1010
A = Diagonal(a)
1111
@testset for newtype in [Diagonal, Bidiagonal, SymTridiagonal, Tridiagonal, Matrix]
1212
@test full(convert(newtype, A)) == full(A)
13+
@test full(convert(newtype, Diagonal(GenericArray(a)))) == full(A)
1314
end
1415

1516
@testset for isupper in (true, false)

0 commit comments

Comments
 (0)