@@ -311,20 +311,14 @@ isreal(M::Bidiagonal) = isreal(M.dv) && isreal(M.ev)
311
311
adjoint (B:: Bidiagonal{<:Number} ) = Bidiagonal (vec (adjoint (B. dv)), vec (adjoint (B. ev)), B. uplo == ' U' ? :L : :U )
312
312
adjoint (B:: Bidiagonal{<:Number, <:Base.ReshapedArray{<:Number,1,<:Adjoint}} ) =
313
313
Bidiagonal (adjoint (parent (B. dv)), adjoint (parent (B. ev)), B. uplo == ' U' ? :L : :U )
314
+ adjoint (B:: Bidiagonal ) = Bidiagonal (adjoint .(B. dv), adjoint .(B. ev), B. uplo == ' U' ? :L : :U )
314
315
transpose (B:: Bidiagonal{<:Number} ) = Bidiagonal (B. dv, B. ev, B. uplo == ' U' ? :L : :U )
316
+ transpose (B:: Bidiagonal ) = Bidiagonal (transpose .(B. dv), transpose .(B. ev), B. uplo == ' U' ? :L : :U )
315
317
permutedims (B:: Bidiagonal ) = Bidiagonal (B. dv, B. ev, B. uplo == ' U' ? ' L' : ' U' )
316
318
function permutedims (B:: Bidiagonal , perm)
317
319
Base. checkdims_perm (axes (B), axes (B), perm)
318
320
NTuple {2} (perm) == (2 , 1 ) ? permutedims (B) : B
319
321
end
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
328
322
329
323
@noinline function throw_zeroband_error (A)
330
324
uplo = A. uplo
@@ -1362,14 +1356,10 @@ function ldiv!(c::AbstractVecOrMat, A::Bidiagonal, b::AbstractVecOrMat)
1362
1356
end
1363
1357
return c
1364
1358
end
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)
1368
1359
1369
1360
# ## Generic promotion methods and fallbacks
1370
1361
\ (A:: Bidiagonal , B:: AbstractVecOrMat ) =
1371
1362
ldiv! (matprod_dest (A, B, promote_op (\ , eltype (A), eltype (B))), A, B)
1372
- \ (xA:: AdjOrTrans{<:Any,<:Bidiagonal} , B:: AbstractVecOrMat ) = copy (xA) \ B
1373
1363
1374
1364
# ## Triangular specializations
1375
1365
for tri in (:UpperTriangular , :UnitUpperTriangular )
@@ -1441,9 +1431,6 @@ function _rdiv!(C::AbstractMatrix, A::AbstractMatrix, B::Bidiagonal)
1441
1431
C
1442
1432
end
1443
1433
rdiv! (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)
1447
1434
1448
1435
/ (A:: AbstractMatrix , B:: Bidiagonal ) =
1449
1436
_rdiv! (similar (A, promote_op (/ , eltype (A), eltype (B)), size (A)), A, B)
@@ -1476,15 +1463,9 @@ function /(D::Diagonal, B::Bidiagonal)
1476
1463
return B. uplo == ' U' ? UpperTriangular (A) : LowerTriangular (A)
1477
1464
end
1478
1465
1479
- / (A:: AbstractMatrix , B:: Transpose{<:Any,<:Bidiagonal} ) = A / copy (B)
1480
- / (A:: AbstractMatrix , B:: Adjoint{<:Any,<:Bidiagonal} ) = A / copy (B)
1481
1466
# disambiguation
1482
1467
/ (A:: AdjointAbsVec , B:: Bidiagonal ) = adjoint (adjoint (B) \ parent (A))
1483
1468
/ (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))
1488
1469
1489
1470
factorize (A:: Bidiagonal ) = A
1490
1471
function inv (B:: Bidiagonal{T} ) where T
0 commit comments