@@ -289,7 +289,7 @@ Base.dataids(A::HermOrSym) = Base.dataids(parent(A))
289
289
Base. unaliascopy (A:: Hermitian ) = Hermitian (Base. unaliascopy (parent (A)), sym_uplo (A. uplo))
290
290
Base. unaliascopy (A:: Symmetric ) = Symmetric (Base. unaliascopy (parent (A)), sym_uplo (A. uplo))
291
291
292
- _conjugation (:: Symmetric ) = transpose
292
+ _conjugation (:: Union{ Symmetric, Hermitian{<:Real}} ) = transpose
293
293
_conjugation (:: Hermitian ) = adjoint
294
294
295
295
diag (A:: Symmetric ) = symmetric .(diag (parent (A)), sym_uplo (A. uplo))
@@ -472,49 +472,49 @@ Base.conj!(A::HermOrSym) = typeof(A)(parentof_applytri(conj!, A), A.uplo)
472
472
# tril/triu
473
473
function tril (A:: Hermitian , k:: Integer = 0 )
474
474
if A. uplo == ' U' && k <= 0
475
- return tril! (copy (A. data' ),k)
475
+ return tril_maybe_inplace (copy (A. data' ),k)
476
476
elseif A. uplo == ' U' && k > 0
477
- return tril! (copy (A. data' ),- 1 ) + tril! (triu (A. data),k)
477
+ return tril_maybe_inplace (copy (A. data' ),- 1 ) + tril_maybe_inplace (triu (A. data),k)
478
478
elseif A. uplo == ' L' && k <= 0
479
479
return tril (A. data,k)
480
480
else
481
- return tril (A. data,- 1 ) + tril! ( triu! (copy (A. data' )),k)
481
+ return tril (A. data,- 1 ) + tril_maybe_inplace ( triu_maybe_inplace (copy (A. data' )),k)
482
482
end
483
483
end
484
484
485
485
function tril (A:: Symmetric , k:: Integer = 0 )
486
486
if A. uplo == ' U' && k <= 0
487
- return tril! (copy (transpose (A. data)),k)
487
+ return tril_maybe_inplace (copy (transpose (A. data)),k)
488
488
elseif A. uplo == ' U' && k > 0
489
- return tril! (copy (transpose (A. data)),- 1 ) + tril! (triu (A. data),k)
489
+ return tril_maybe_inplace (copy (transpose (A. data)),- 1 ) + tril_maybe_inplace (triu (A. data),k)
490
490
elseif A. uplo == ' L' && k <= 0
491
491
return tril (A. data,k)
492
492
else
493
- return tril (A. data,- 1 ) + tril! ( triu! (copy (transpose (A. data))),k)
493
+ return tril (A. data,- 1 ) + tril_maybe_inplace ( triu_maybe_inplace (copy (transpose (A. data))),k)
494
494
end
495
495
end
496
496
497
497
function triu (A:: Hermitian , k:: Integer = 0 )
498
498
if A. uplo == ' U' && k >= 0
499
499
return triu (A. data,k)
500
500
elseif A. uplo == ' U' && k < 0
501
- return triu (A. data,1 ) + triu! ( tril! (copy (A. data' )),k)
501
+ return triu (A. data,1 ) + triu_maybe_inplace ( tril_maybe_inplace (copy (A. data' )),k)
502
502
elseif A. uplo == ' L' && k >= 0
503
- return triu! (copy (A. data' ),k)
503
+ return triu_maybe_inplace (copy (A. data' ),k)
504
504
else
505
- return triu! (copy (A. data' ),1 ) + triu! (tril (A. data),k)
505
+ return triu_maybe_inplace (copy (A. data' ),1 ) + triu_maybe_inplace (tril (A. data),k)
506
506
end
507
507
end
508
508
509
509
function triu (A:: Symmetric , k:: Integer = 0 )
510
510
if A. uplo == ' U' && k >= 0
511
511
return triu (A. data,k)
512
512
elseif A. uplo == ' U' && k < 0
513
- return triu (A. data,1 ) + triu! ( tril! (copy (transpose (A. data))),k)
513
+ return triu (A. data,1 ) + triu_maybe_inplace ( tril_maybe_inplace (copy (transpose (A. data))),k)
514
514
elseif A. uplo == ' L' && k >= 0
515
- return triu! (copy (transpose (A. data)),k)
515
+ return triu_maybe_inplace (copy (transpose (A. data)),k)
516
516
else
517
- return triu! (copy (transpose (A. data)),1 ) + triu! (tril (A. data),k)
517
+ return triu_maybe_inplace (copy (transpose (A. data)),1 ) + triu_maybe_inplace (tril (A. data),k)
518
518
end
519
519
end
520
520
0 commit comments