Skip to content

Commit

Permalink
Add NEWS entry for adjtrans of Triangular types (JuliaLang#38398)
Browse files Browse the repository at this point in the history
  • Loading branch information
dkarrasch committed Nov 21, 2020
1 parent c36cf8c commit 0affcb5
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 10 deletions.
4 changes: 4 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,10 @@ Standard library changes
* `(+)(::UniformScaling)` is now defined, making `+I` a valid unary operation ([#36784]).
* Instances of `UniformScaling` are no longer `isequal` to matrices. Previous
behaviour violated the rule that `isequal(x, y)` implies `hash(x) == hash(y)`.
* Transposing `*Triangular` matrices now returns matrices of the opposite triangular type, consistently
with `adjoint!(::*Triangular)` and `transpose!(::*Triangular)`. Packages containing methods with, e.g.,
`Adjoint{<:Any,<:LowerTriangular{<:Any,<:OwnMatrixType}}` should replace that by
`UpperTriangular{<:Any,<:Adjoint{<:Any,<:OwnMatrixType}}` in the method signature ([#38168]).

#### Markdown

Expand Down
10 changes: 0 additions & 10 deletions stdlib/LinearAlgebra/src/triangular.jl
Original file line number Diff line number Diff line change
Expand Up @@ -402,16 +402,6 @@ transpose(A::UpperTriangular) = LowerTriangular(transpose(A.data))
transpose(A::UnitLowerTriangular) = UnitUpperTriangular(transpose(A.data))
transpose(A::UnitUpperTriangular) = UnitLowerTriangular(transpose(A.data))

# legacy copy methods (not sure if we may delete them, these are no longer required)
# Base.copy(A::Adjoint{<:Any,<:LowerTriangular}) = adjoint!(copy(A.parent))
# Base.copy(A::Adjoint{<:Any,<:UpperTriangular}) = adjoint!(copy(A.parent))
# Base.copy(A::Adjoint{<:Any,<:UnitLowerTriangular}) = adjoint!(copy(A.parent))
# Base.copy(A::Adjoint{<:Any,<:UnitUpperTriangular}) = adjoint!(copy(A.parent))
# Base.copy(A::Transpose{<:Any,<:LowerTriangular}) = transpose!(copy(A.parent))
# Base.copy(A::Transpose{<:Any,<:UpperTriangular}) = transpose!(copy(A.parent))
# Base.copy(A::Transpose{<:Any,<:UnitLowerTriangular}) = transpose!(copy(A.parent))
# Base.copy(A::Transpose{<:Any,<:UnitUpperTriangular}) = transpose!(copy(A.parent))

transpose!(A::LowerTriangular) = UpperTriangular(copytri!(A.data, 'L', false, true))
transpose!(A::UnitLowerTriangular) = UnitUpperTriangular(copytri!(A.data, 'L', false, true))
transpose!(A::UpperTriangular) = LowerTriangular(copytri!(A.data, 'U', false, true))
Expand Down
2 changes: 2 additions & 0 deletions stdlib/LinearAlgebra/test/triangular.jl
Original file line number Diff line number Diff line change
Expand Up @@ -158,9 +158,11 @@ for elty1 in (Float32, Float64, BigFloat, ComplexF32, ComplexF64, Complex{BigFlo
@test copy(viewA1') == Matrix(viewA1)'
# transpose!
@test transpose!(copy(A1)) == transpose(A1)
@test typeof(transpose!(copy(A1))).name == typeof(transpose(A1)).name
@test transpose!(t1(view(copy(A1).data, vrange, vrange))) == transpose(viewA1)
# adjoint!
@test adjoint!(copy(A1)) == adjoint(A1)
@test typeof(adjoint!(copy(A1))).name == typeof(adjoint(A1)).name
@test adjoint!(t1(view(copy(A1).data, vrange, vrange))) == adjoint(viewA1)
end

Expand Down

0 comments on commit 0affcb5

Please sign in to comment.