Skip to content

Commit 3687e2c

Browse files
authored
Use isempty to check exit condition in default blasmul (#260)
1 parent 752510c commit 3687e2c

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

src/muladd.jl

+8-6
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,7 @@ function default_blasmul!(α, A::AbstractMatrix, B::AbstractMatrix, β, C::Abstr
177177

178178
rmul!(C, β)
179179

180-
(iszero(mA) || iszero(nB)) && return C
181-
iszero(nA) && return C
180+
(isempty(C) || iszero(nA)) && return C
182181

183182
r = rowsupport(B,rowsupport(A,first(colsupport(A))))
184183
jindsid = all(k -> rowsupport(B,rowsupport(A,k)) == r, colsupport(A))
@@ -203,7 +202,7 @@ function default_blasmul!(α, A::AbstractVector, B::AbstractMatrix, β, C::Abstr
203202

204203
rmul!(C, β)
205204

206-
(iszero(mA) || iszero(nB)) && return C
205+
isempty(C) && return C
207206

208207
for k in colsupport(A), j in rowsupport(B)
209208
_default_blasmul_loop!(α, A, B, β, C, k, j)
@@ -219,12 +218,15 @@ function _default_blasmul!(::IndexLinear, α, A::AbstractMatrix, B::AbstractVect
219218
length(C) == mA || throw(DimensionMismatch("Dimensions must match"))
220219

221220
rmul!(C, β)
222-
(nA == 0 || mB == 0) && return C
221+
(isempty(C) || isempty(A)) && return C
222+
223+
Astride = size(A, 1) # use size, not stride, since its not pointer arithmetic
223224

224225
@inbounds for k in colsupport(B,1)
226+
aoffs = (k-1)*Astride
225227
b = B[k] * α
226228
for i in colsupport(A,k)
227-
C[i] += A[i,k] * b
229+
C[i] += A[aoffs + i] * b
228230
end
229231
end
230232

@@ -238,7 +240,7 @@ function _default_blasmul!(::IndexCartesian, α, A::AbstractMatrix, B::AbstractV
238240
length(C) == mA || throw(DimensionMismatch("Dimensions must match"))
239241

240242
rmul!(C, β)
241-
(nA == 0 || mB == 0) && return C
243+
(isempty(C) || isempty(A)) && return C
242244

243245
@inbounds for k in colsupport(B,1)
244246
b = B[k] * α

0 commit comments

Comments
 (0)