Skip to content

Commit 8bf6df9

Browse files
authored
Avoid second type parameter in AbstractTriangular (#1136)
1 parent 2744c81 commit 8bf6df9

File tree

4 files changed

+15
-12
lines changed

4 files changed

+15
-12
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "StaticArrays"
22
uuid = "90137ffa-7385-5640-81b9-e52037218182"
3-
version = "1.5.16"
3+
version = "1.5.17"
44

55
[deps]
66
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"

src/lu.jl

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,6 @@ function _first_zero_on_diagonal(A::StaticLUMatrix{M,N,T}) where {M,N,T}
6868
end
6969
end
7070

71-
function _first_zero_on_diagonal(A::LinearAlgebra.AbstractTriangular{<:Any,<:StaticMatrix})
72-
_first_zero_on_diagonal(A.data)
73-
end
74-
7571
issuccess(F::LU) = _first_zero_on_diagonal(F.U) == 0
7672

7773
@generated function _lu(A::StaticLUMatrix{M,N,T}, pivot, check) where {M,N,T}

src/traits.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ Size(::Type{Transpose{T, A}}) where {T, A <: AbstractVecOrMat{T}} = Size(Size(A)
1616
Size(::Type{Symmetric{T, A}}) where {T, A <: AbstractMatrix{T}} = Size(A)
1717
Size(::Type{Hermitian{T, A}}) where {T, A <: AbstractMatrix{T}} = Size(A)
1818
Size(::Type{Diagonal{T, A}}) where {T, A <: AbstractVector{T}} = Size(Size(A)[1], Size(A)[1])
19-
Size(::Type{<:LinearAlgebra.AbstractTriangular{T, A}}) where {T,A} = Size(A)
19+
Size(::Type{UpperTriangular{T, A}}) where {T,A} = Size(A)
20+
Size(::Type{UnitUpperTriangular{T, A}}) where {T,A} = Size(A)
21+
Size(::Type{LowerTriangular{T, A}}) where {T,A} = Size(A)
22+
Size(::Type{UnitLowerTriangular{T, A}}) where {T,A} = Size(A)
2023

2124
struct Length{L}
2225
function Length{L}() where L

src/triangular.jl

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
const StaticULT{TA} = Union{UpperTriangular{TA,<:StaticMatrix},LowerTriangular{TA,<:StaticMatrix},UnitUpperTriangular{TA,<:StaticMatrix},UnitLowerTriangular{TA,<:StaticMatrix}}
2+
13
@inline transpose(A::LowerTriangular{<:Any,<:StaticMatrix}) =
24
UpperTriangular(transpose(A.data))
35
@inline adjoint(A::LowerTriangular{<:Any,<:StaticMatrix}) =
@@ -14,17 +16,15 @@
1416
UnitLowerTriangular(transpose(A.data))
1517
@inline adjoint(A::UnitUpperTriangular{<:Any,<:StaticMatrix}) =
1618
UnitLowerTriangular(adjoint(A.data))
17-
@inline Base.:*(A::Adjoint{<:Any,<:StaticVector}, B::LinearAlgebra.AbstractTriangular{<:Any,<:StaticMatrix}) =
19+
@inline Base.:*(A::Adjoint{<:Any,<:StaticVector}, B::StaticULT{<:Any}) =
1820
adjoint(adjoint(B) * adjoint(A))
19-
@inline Base.:*(A::Transpose{<:Any,<:StaticVector}, B::LinearAlgebra.AbstractTriangular{<:Any,<:StaticMatrix}) =
21+
@inline Base.:*(A::Transpose{<:Any,<:StaticVector}, B::StaticULT{<:Any}) =
2022
transpose(transpose(B) * transpose(A))
21-
@inline Base.:*(A::LinearAlgebra.AbstractTriangular{<:Any,<:StaticMatrix}, B::Adjoint{<:Any,<:StaticVector}) =
23+
@inline Base.:*(A::StaticULT{<:Any}, B::Adjoint{<:Any,<:StaticVector}) =
2224
adjoint(adjoint(B) * adjoint(A))
23-
@inline Base.:*(A::LinearAlgebra.AbstractTriangular{<:Any,<:StaticMatrix}, B::Transpose{<:Any,<:StaticVector}) =
25+
@inline Base.:*(A::StaticULT{<:Any}, B::Transpose{<:Any,<:StaticVector}) =
2426
transpose(transpose(B) * transpose(A))
2527

26-
const StaticULT{TA} = Union{UpperTriangular{TA,<:StaticMatrix},LowerTriangular{TA,<:StaticMatrix},UnitUpperTriangular{TA,<:StaticMatrix},UnitLowerTriangular{TA,<:StaticMatrix}}
27-
2828
@inline Base.:\(A::StaticULT, B::StaticVecOrMatLike) = _A_ldiv_B(Size(A), Size(B), A, B)
2929
@inline Base.:/(A::StaticVecOrMatLike, B::StaticULT) = transpose(transpose(B) \ transpose(A))
3030

@@ -73,3 +73,7 @@ const StaticULT{TA} = Union{UpperTriangular{TA,<:StaticMatrix},LowerTriangular{T
7373
@inbounds return similar_type(B, TAB)(tuple($(X...)))
7474
end
7575
end
76+
77+
function _first_zero_on_diagonal(A::StaticULT)
78+
_first_zero_on_diagonal(A.data)
79+
end

0 commit comments

Comments
 (0)