diff --git a/Project.toml b/Project.toml index d04e30e..95b422b 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "GenericLinearAlgebra" uuid = "14197337-ba66-59df-a3e3-ca00e7dcff7a" -version = "0.3.2" +version = "0.3.3" [deps] LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" diff --git a/src/juliaBLAS.jl b/src/juliaBLAS.jl index 4bb5afe..fcc188b 100644 --- a/src/juliaBLAS.jl +++ b/src/juliaBLAS.jl @@ -130,63 +130,63 @@ end function lmul!(A::UnitLowerTriangular{T,S}, B::StridedMatrix{T}, α::T) where {T<:Number,S} AA = A.data m, n = size(B) - for i = m:-1:1 - for j = 1:n + for i ∈ m:-1:1 + for j ∈ 1:n B[i,j] = α*B[i,j] - for l = 1:(i - 1) + for l ∈ 1:(i - 1) B[i,j] += α*AA[i,l]*B[l,j] end end end return B end -function lmul!(A::Adjoint{T,UpperTriangular{T,S}}, B::StridedMatrix{T}, α::T) where {T<:Number,S} - AA = parent(A).data +function lmul!(A::LowerTriangular{T,Adjoint{T,S}}, B::StridedMatrix{T}, α::T) where {T<:Number,S} + AA = parent(A.data) m, n = size(B) - for i = m:-1:1 - for j = 1:n - B[i,j] = α*AA[i,i]*B[i,j] - for l = 1:i - 1 + for i ∈ m:-1:1 + for j ∈ 1:n + B[i,j] = α*AA[i,i]'*B[i,j] + for l ∈ 1:(i - 1) B[i,j] += α*AA[l,i]'*B[l,j] end end end return B end -function lmul!(A::Adjoint{T,LowerTriangular{T,S}}, B::StridedMatrix{T}, α::T) where {T<:Number,S} - AA = parent(A).data +function lmul!(A::UpperTriangular{T,Adjoint{T,S}}, B::StridedMatrix{T}, α::T) where {T<:Number,S} + AA = parent(A.data) m, n = size(B) - for i = 1:m - for j = 1:n - B[i,j] = α*AA[i,i]*B[i,j] - for l = i + 1:m + for i ∈ 1:m + for j ∈ 1:n + B[i,j] = α*AA[i,i]'*B[i,j] + for l ∈ (i + 1):m B[i,j] += α*AA[l,i]'*B[l,j] end end end return B end -function lmul!(A::Adjoint{T,UnitUpperTriangular{T,S}}, B::StridedMatrix{T}, α::T) where {T<:Number,S} - AA = parent(A).data +function lmul!(A::UnitLowerTriangular{T,Adjoint{T,S}}, B::StridedMatrix{T}, α::T) where {T<:Number,S} + AA = parent(A.data) m, n = size(B) - for i = m:-1:1 - for j = 1:n + for i ∈ m:-1:1 + for j ∈ 1:n B[i,j] = α*B[i,j] - for l = 1:i - 1 + for l ∈ 1:(i - 1) B[i,j] += α*AA[l,i]'*B[l,j] end end end return B end -function lmul!(A::Adjoint{T,UnitLowerTriangular{T,S}}, B::StridedMatrix{T}, α::T) where {T<:Number,S} - AA = parent(A).data +function lmul!(A::UnitUpperTriangular{T,Adjoint{T,S}}, B::StridedMatrix{T}, α::T) where {T<:Number,S} + AA = parent(A.data) m, n = size(B) - for i = 1:m - for j = 1:n + for i ∈ 1:m + for j ∈ 1:n B[i,j] = α*B[i,j] - for l = i + 1:m - B[i,j] = α*AA[l,i]'*B[l,j] + for l ∈ (i + 1):m + B[i,j] += α*AA[l,i]'*B[l,j] end end end