You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
BUG: matmul fails with zero-length broadcast batch dimensions #1007
Batched sparse.matmul fails when a broadcast batch dimension is zero.
Reproduced on main at d63255057744331b96626a1f1c24504b3a3783cd.
importnumpyasnpimportsparsea=sparse.COO.from_numpy(np.zeros((0, 2, 3)))
b=sparse.COO.from_numpy(np.zeros((0, 3, 4)))
sparse.matmul(a, b)
# ValueError: At least one array required.a=sparse.COO.from_numpy(np.zeros((1, 2, 3)))
sparse.matmul(a, b)
# IndexError: Index is not smaller than dimension 0 >= 0
NumPy returns shape (0, 2, 4) in both cases. The recursive implementation either stacks an empty result list or iterates using max(1, 0), rather than the broadcast result size zero.
A focused empty-batch path and regression coverage are ready. The matrix exercises differing ranks, zero/singleton broadcasting, COO/GCXS/mixed dense inputs, dtype promotion and invalid contraction/batch shapes. Thirty-two new cases fail before the production change.
This is a different path from zero-length contracted axes in tensordot: the contracted dimension here is three and the failure happens in batch recursion.
This is an AI-assisted bug investigation with locally executed reproductions and tests. No assignment is requested.
Activity