Skip to content

Commit 9b48ffa

Browse files
authored
Fix triangular multiplication methods. Representation of adjoint (#96)
of triangular matrices has changed so sigatures need update and there were a few bugs in the implementations.
1 parent 7d5e695 commit 9b48ffa

File tree

1 file changed

+26
-26
lines changed

1 file changed

+26
-26
lines changed

src/juliaBLAS.jl

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -130,63 +130,63 @@ end
130130
function lmul!(A::UnitLowerTriangular{T,S}, B::StridedMatrix{T}, α::T) where {T<:Number,S}
131131
AA = A.data
132132
m, n = size(B)
133-
for i = m:-1:1
134-
for j = 1:n
133+
for i m:-1:1
134+
for j 1:n
135135
B[i,j] = α*B[i,j]
136-
for l = 1:(i - 1)
136+
for l 1:(i - 1)
137137
B[i,j] += α*AA[i,l]*B[l,j]
138138
end
139139
end
140140
end
141141
return B
142142
end
143-
function lmul!(A::Adjoint{T,UpperTriangular{T,S}}, B::StridedMatrix{T}, α::T) where {T<:Number,S}
144-
AA = parent(A).data
143+
function lmul!(A::LowerTriangular{T,Adjoint{T,S}}, B::StridedMatrix{T}, α::T) where {T<:Number,S}
144+
AA = parent(A.data)
145145
m, n = size(B)
146-
for i = m:-1:1
147-
for j = 1:n
148-
B[i,j] = α*AA[i,i]*B[i,j]
149-
for l = 1:i - 1
146+
for i m:-1:1
147+
for j 1:n
148+
B[i,j] = α*AA[i,i]'*B[i,j]
149+
for l 1:(i - 1)
150150
B[i,j] += α*AA[l,i]'*B[l,j]
151151
end
152152
end
153153
end
154154
return B
155155
end
156-
function lmul!(A::Adjoint{T,LowerTriangular{T,S}}, B::StridedMatrix{T}, α::T) where {T<:Number,S}
157-
AA = parent(A).data
156+
function lmul!(A::UpperTriangular{T,Adjoint{T,S}}, B::StridedMatrix{T}, α::T) where {T<:Number,S}
157+
AA = parent(A.data)
158158
m, n = size(B)
159-
for i = 1:m
160-
for j = 1:n
161-
B[i,j] = α*AA[i,i]*B[i,j]
162-
for l = i + 1:m
159+
for i 1:m
160+
for j 1:n
161+
B[i,j] = α*AA[i,i]'*B[i,j]
162+
for l (i + 1):m
163163
B[i,j] += α*AA[l,i]'*B[l,j]
164164
end
165165
end
166166
end
167167
return B
168168
end
169-
function lmul!(A::Adjoint{T,UnitUpperTriangular{T,S}}, B::StridedMatrix{T}, α::T) where {T<:Number,S}
170-
AA = parent(A).data
169+
function lmul!(A::UnitLowerTriangular{T,Adjoint{T,S}}, B::StridedMatrix{T}, α::T) where {T<:Number,S}
170+
AA = parent(A.data)
171171
m, n = size(B)
172-
for i = m:-1:1
173-
for j = 1:n
172+
for i m:-1:1
173+
for j 1:n
174174
B[i,j] = α*B[i,j]
175-
for l = 1:i - 1
175+
for l 1:(i - 1)
176176
B[i,j] += α*AA[l,i]'*B[l,j]
177177
end
178178
end
179179
end
180180
return B
181181
end
182-
function lmul!(A::Adjoint{T,UnitLowerTriangular{T,S}}, B::StridedMatrix{T}, α::T) where {T<:Number,S}
183-
AA = parent(A).data
182+
function lmul!(A::UnitUpperTriangular{T,Adjoint{T,S}}, B::StridedMatrix{T}, α::T) where {T<:Number,S}
183+
AA = parent(A.data)
184184
m, n = size(B)
185-
for i = 1:m
186-
for j = 1:n
185+
for i 1:m
186+
for j 1:n
187187
B[i,j] = α*B[i,j]
188-
for l = i + 1:m
189-
B[i,j] = α*AA[l,i]'*B[l,j]
188+
for l (i + 1):m
189+
B[i,j] += α*AA[l,i]'*B[l,j]
190190
end
191191
end
192192
end

0 commit comments

Comments
 (0)