@@ -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