@@ -93,6 +93,8 @@ function Bidiagonal(A::AbstractMatrix, uplo::Symbol)
9393 Bidiagonal (diag (A, 0 ), diag (A, uplo == :U ? 1 : - 1 ), uplo)
9494end
9595
96+ Bidiagonal (A:: Bidiagonal ) = A
97+
9698function getindex (A:: Bidiagonal{T} , i:: Integer , j:: Integer ) where T
9799 if ! ((1 <= i <= size (A,2 )) && (1 <= j <= size (A,2 )))
98100 throw (BoundsError (A,(i,j)))
@@ -131,7 +133,7 @@ function Base.replace_in_print_matrix(A::Bidiagonal,i::Integer,j::Integer,s::Abs
131133end
132134
133135# Converting from Bidiagonal to dense Matrix
134- function convert ( :: Type{ Matrix{T}} , A:: Bidiagonal ) where T
136+ function Matrix {T} ( A:: Bidiagonal ) where T
135137 n = size (A, 1 )
136138 B = zeros (T, n, n)
137139 for i = 1 : n - 1
@@ -145,14 +147,14 @@ function convert(::Type{Matrix{T}}, A::Bidiagonal) where T
145147 B[n,n] = A. dv[n]
146148 return B
147149end
148- convert ( :: Type{ Matrix} , A:: Bidiagonal{T} ) where {T} = convert ( Matrix{T}, A)
149- convert ( :: Type{ Array} , A:: Bidiagonal ) = convert ( Matrix, A)
150- full (A:: Bidiagonal ) = convert ( Array, A)
150+ Matrix ( A:: Bidiagonal{T} ) where {T} = Matrix {T} ( A)
151+ Array ( A:: Bidiagonal ) = Matrix ( A)
152+ full (A:: Bidiagonal ) = Array ( A)
151153promote_rule (:: Type{Matrix{T}} , :: Type{<:Bidiagonal{S}} ) where {T,S} = Matrix{promote_type (T,S)}
152154
153155# Converting from Bidiagonal to Tridiagonal
154- Tridiagonal (M:: Bidiagonal{T} ) where {T} = convert ( Tridiagonal{T}, M)
155- function convert ( :: Type{ Tridiagonal{T}} , A:: Bidiagonal ) where T
156+ Tridiagonal (M:: Bidiagonal{T} ) where {T} = Tridiagonal {T} ( M)
157+ function Tridiagonal {T} ( A:: Bidiagonal ) where T
156158 dv = convert (AbstractVector{T}, A. dv)
157159 ev = convert (AbstractVector{T}, A. ev)
158160 z = fill! (similar (ev), zero (T))
@@ -161,12 +163,12 @@ end
161163promote_rule (:: Type{<:Tridiagonal{T}} , :: Type{<:Bidiagonal{S}} ) where {T,S} = Tridiagonal{promote_type (T,S)}
162164
163165# No-op for trivial conversion Bidiagonal{T} -> Bidiagonal{T}
164- convert ( :: Type{ Bidiagonal{T}} , A:: Bidiagonal{T} ) where {T} = A
166+ Bidiagonal {T} ( A:: Bidiagonal{T} ) where {T} = A
165167# Convert Bidiagonal to Bidiagonal{T} by constructing a new instance with converted elements
166- convert ( :: Type{ Bidiagonal{T}} , A:: Bidiagonal ) where {T} =
168+ Bidiagonal {T} ( A:: Bidiagonal ) where {T} =
167169 Bidiagonal (convert (AbstractVector{T}, A. dv), convert (AbstractVector{T}, A. ev), A. uplo)
168170# When asked to convert Bidiagonal to AbstractMatrix{T}, preserve structure by converting to Bidiagonal{T} <: AbstractMatrix{T}
169- convert ( :: Type{ AbstractMatrix{T}} , A:: Bidiagonal ) where {T} = convert (Bidiagonal{T}, A)
171+ AbstractMatrix {T} ( A:: Bidiagonal ) where {T} = convert (Bidiagonal{T}, A)
170172
171173broadcast (:: typeof (big), B:: Bidiagonal ) = Bidiagonal (big .(B. dv), big .(B. ev), B. uplo)
172174
0 commit comments