Bug noted here exists at least since v1.6.7 (edit: with latest code added by #1228):
julia> using LinearAlgebra
julia> A = UnitUpperTriangular([1 0; 0 1])
2×2 UnitUpperTriangular{Int64, Matrix{Int64}}:
1 0
⋅ 1
julia> rmul!(A, Diagonal([2,3]))
2×2 UpperTriangular{Int64, Matrix{Int64}}:
2 0
⋅ 3
julia> A
2×2 UnitUpperTriangular{Int64, Matrix{Int64}}:
1 0
⋅ 1
julia> @which rmul!(A, Diagonal([2,3]))
rmul!(A::UnitUpperTriangular{<:Any, <:StridedMatrix{T} where T}, D::Diagonal)
@ LinearAlgebra ~/.julia/juliaup/julia-1.13.0-rc1+0.aarch64.apple.darwin14/Julia-1.13.app/Contents/Resources/julia/share/julia/stdlib/v1.13/LinearAlgebra/src/diagonal.jl:388
Clearer version -- A.data is in fact mutated, but the diagonal of A does not (and cannot) take the mathematically correct value:
julia> A = UnitUpperTriangular([10 10; 10 10])
2×2 UnitUpperTriangular{Int64, Matrix{Int64}}:
1 10
⋅ 1
julia> rmul!(A, Diagonal([2,3]))
2×2 UpperTriangular{Int64, Matrix{Int64}}:
2 30
⋅ 3
julia> A
2×2 UnitUpperTriangular{Int64, Matrix{Int64}}:
1 30
⋅ 1
julia> A.data
2×2 Matrix{Int64}:
2 30
10 3
Bug noted here exists at least since v1.6.7 (edit: with latest code added by #1228):
Clearer version --
A.datais in fact mutated, but the diagonal ofAdoes not (and cannot) take the mathematically correct value: