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
GrB_assign computes C(I,J)+=A, where C and M have the same size.
GxB_subassign computes C(I,J)+=A where C(I,J), M, and A all have the same size.
They are the same if I and J are both GrB_ALL, or if the mask is NULL and the null mask is not complemented.
GrB_assign can be broken down into the following steps:
(1) S = C(I,J)
(2) S = S accum A
(3) Z = C
(4) Z(I,J) = S
(5) C=Z
GxB_subassign breaks down in the these steps:
(1) S = C(I,J)
(2) S = S accum A
(3) C(I,J) = S
So far, nearly all uses I have seen of GrB_assign and GxB_subassign fall into one of 3 categories:
(1) simple case: I and J are both GrB_ALL and there is no mask
(2) just the mask is present (in many forms, complemented or not, etc), but I and J are both NULL
(3) just I and J are present but the mask is NULL.
In all those cases, GrB_assign and GxB_subassign are identical. I still think a GrB_subassign is important, and should be considered as an addition to the spec, but after writing many algorithms for LAGraph, this is not as high a priority as I once thought.
I have a section in my user guide "Comparing GrB_assign and GxB_subassign", which is section 10.10 in my v5.1.7 user guide, page 223.
See SuiteSparse GxB_subassign function [someone fill in description here.]
The text was updated successfully, but these errors were encountered: