@@ -308,23 +308,13 @@ for func in (:conj, :copy, :real, :imag)
308308end
309309isreal (M:: Bidiagonal ) = isreal (M. dv) && isreal (M. ev)
310310
311- adjoint (B:: Bidiagonal{<:Number} ) = Bidiagonal (vec (adjoint (B. dv)), vec (adjoint (B. ev)), B. uplo == ' U' ? :L : :U )
312- adjoint (B:: Bidiagonal{<:Number, <:Base.ReshapedArray{<:Number,1,<:Adjoint}} ) =
313- Bidiagonal (adjoint (parent (B. dv)), adjoint (parent (B. ev)), B. uplo == ' U' ? :L : :U )
314- transpose (B:: Bidiagonal{<:Number} ) = Bidiagonal (B. dv, B. ev, B. uplo == ' U' ? :L : :U )
311+ adjoint (B:: Bidiagonal ) = Bidiagonal (_vecadjoint (B. dv), _vecadjoint (B. ev), B. uplo == ' U' ? :L : :U )
312+ transpose (B:: Bidiagonal ) = Bidiagonal (_vectranspose (B. dv), _vectranspose (B. ev), B. uplo == ' U' ? :L : :U )
315313permutedims (B:: Bidiagonal ) = Bidiagonal (B. dv, B. ev, B. uplo == ' U' ? ' L' : ' U' )
316314function permutedims (B:: Bidiagonal , perm)
317315 Base. checkdims_perm (axes (B), axes (B), perm)
318316 NTuple {2} (perm) == (2 , 1 ) ? permutedims (B) : B
319317end
320- function Base. copy (aB:: Adjoint{<:Any,<:Bidiagonal} )
321- B = aB. parent
322- return Bidiagonal (map (x -> copy .(adjoint .(x)), (B. dv, B. ev))... , B. uplo == ' U' ? :L : :U )
323- end
324- function Base. copy (tB:: Transpose{<:Any,<:Bidiagonal} )
325- B = tB. parent
326- return Bidiagonal (map (x -> copy .(transpose .(x)), (B. dv, B. ev))... , B. uplo == ' U' ? :L : :U )
327- end
328318
329319@noinline function throw_zeroband_error (A)
330320 uplo = A. uplo
@@ -1271,26 +1261,22 @@ function _dibimul_nonzeroalpha!(C::Bidiagonal, A::Diagonal, B::Bidiagonal, _add)
12711261end
12721262
12731263function mul (A:: UpperOrUnitUpperTriangular , B:: Bidiagonal )
1274- TS = promote_op (matprod, eltype (A), eltype (B))
1275- C = mul! (similar (A, TS, size (A)), A, B)
1264+ C = _mul (A, B)
12761265 return B. uplo == ' U' ? UpperTriangular (C) : C
12771266end
12781267
12791268function mul (A:: LowerOrUnitLowerTriangular , B:: Bidiagonal )
1280- TS = promote_op (matprod, eltype (A), eltype (B))
1281- C = mul! (similar (A, TS, size (A)), A, B)
1269+ C = _mul (A, B)
12821270 return B. uplo == ' L' ? LowerTriangular (C) : C
12831271end
12841272
12851273function mul (A:: Bidiagonal , B:: UpperOrUnitUpperTriangular )
1286- TS = promote_op (matprod, eltype (A), eltype (B))
1287- C = mul! (similar (B, TS, size (B)), A, B)
1274+ C = _mul (A, B)
12881275 return A. uplo == ' U' ? UpperTriangular (C) : C
12891276end
12901277
12911278function mul (A:: Bidiagonal , B:: LowerOrUnitLowerTriangular )
1292- TS = promote_op (matprod, eltype (A), eltype (B))
1293- C = mul! (similar (B, TS, size (B)), A, B)
1279+ C = _mul (A, B)
12941280 return A. uplo == ' L' ? LowerTriangular (C) : C
12951281end
12961282
@@ -1362,14 +1348,10 @@ function ldiv!(c::AbstractVecOrMat, A::Bidiagonal, b::AbstractVecOrMat)
13621348 end
13631349 return c
13641350end
1365- ldiv! (A:: AdjOrTrans{<:Any,<:Bidiagonal} , b:: AbstractVecOrMat ) = @inline ldiv! (b, A, b)
1366- ldiv! (c:: AbstractVecOrMat , A:: AdjOrTrans{<:Any,<:Bidiagonal} , b:: AbstractVecOrMat ) =
1367- (t = wrapperop (A); _rdiv! (t (c), t (b), t (A)); return c)
13681351
13691352# ## Generic promotion methods and fallbacks
13701353\ (A:: Bidiagonal , B:: AbstractVecOrMat ) =
13711354 ldiv! (matprod_dest (A, B, promote_op (\ , eltype (A), eltype (B))), A, B)
1372- \ (xA:: AdjOrTrans{<:Any,<:Bidiagonal} , B:: AbstractVecOrMat ) = copy (xA) \ B
13731355
13741356# ## Triangular specializations
13751357for tri in (:UpperTriangular , :UnitUpperTriangular )
@@ -1441,9 +1423,6 @@ function _rdiv!(C::AbstractMatrix, A::AbstractMatrix, B::Bidiagonal)
14411423 C
14421424end
14431425rdiv! (A:: AbstractMatrix , B:: Bidiagonal ) = @inline _rdiv! (A, A, B)
1444- rdiv! (A:: AbstractMatrix , B:: AdjOrTrans{<:Any,<:Bidiagonal} ) = @inline _rdiv! (A, A, B)
1445- _rdiv! (C:: AbstractMatrix , A:: AbstractMatrix , B:: AdjOrTrans{<:Any,<:Bidiagonal} ) =
1446- (t = wrapperop (B); ldiv! (t (C), t (B), t (A)); return C)
14471426
14481427/ (A:: AbstractMatrix , B:: Bidiagonal ) =
14491428 _rdiv! (similar (A, promote_op (/ , eltype (A), eltype (B)), size (A)), A, B)
@@ -1476,15 +1455,9 @@ function /(D::Diagonal, B::Bidiagonal)
14761455 return B. uplo == ' U' ? UpperTriangular (A) : LowerTriangular (A)
14771456end
14781457
1479- / (A:: AbstractMatrix , B:: Transpose{<:Any,<:Bidiagonal} ) = A / copy (B)
1480- / (A:: AbstractMatrix , B:: Adjoint{<:Any,<:Bidiagonal} ) = A / copy (B)
14811458# disambiguation
14821459/ (A:: AdjointAbsVec , B:: Bidiagonal ) = adjoint (adjoint (B) \ parent (A))
14831460/ (A:: TransposeAbsVec , B:: Bidiagonal ) = transpose (transpose (B) \ parent (A))
1484- / (A:: AdjointAbsVec , B:: Transpose{<:Any,<:Bidiagonal} ) = adjoint (adjoint (B) \ parent (A))
1485- / (A:: TransposeAbsVec , B:: Transpose{<:Any,<:Bidiagonal} ) = transpose (transpose (B) \ parent (A))
1486- / (A:: AdjointAbsVec , B:: Adjoint{<:Any,<:Bidiagonal} ) = adjoint (adjoint (B) \ parent (A))
1487- / (A:: TransposeAbsVec , B:: Adjoint{<:Any,<:Bidiagonal} ) = transpose (transpose (B) \ parent (A))
14881461
14891462factorize (A:: Bidiagonal ) = A
14901463function inv (B:: Bidiagonal{T} ) where T
0 commit comments