diff --git a/Project.toml b/Project.toml index 0399075e..1ce598e3 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "FillArrays" uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "0.13.7" +version = "0.13.8" [deps] LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" diff --git a/src/FillArrays.jl b/src/FillArrays.jl index ebb4616a..f8d0d96b 100644 --- a/src/FillArrays.jl +++ b/src/FillArrays.jl @@ -9,9 +9,10 @@ import Base: size, getindex, setindex!, IndexStyle, checkbounds, convert, show, view, in, mapreduce, one, reverse import LinearAlgebra: rank, svdvals!, tril, triu, tril!, triu!, diag, transpose, adjoint, fill!, - dot, norm2, norm1, normInf, normMinusInf, normp, lmul!, rmul!, diagzero, AbstractTriangular, AdjointAbsVec, TransposeAbsVec, + dot, norm2, norm1, normInf, normMinusInf, normp, lmul!, rmul!, diagzero, AdjointAbsVec, TransposeAbsVec, issymmetric, ishermitian, AdjOrTransAbsVec, checksquare + import Base.Broadcast: broadcasted, DefaultArrayStyle, broadcast_shape import Statistics: mean, std, var, cov, cor @@ -348,10 +349,13 @@ end @inline RectDiagonal{T}(A::V, args...) where {T,V} = RectDiagonal{T,V}(A, args...) @inline RectDiagonal(A::V, args...) where {V} = RectDiagonal{eltype(V),V}(A, args...) +const UpperOrUnitUpperTriangular{T,S} = Union{UpperTriangular{T,S}, UnitUpperTriangular{T,S}} +const LowerOrUnitLowerTriangular{T,S} = Union{LowerTriangular{T,S}, UnitLowerTriangular{T,S}} +const UpperOrLowerTriangular{T,S} = Union{UpperOrUnitUpperTriangular{T,S}, LowerOrUnitLowerTriangular{T,S}} # patch missing overload from Base axes(rd::Diagonal{<:Any,<:AbstractFill}) = (axes(rd.diag,1),axes(rd.diag,1)) -axes(T::AbstractTriangular{<:Any,<:AbstractFill}) = axes(parent(T)) +axes(T::UpperOrLowerTriangular{<:Any,<:AbstractFill}) = axes(parent(T)) axes(rd::RectDiagonal) = rd.axes size(rd::RectDiagonal) = map(length, rd.axes) @@ -672,7 +676,7 @@ Base.print_matrix_row(io::IO, AbstractFillMatrix, Diagonal{<:Any,<:AbstractFillVector}, RectDiagonal, - AbstractTriangular{<:Any,<:AbstractFillMatrix} + UpperOrLowerTriangular{<:Any,<:AbstractFillMatrix} }, A::Vector, i::Integer, cols::AbstractVector, sep::AbstractString, idxlast::Integer=last(axes(X, 2))) = axes_print_matrix_row(axes(X), io, X, A, i, cols, sep)