1function gbtest84
2%GBTEST84 test GrB.assign
3%
4% C = GrB.assign (C, A) ;
5% C = GrB.assign (C, M, A) ;
6% C = GrB.assign (C, accum, A) ;
7% C = GrB.assign (C, M, accum, A) ;
8%
9% V = GrB.assign (V, U, I) ;
10% V = GrB.assign (V, W, U, I) ;
11% V = GrB.assign (V, accum, U, I) ;
12% V = GrB.assign (V, W, accum, U, I) ;
13%
14% C = GrB.assign (C, A, I, J) ;
15% C = GrB.assign (C, M, A, I, J) ;
16% C = GrB.assign (C, accum, A, I, J) ;
17% C = GrB.assign (C, M, accum, A, I, J) ;
18
19% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved.
20% SPDX-License-Identifier: GPL-3.0-or-later
21
22rng ('default')
23
24C     = GrB.random (9, 9, 0.5) ;
25M     = GrB.random (9, 9, 0.5, 'range', logical ([false true])) ;
26accum = '+' ;
27A     = GrB.random (9, 9, 0.5) ;
28I     = { [1 4 2 5] } ;
29J     = { [3 2 7 ] } ;
30desc  = struct ;
31
32Aij   = GrB.random (4, 3, 0.5) ;
33
34V     = GrB.random (9, 1, 0.7) ;
35W     = GrB.random (9, 1, 0.7, 'range', logical ([false true])) ;
36
37Ui    = GrB.random (4, 1, 0.7) ;
38
39c = double (C) ;
40a = double (A) ;
41m = logical (M) ;
42i = I {1} ;
43j = J {1} ;
44
45aij = double (Aij) ;
46
47v = double (V) ;
48w = logical (W) ;
49
50ui  = double (Ui) ;
51
52%----------------------------------------------------------------------
53% C = GrB.assign (C, A) ;
54%----------------------------------------------------------------------
55
56% 1 matrix: A
57% 0 strings:
58
59C2 = A ;
60
61C1 = GrB.assign (C, A) ; assert (isequal (C1, C2)) ;
62C1 = GrB.assign (c, a) ; assert (isequal (C1, C2)) ;
63
64C1 = GrB.assign (C, A, desc) ; assert (isequal (C1, C2)) ;
65C1 = GrB.assign (c, a, desc) ; assert (isequal (C1, C2)) ;
66
67%----------------------------------------------------------------------
68% C = GrB.assign (C, M, A) ;
69%----------------------------------------------------------------------
70
71% 3 matrices: C, A
72% 0 strings:
73
74C2 = C ;
75C2 (M) = A (M) ;
76
77c2 = c ;
78c2 (m) = a (m) ;
79assert (isequal (c2, C2)) ;
80
81C1 = GrB.assign (C, M, A, desc) ; assert (isequal (C1, C2)) ;
82C1 = GrB.assign (c, m, a, desc) ; assert (isequal (C1, C2)) ;
83
84%----------------------------------------------------------------------
85% C = GrB.assign (C, accum, A) ;
86%----------------------------------------------------------------------
87
88% 2 matrices: C, A
89% 1 string:   accum
90
91% C += A
92
93C2 = C + A ;
94
95c2 = c + a ;
96assert (isequal (c2, C2)) ;
97
98C1 = GrB.assign (C, accum, A, desc) ; assert (isequal (C1, C2)) ;
99C1 = GrB.assign (C, A, accum, desc) ; assert (isequal (C1, C2)) ;
100C1 = GrB.assign (accum, C, A, desc) ; assert (isequal (C1, C2)) ;
101
102%----------------------------------------------------------------------
103% C = GrB.assign (C, M, accum, A) ;
104%----------------------------------------------------------------------
105
106% 3 matrices: C, M, A
107% 1 string:   accum
108
109% C<M> += A
110C2 = C ;
111C2 (M) = C2 (M) + A (M) ;
112
113c2 = c ;
114c2 (m) = c2 (m) + a (m) ;
115assert (isequal (c2, C2)) ;
116
117C1 = GrB.assign (C, M, accum, A, desc) ; assert (isequal (C1, C2)) ;
118C1 = GrB.assign (C, M, A, accum, desc) ; assert (isequal (C1, C2)) ;
119C1 = GrB.assign (C, accum, M, A, desc) ; assert (isequal (C1, C2)) ;
120C1 = GrB.assign (accum, C, M, A, desc) ; assert (isequal (C1, C2)) ;
121
122C1 = GrB.assign (c, m, accum, a, desc) ; assert (isequal (C1, C2)) ;
123C1 = GrB.assign (c, m, a, accum, desc) ; assert (isequal (C1, C2)) ;
124C1 = GrB.assign (c, accum, m, a, desc) ; assert (isequal (C1, C2)) ;
125C1 = GrB.assign (accum, c, m, a, desc) ; assert (isequal (C1, C2)) ;
126
127%----------------------------------------------------------------------
128% V = GrB.assign (V, U, I) ;
129%----------------------------------------------------------------------
130
131% 2 vectors: V, U
132% 0 strings:
133% 1 index:   I
134
135% V(I) = U
136
137V2 = V ;
138V2 (i) = Ui ;
139
140v2 = v ;
141v2 (i) = ui ;
142assert (isequal (v2, V2)) ;
143
144V1 = GrB.assign (V, Ui, I, desc) ; assert (isequal (V1, V2)) ;
145V1 = GrB.assign (V, I, Ui, desc) ; assert (isequal (V1, V2)) ;
146V1 = GrB.assign (I, V, Ui, desc) ; assert (isequal (V1, V2)) ;
147
148V1 = GrB.assign (v, ui, I, desc) ; assert (isequal (V1, V2)) ;
149V1 = GrB.assign (v, I, ui, desc) ; assert (isequal (V1, V2)) ;
150V1 = GrB.assign (I, v, ui, desc) ; assert (isequal (V1, V2)) ;
151
152%----------------------------------------------------------------------
153% V = GrB.assign (V, W, U, I) ;
154%----------------------------------------------------------------------
155
156% 3 vectors: V, W, Ui
157% 0 strings:
158% 1 index:   I
159
160% V<W>(I) = Ui
161
162% S = V (i) ;
163% with accum
164% S = S + Ui ;
165% with no accum:
166S = Ui ;
167Z = V ;
168Z (i) = S ;
169% with mask:
170V2 = V ;
171V2 (W) = Z (W) ;
172% with no mask:
173% V2 = Z ;
174
175% s = v (i) ;
176s = ui ;
177z = v ;
178z (i) = s ;
179v2 = v ;
180v2 (w) = z (w) ;
181assert (isequal (v2, V2)) ;
182
183V1 = GrB.assign (V, W, Ui, I, desc) ; assert (isequal (V1, V2)) ;
184V1 = GrB.assign (V, W, I, Ui, desc) ; assert (isequal (V1, V2)) ;
185V1 = GrB.assign (V, I, W, Ui, desc) ; assert (isequal (V1, V2)) ;
186V1 = GrB.assign (I, V, W, Ui, desc) ; assert (isequal (V1, V2)) ;
187
188V1 = GrB.assign (v, w, ui, I, desc) ; assert (isequal (V1, V2)) ;
189V1 = GrB.assign (v, w, I, ui, desc) ; assert (isequal (V1, V2)) ;
190V1 = GrB.assign (v, I, w, ui, desc) ; assert (isequal (V1, V2)) ;
191V1 = GrB.assign (I, v, w, ui, desc) ; assert (isequal (V1, V2)) ;
192
193%----------------------------------------------------------------------
194% V = GrB.assign (V, accum, U, I) ;
195%----------------------------------------------------------------------
196
197% 2 vectors: V, Ui
198% 1 string:  accum
199% 1 index:   I
200
201% V<W>(I) = accum (V(I), Ui)
202
203S = V (i) ;
204% with accum:
205S = S + Ui ;
206% with no accum:
207% S = Ui ;
208Z = V ;
209Z (i) = S ;
210% with mask:
211% V2 = V ;
212% V2 (W) = Z (W) ;
213% with no mask:
214V2 = Z ;
215
216s = v (i) ;
217s = s + ui ;
218z = v ;
219z (i) = s ;
220v2 = z ;
221assert (isequal (v2, V2)) ;
222
223V1 = GrB.assign (V, accum, Ui, I, desc) ; assert (isequal (V1, V2)) ;
224V1 = GrB.assign (V, accum, I, Ui, desc) ; assert (isequal (V1, V2)) ;
225V1 = GrB.assign (V, Ui, accum, I, desc) ; assert (isequal (V1, V2)) ;
226V1 = GrB.assign (V, Ui, I, accum, desc) ; assert (isequal (V1, V2)) ;
227V1 = GrB.assign (V, I, Ui, accum, desc) ; assert (isequal (V1, V2)) ;
228V1 = GrB.assign (V, I, accum, Ui, desc) ; assert (isequal (V1, V2)) ;
229V1 = GrB.assign (accum, V, Ui, I, desc) ; assert (isequal (V1, V2)) ;
230V1 = GrB.assign (accum, V, I, Ui, desc) ; assert (isequal (V1, V2)) ;
231V1 = GrB.assign (accum, I, V, Ui, desc) ; assert (isequal (V1, V2)) ;
232V1 = GrB.assign (I, accum, V, Ui, desc) ; assert (isequal (V1, V2)) ;
233V1 = GrB.assign (I, V, accum, Ui, desc) ; assert (isequal (V1, V2)) ;
234V1 = GrB.assign (I, V, Ui, accum, desc) ; assert (isequal (V1, V2)) ;
235
236V1 = GrB.assign (v, accum, ui, I, desc) ; assert (isequal (V1, V2)) ;
237V1 = GrB.assign (v, accum, I, ui, desc) ; assert (isequal (V1, V2)) ;
238V1 = GrB.assign (v, ui, accum, I, desc) ; assert (isequal (V1, V2)) ;
239V1 = GrB.assign (v, ui, I, accum, desc) ; assert (isequal (V1, V2)) ;
240V1 = GrB.assign (v, I, ui, accum, desc) ; assert (isequal (V1, V2)) ;
241V1 = GrB.assign (v, I, accum, ui, desc) ; assert (isequal (V1, V2)) ;
242V1 = GrB.assign (accum, v, ui, I, desc) ; assert (isequal (V1, V2)) ;
243V1 = GrB.assign (accum, v, I, ui, desc) ; assert (isequal (V1, V2)) ;
244V1 = GrB.assign (accum, I, v, ui, desc) ; assert (isequal (V1, V2)) ;
245V1 = GrB.assign (I, accum, v, ui, desc) ; assert (isequal (V1, V2)) ;
246V1 = GrB.assign (I, v, accum, ui, desc) ; assert (isequal (V1, V2)) ;
247V1 = GrB.assign (I, v, ui, accum, desc) ; assert (isequal (V1, V2)) ;
248
249%----------------------------------------------------------------------
250% V = GrB.assign (V, W, accum, U, I) ;
251%----------------------------------------------------------------------
252
253% 3 vectors: V, W, Ui
254% 1 string:  accum
255% 1 index:   I
256
257% V<W>(I) = accum (V(I), Ui)
258
259S = V (i) ;
260% with accum:
261S = S + Ui ;
262% with no accum:
263% S = Ui ;
264Z = V ;
265Z (i) = S ;
266% with mask:
267V2 = V ;
268V2 (W) = Z (W) ;
269% with no mask:
270% V2 = Z ;
271
272s = v (i) ;
273s = s + ui ;
274z = v ;
275z (i) = s ;
276v2 = v ;
277v2 (w) = z (w) ;
278assert (isequal (v2, V2)) ;
279
280V1 = GrB.assign (V, W, accum, Ui, I, desc) ; assert (isequal (V1, V2)) ;
281V1 = GrB.assign (V, W, accum, I, Ui, desc) ; assert (isequal (V1, V2)) ;
282V1 = GrB.assign (V, W, Ui, accum, I, desc) ; assert (isequal (V1, V2)) ;
283V1 = GrB.assign (V, W, Ui, I, accum, desc) ; assert (isequal (V1, V2)) ;
284V1 = GrB.assign (V, W, I, Ui, accum, desc) ; assert (isequal (V1, V2)) ;
285V1 = GrB.assign (V, W, I, accum, Ui, desc) ; assert (isequal (V1, V2)) ;
286V1 = GrB.assign (V, accum, W, Ui, I, desc) ; assert (isequal (V1, V2)) ;
287V1 = GrB.assign (V, accum, W, I, Ui, desc) ; assert (isequal (V1, V2)) ;
288V1 = GrB.assign (V, accum, I, W, Ui, desc) ; assert (isequal (V1, V2)) ;
289V1 = GrB.assign (V, I, W, Ui, accum, desc) ; assert (isequal (V1, V2)) ;
290V1 = GrB.assign (V, I, W, accum, Ui, desc) ; assert (isequal (V1, V2)) ;
291V1 = GrB.assign (V, I, accum, W, Ui, desc) ; assert (isequal (V1, V2)) ;
292V1 = GrB.assign (accum, V, W, Ui, I, desc) ; assert (isequal (V1, V2)) ;
293V1 = GrB.assign (accum, V, W, I, Ui, desc) ; assert (isequal (V1, V2)) ;
294V1 = GrB.assign (accum, V, I, W, Ui, desc) ; assert (isequal (V1, V2)) ;
295V1 = GrB.assign (accum, I, V, W, Ui, desc) ; assert (isequal (V1, V2)) ;
296V1 = GrB.assign (I, V, W, Ui, accum, desc) ; assert (isequal (V1, V2)) ;
297V1 = GrB.assign (I, V, W, accum, Ui, desc) ; assert (isequal (V1, V2)) ;
298V1 = GrB.assign (I, V, accum, W, Ui, desc) ; assert (isequal (V1, V2)) ;
299V1 = GrB.assign (I, accum, V, W, Ui, desc) ; assert (isequal (V1, V2)) ;
300
301V1 = GrB.assign (v, w, accum, ui, I, desc) ; assert (isequal (V1, V2)) ;
302V1 = GrB.assign (v, w, accum, I, ui, desc) ; assert (isequal (V1, V2)) ;
303V1 = GrB.assign (v, w, ui, accum, I, desc) ; assert (isequal (V1, V2)) ;
304V1 = GrB.assign (v, w, ui, I, accum, desc) ; assert (isequal (V1, V2)) ;
305V1 = GrB.assign (v, w, I, ui, accum, desc) ; assert (isequal (V1, V2)) ;
306V1 = GrB.assign (v, w, I, accum, ui, desc) ; assert (isequal (V1, V2)) ;
307V1 = GrB.assign (v, accum, w, ui, I, desc) ; assert (isequal (V1, V2)) ;
308V1 = GrB.assign (v, accum, w, I, ui, desc) ; assert (isequal (V1, V2)) ;
309V1 = GrB.assign (v, accum, I, w, ui, desc) ; assert (isequal (V1, V2)) ;
310V1 = GrB.assign (v, I, w, ui, accum, desc) ; assert (isequal (V1, V2)) ;
311V1 = GrB.assign (v, I, w, accum, ui, desc) ; assert (isequal (V1, V2)) ;
312V1 = GrB.assign (v, I, accum, w, ui, desc) ; assert (isequal (V1, V2)) ;
313V1 = GrB.assign (accum, v, w, ui, I, desc) ; assert (isequal (V1, V2)) ;
314V1 = GrB.assign (accum, v, w, I, ui, desc) ; assert (isequal (V1, V2)) ;
315V1 = GrB.assign (accum, v, I, w, ui, desc) ; assert (isequal (V1, V2)) ;
316V1 = GrB.assign (accum, I, v, w, ui, desc) ; assert (isequal (V1, V2)) ;
317V1 = GrB.assign (I, v, w, ui, accum, desc) ; assert (isequal (V1, V2)) ;
318V1 = GrB.assign (I, v, w, accum, ui, desc) ; assert (isequal (V1, V2)) ;
319V1 = GrB.assign (I, v, accum, w, ui, desc) ; assert (isequal (V1, V2)) ;
320V1 = GrB.assign (I, accum, v, w, ui, desc) ; assert (isequal (V1, V2)) ;
321
322%----------------------------------------------------------------------
323% C = GrB.assign (C, A, I, J) ;
324%----------------------------------------------------------------------
325
326% 2 matrices: C, A
327% 2 indices:  I, J
328
329% C<M>(I,J) = accum (C(I,J), Aij)
330
331% S = C (i,j) ;
332% with accum:
333% S = S + Aij ;
334% with no accum:
335S = Aij ;
336Z = C ;
337Z (i,j) = S ;
338% with mask:
339% C2 = C ;
340% C2 (M) = Z (M) ;
341% with no mask:
342C2 = Z ;
343
344% s = c (i,j) ;
345s = aij ;
346z = c ;
347z (i,j) = s ;
348c2 = z ;
349assert (isequal (c2, C2)) ;
350
351C1 = GrB.assign (C, Aij, I, J, desc) ; assert (isequal (C1, C2)) ;
352C1 = GrB.assign (C, I, Aij, J, desc) ; assert (isequal (C1, C2)) ;
353C1 = GrB.assign (C, I, J, Aij, desc) ; assert (isequal (C1, C2)) ;
354C1 = GrB.assign (I, J, C, Aij, desc) ; assert (isequal (C1, C2)) ;
355C1 = GrB.assign (I, C, J, Aij, desc) ; assert (isequal (C1, C2)) ;
356C1 = GrB.assign (I, C, Aij, J, desc) ; assert (isequal (C1, C2)) ;
357
358C1 = GrB.assign (c, aij, I, J, desc) ; assert (isequal (C1, C2)) ;
359C1 = GrB.assign (c, I, aij, J, desc) ; assert (isequal (C1, C2)) ;
360C1 = GrB.assign (c, I, J, aij, desc) ; assert (isequal (C1, C2)) ;
361C1 = GrB.assign (I, J, c, aij, desc) ; assert (isequal (C1, C2)) ;
362C1 = GrB.assign (I, c, J, aij, desc) ; assert (isequal (C1, C2)) ;
363C1 = GrB.assign (I, c, aij, J, desc) ; assert (isequal (C1, C2)) ;
364
365%----------------------------------------------------------------------
366% C = GrB.assign (C, M, A, I, J) ;
367%----------------------------------------------------------------------
368
369% 3 matrices: C, M, A
370% 2 indices:  I, J
371
372% C<M>(I,J) = accum (C(I,J), Aij)
373
374% S = C (i,j) ;
375% with accum:
376% S = S + Aij ;
377% with no accum:
378S = Aij ;
379Z = C ;
380Z (i,j) = S ;
381% with mask:
382C2 = C ;
383C2 (M) = Z (M) ;
384% with no mask:
385% C2 = Z ;
386
387% s = c (i,j) ;
388s = aij ;
389z = c ;
390z (i,j) = s ;
391c2 = c ;
392c2 (m) = z (m) ;
393assert (isequal (c2, C2)) ;
394
395C1 = GrB.assign (C, M, Aij, I, J, desc) ; assert (isequal (C1, C2)) ;
396C1 = GrB.assign (C, M, I, Aij, J, desc) ; assert (isequal (C1, C2)) ;
397C1 = GrB.assign (C, M, I, J, Aij, desc) ; assert (isequal (C1, C2)) ;
398C1 = GrB.assign (C, I, J, M, Aij, desc) ; assert (isequal (C1, C2)) ;
399C1 = GrB.assign (C, I, M, J, Aij, desc) ; assert (isequal (C1, C2)) ;
400C1 = GrB.assign (C, I, M, Aij, J, desc) ; assert (isequal (C1, C2)) ;
401C1 = GrB.assign (I, J, C, M, Aij, desc) ; assert (isequal (C1, C2)) ;
402C1 = GrB.assign (I, C, J, M, Aij, desc) ; assert (isequal (C1, C2)) ;
403C1 = GrB.assign (I, C, M, J, Aij, desc) ; assert (isequal (C1, C2)) ;
404C1 = GrB.assign (I, C, M, Aij, J, desc) ; assert (isequal (C1, C2)) ;
405
406C1 = GrB.assign (c, m, aij, I, J, desc) ; assert (isequal (C1, C2)) ;
407C1 = GrB.assign (c, m, I, aij, J, desc) ; assert (isequal (C1, C2)) ;
408C1 = GrB.assign (c, m, I, J, aij, desc) ; assert (isequal (C1, C2)) ;
409C1 = GrB.assign (c, I, J, m, aij, desc) ; assert (isequal (C1, C2)) ;
410C1 = GrB.assign (c, I, m, J, aij, desc) ; assert (isequal (C1, C2)) ;
411C1 = GrB.assign (c, I, m, aij, J, desc) ; assert (isequal (C1, C2)) ;
412C1 = GrB.assign (I, J, c, m, aij, desc) ; assert (isequal (C1, C2)) ;
413C1 = GrB.assign (I, c, J, m, aij, desc) ; assert (isequal (C1, C2)) ;
414C1 = GrB.assign (I, c, m, J, aij, desc) ; assert (isequal (C1, C2)) ;
415C1 = GrB.assign (I, c, m, aij, J, desc) ; assert (isequal (C1, C2)) ;
416
417%----------------------------------------------------------------------
418% C = GrB.assign (C, accum, A, I, J) ;
419%----------------------------------------------------------------------
420
421% 2 matrices: C, A
422% 2 indices:  I, J
423% 1 string:   accum
424
425% C<M>(I,J) = accum (C(I,J), Aij)
426
427S = C (i,j) ;
428% with accum:
429S = S + Aij ;
430% with no accum:
431% S = Aij ;
432Z = C ;
433Z (i,j) = S ;
434% with mask:
435% C2 = C ;
436% C2 (M) = Z (M) ;
437% with no mask:
438C2 = Z ;
439
440s = c (i,j) ;
441s = s + aij ;
442z = c ;
443z (i,j) = s ;
444c2 = z ;
445assert (isequal (c2, C2)) ;
446
447C1 = GrB.assign (C, accum, Aij, I, J, desc) ; assert (isequal (C1, C2)) ;
448C1 = GrB.assign (C, accum, I, Aij, J, desc) ; assert (isequal (C1, C2)) ;
449C1 = GrB.assign (C, accum, I, J, Aij, desc) ; assert (isequal (C1, C2)) ;
450C1 = GrB.assign (C, Aij, accum, I, J, desc) ; assert (isequal (C1, C2)) ;
451C1 = GrB.assign (C, Aij, I, accum, J, desc) ; assert (isequal (C1, C2)) ;
452C1 = GrB.assign (C, Aij, I, J, accum, desc) ; assert (isequal (C1, C2)) ;
453C1 = GrB.assign (C, I, accum, Aij, J, desc) ; assert (isequal (C1, C2)) ;
454C1 = GrB.assign (C, I, accum, J, Aij, desc) ; assert (isequal (C1, C2)) ;
455C1 = GrB.assign (C, I, Aij, accum, J, desc) ; assert (isequal (C1, C2)) ;
456C1 = GrB.assign (C, I, Aij, J, accum, desc) ; assert (isequal (C1, C2)) ;
457C1 = GrB.assign (C, I, J, accum, Aij, desc) ; assert (isequal (C1, C2)) ;
458C1 = GrB.assign (C, I, J, Aij, accum, desc) ; assert (isequal (C1, C2)) ;
459C1 = GrB.assign (I, J, accum, C, Aij, desc) ; assert (isequal (C1, C2)) ;
460C1 = GrB.assign (I, J, C, accum, Aij, desc) ; assert (isequal (C1, C2)) ;
461C1 = GrB.assign (I, J, C, Aij, accum, desc) ; assert (isequal (C1, C2)) ;
462C1 = GrB.assign (I, C, J, accum, Aij, desc) ; assert (isequal (C1, C2)) ;
463C1 = GrB.assign (I, C, J, Aij, accum, desc) ; assert (isequal (C1, C2)) ;
464C1 = GrB.assign (I, C, accum, J, Aij, desc) ; assert (isequal (C1, C2)) ;
465C1 = GrB.assign (I, C, accum, Aij, J, desc) ; assert (isequal (C1, C2)) ;
466C1 = GrB.assign (I, C, Aij, accum, J, desc) ; assert (isequal (C1, C2)) ;
467C1 = GrB.assign (I, C, Aij, J, accum, desc) ; assert (isequal (C1, C2)) ;
468C1 = GrB.assign (accum, C, Aij, I, J, desc) ; assert (isequal (C1, C2)) ;
469C1 = GrB.assign (accum, C, I, Aij, J, desc) ; assert (isequal (C1, C2)) ;
470C1 = GrB.assign (accum, C, I, J, Aij, desc) ; assert (isequal (C1, C2)) ;
471C1 = GrB.assign (accum, I, C, Aij, J, desc) ; assert (isequal (C1, C2)) ;
472C1 = GrB.assign (accum, I, C, J, Aij, desc) ; assert (isequal (C1, C2)) ;
473C1 = GrB.assign (accum, I, J, C, Aij, desc) ; assert (isequal (C1, C2)) ;
474
475C1 = GrB.assign (c, accum, aij, I, J, desc) ; assert (isequal (C1, C2)) ;
476C1 = GrB.assign (c, accum, I, aij, J, desc) ; assert (isequal (C1, C2)) ;
477C1 = GrB.assign (c, accum, I, J, aij, desc) ; assert (isequal (C1, C2)) ;
478C1 = GrB.assign (c, aij, accum, I, J, desc) ; assert (isequal (C1, C2)) ;
479C1 = GrB.assign (c, aij, I, accum, J, desc) ; assert (isequal (C1, C2)) ;
480C1 = GrB.assign (c, aij, I, J, accum, desc) ; assert (isequal (C1, C2)) ;
481C1 = GrB.assign (c, I, accum, aij, J, desc) ; assert (isequal (C1, C2)) ;
482C1 = GrB.assign (c, I, accum, J, aij, desc) ; assert (isequal (C1, C2)) ;
483C1 = GrB.assign (c, I, aij, accum, J, desc) ; assert (isequal (C1, C2)) ;
484C1 = GrB.assign (c, I, aij, J, accum, desc) ; assert (isequal (C1, C2)) ;
485C1 = GrB.assign (c, I, J, accum, aij, desc) ; assert (isequal (C1, C2)) ;
486C1 = GrB.assign (c, I, J, aij, accum, desc) ; assert (isequal (C1, C2)) ;
487C1 = GrB.assign (I, J, accum, c, aij, desc) ; assert (isequal (C1, C2)) ;
488C1 = GrB.assign (I, J, c, accum, aij, desc) ; assert (isequal (C1, C2)) ;
489C1 = GrB.assign (I, J, c, aij, accum, desc) ; assert (isequal (C1, C2)) ;
490C1 = GrB.assign (I, c, J, accum, aij, desc) ; assert (isequal (C1, C2)) ;
491C1 = GrB.assign (I, c, J, aij, accum, desc) ; assert (isequal (C1, C2)) ;
492C1 = GrB.assign (I, c, accum, J, aij, desc) ; assert (isequal (C1, C2)) ;
493C1 = GrB.assign (I, c, accum, aij, J, desc) ; assert (isequal (C1, C2)) ;
494C1 = GrB.assign (I, c, aij, accum, J, desc) ; assert (isequal (C1, C2)) ;
495C1 = GrB.assign (I, c, aij, J, accum, desc) ; assert (isequal (C1, C2)) ;
496C1 = GrB.assign (accum, c, aij, I, J, desc) ; assert (isequal (C1, C2)) ;
497C1 = GrB.assign (accum, c, I, aij, J, desc) ; assert (isequal (C1, C2)) ;
498C1 = GrB.assign (accum, c, I, J, aij, desc) ; assert (isequal (C1, C2)) ;
499C1 = GrB.assign (accum, I, c, aij, J, desc) ; assert (isequal (C1, C2)) ;
500C1 = GrB.assign (accum, I, c, J, aij, desc) ; assert (isequal (C1, C2)) ;
501C1 = GrB.assign (accum, I, J, c, aij, desc) ; assert (isequal (C1, C2)) ;
502
503%----------------------------------------------------------------------
504% C = GrB.assign (C, M, accum, A, I, J) ;
505%----------------------------------------------------------------------
506
507% 3 matrices: C, M, A
508% 2 indices:  I, J
509% 1 string:   accum
510
511% C<M>(I,J) = accum (C(I,J), Aij)
512
513S = C (i,j) ;
514% with accum:
515S = S + Aij ;
516% with no accum:
517% S = Aij ;
518Z = C ;
519Z (i,j) = S ;
520% with mask:
521C2 = C ;
522C2 (M) = Z (M) ;
523% with no mask:
524% C2 = Z ;
525
526s = c (i,j) ;
527s = s + aij ;
528z = c ;
529z (i,j) = s ;
530c2 = c ;
531c2 (m) = z (m) ;
532assert (isequal (c2, C2)) ;
533
534C1 = GrB.assign (C, M, accum, Aij, I, J, desc) ; assert (isequal (C1, C2)) ;
535C1 = GrB.assign (C, M, accum, I, Aij, J, desc) ; assert (isequal (C1, C2)) ;
536C1 = GrB.assign (C, M, accum, I, J, Aij, desc) ; assert (isequal (C1, C2)) ;
537C1 = GrB.assign (C, M, Aij, accum, I, J, desc) ; assert (isequal (C1, C2)) ;
538C1 = GrB.assign (C, M, Aij, I, accum, J, desc) ; assert (isequal (C1, C2)) ;
539C1 = GrB.assign (C, M, Aij, I, J, accum, desc) ; assert (isequal (C1, C2)) ;
540C1 = GrB.assign (C, M, I, J, Aij, accum, desc) ; assert (isequal (C1, C2)) ;
541C1 = GrB.assign (C, M, I, J, accum, Aij, desc) ; assert (isequal (C1, C2)) ;
542C1 = GrB.assign (C, M, I, Aij, J, accum, desc) ; assert (isequal (C1, C2)) ;
543C1 = GrB.assign (C, M, I, Aij, accum, J, desc) ; assert (isequal (C1, C2)) ;
544C1 = GrB.assign (C, M, I, accum, Aij, J, desc) ; assert (isequal (C1, C2)) ;
545C1 = GrB.assign (C, M, I, accum, J, Aij, desc) ; assert (isequal (C1, C2)) ;
546C1 = GrB.assign (C, accum, M, Aij, I, J, desc) ; assert (isequal (C1, C2)) ;
547C1 = GrB.assign (C, accum, M, I, Aij, J, desc) ; assert (isequal (C1, C2)) ;
548C1 = GrB.assign (C, accum, M, I, J, Aij, desc) ; assert (isequal (C1, C2)) ;
549C1 = GrB.assign (C, accum, I, J, M, Aij, desc) ; assert (isequal (C1, C2)) ;
550C1 = GrB.assign (C, accum, I, M, J, Aij, desc) ; assert (isequal (C1, C2)) ;
551C1 = GrB.assign (C, accum, I, M, Aij, J, desc) ; assert (isequal (C1, C2)) ;
552C1 = GrB.assign (C, I, J, accum, M, Aij, desc) ; assert (isequal (C1, C2)) ;
553C1 = GrB.assign (C, I, J, M, accum, Aij, desc) ; assert (isequal (C1, C2)) ;
554C1 = GrB.assign (C, I, J, M, Aij, accum, desc) ; assert (isequal (C1, C2)) ;
555C1 = GrB.assign (C, I, accum, J, M, Aij, desc) ; assert (isequal (C1, C2)) ;
556C1 = GrB.assign (C, I, accum, M, J, Aij, desc) ; assert (isequal (C1, C2)) ;
557C1 = GrB.assign (C, I, accum, M, Aij, J, desc) ; assert (isequal (C1, C2)) ;
558C1 = GrB.assign (C, I, M, accum, J, Aij, desc) ; assert (isequal (C1, C2)) ;
559C1 = GrB.assign (C, I, M, accum, Aij, J, desc) ; assert (isequal (C1, C2)) ;
560C1 = GrB.assign (C, I, M, Aij, accum, J, desc) ; assert (isequal (C1, C2)) ;
561C1 = GrB.assign (C, I, M, Aij, J, accum, desc) ; assert (isequal (C1, C2)) ;
562C1 = GrB.assign (C, I, M, J, Aij, accum, desc) ; assert (isequal (C1, C2)) ;
563C1 = GrB.assign (C, I, M, J, accum, Aij, desc) ; assert (isequal (C1, C2)) ;
564C1 = GrB.assign (accum, C, M, Aij, I, J, desc) ; assert (isequal (C1, C2)) ;
565C1 = GrB.assign (accum, C, M, I, Aij, J, desc) ; assert (isequal (C1, C2)) ;
566C1 = GrB.assign (accum, C, M, I, J, Aij, desc) ; assert (isequal (C1, C2)) ;
567C1 = GrB.assign (accum, C, I, M, Aij, J, desc) ; assert (isequal (C1, C2)) ;
568C1 = GrB.assign (accum, C, I, M, J, Aij, desc) ; assert (isequal (C1, C2)) ;
569C1 = GrB.assign (accum, C, I, J, M, Aij, desc) ; assert (isequal (C1, C2)) ;
570C1 = GrB.assign (accum, I, J, C, M, Aij, desc) ; assert (isequal (C1, C2)) ;
571C1 = GrB.assign (accum, I, C, J, M, Aij, desc) ; assert (isequal (C1, C2)) ;
572C1 = GrB.assign (accum, I, C, M, J, Aij, desc) ; assert (isequal (C1, C2)) ;
573C1 = GrB.assign (accum, I, C, M, Aij, J, desc) ; assert (isequal (C1, C2)) ;
574C1 = GrB.assign (I, J, accum, C, M, Aij, desc) ; assert (isequal (C1, C2)) ;
575C1 = GrB.assign (I, J, C, accum, M, Aij, desc) ; assert (isequal (C1, C2)) ;
576C1 = GrB.assign (I, J, C, M, accum, Aij, desc) ; assert (isequal (C1, C2)) ;
577C1 = GrB.assign (I, J, C, M, Aij, accum, desc) ; assert (isequal (C1, C2)) ;
578C1 = GrB.assign (I, accum, J, C, M, Aij, desc) ; assert (isequal (C1, C2)) ;
579C1 = GrB.assign (I, accum, C, J, M, Aij, desc) ; assert (isequal (C1, C2)) ;
580C1 = GrB.assign (I, accum, C, M, J, Aij, desc) ; assert (isequal (C1, C2)) ;
581C1 = GrB.assign (I, accum, C, M, Aij, J, desc) ; assert (isequal (C1, C2)) ;
582C1 = GrB.assign (I, C, accum, J, M, Aij, desc) ; assert (isequal (C1, C2)) ;
583C1 = GrB.assign (I, C, accum, M, J, Aij, desc) ; assert (isequal (C1, C2)) ;
584C1 = GrB.assign (I, C, accum, M, Aij, J, desc) ; assert (isequal (C1, C2)) ;
585C1 = GrB.assign (I, C, J, accum, M, Aij, desc) ; assert (isequal (C1, C2)) ;
586C1 = GrB.assign (I, C, J, M, accum, Aij, desc) ; assert (isequal (C1, C2)) ;
587C1 = GrB.assign (I, C, J, M, Aij, accum, desc) ; assert (isequal (C1, C2)) ;
588C1 = GrB.assign (I, C, M, J, accum, Aij, desc) ; assert (isequal (C1, C2)) ;
589C1 = GrB.assign (I, C, M, J, Aij, accum, desc) ; assert (isequal (C1, C2)) ;
590C1 = GrB.assign (I, C, M, accum, J, Aij, desc) ; assert (isequal (C1, C2)) ;
591C1 = GrB.assign (I, C, M, accum, Aij, J, desc) ; assert (isequal (C1, C2)) ;
592C1 = GrB.assign (I, C, M, Aij, accum, J, desc) ; assert (isequal (C1, C2)) ;
593C1 = GrB.assign (I, C, M, Aij, J, accum, desc) ; assert (isequal (C1, C2)) ;
594
595C1 = GrB.assign (c, m, accum, aij, I, J, desc) ; assert (isequal (C1, C2)) ;
596C1 = GrB.assign (c, m, accum, I, aij, J, desc) ; assert (isequal (C1, C2)) ;
597C1 = GrB.assign (c, m, accum, I, J, aij, desc) ; assert (isequal (C1, C2)) ;
598C1 = GrB.assign (c, m, aij, accum, I, J, desc) ; assert (isequal (C1, C2)) ;
599C1 = GrB.assign (c, m, aij, I, accum, J, desc) ; assert (isequal (C1, C2)) ;
600C1 = GrB.assign (c, m, aij, I, J, accum, desc) ; assert (isequal (C1, C2)) ;
601C1 = GrB.assign (c, m, I, J, aij, accum, desc) ; assert (isequal (C1, C2)) ;
602C1 = GrB.assign (c, m, I, J, accum, aij, desc) ; assert (isequal (C1, C2)) ;
603C1 = GrB.assign (c, m, I, aij, J, accum, desc) ; assert (isequal (C1, C2)) ;
604C1 = GrB.assign (c, m, I, aij, accum, J, desc) ; assert (isequal (C1, C2)) ;
605C1 = GrB.assign (c, m, I, accum, aij, J, desc) ; assert (isequal (C1, C2)) ;
606C1 = GrB.assign (c, m, I, accum, J, aij, desc) ; assert (isequal (C1, C2)) ;
607C1 = GrB.assign (c, accum, m, aij, I, J, desc) ; assert (isequal (C1, C2)) ;
608C1 = GrB.assign (c, accum, m, I, aij, J, desc) ; assert (isequal (C1, C2)) ;
609C1 = GrB.assign (c, accum, m, I, J, aij, desc) ; assert (isequal (C1, C2)) ;
610C1 = GrB.assign (c, accum, I, J, m, aij, desc) ; assert (isequal (C1, C2)) ;
611C1 = GrB.assign (c, accum, I, m, J, aij, desc) ; assert (isequal (C1, C2)) ;
612C1 = GrB.assign (c, accum, I, m, aij, J, desc) ; assert (isequal (C1, C2)) ;
613C1 = GrB.assign (c, I, J, accum, m, aij, desc) ; assert (isequal (C1, C2)) ;
614C1 = GrB.assign (c, I, J, m, accum, aij, desc) ; assert (isequal (C1, C2)) ;
615C1 = GrB.assign (c, I, J, m, aij, accum, desc) ; assert (isequal (C1, C2)) ;
616C1 = GrB.assign (c, I, accum, J, m, aij, desc) ; assert (isequal (C1, C2)) ;
617C1 = GrB.assign (c, I, accum, m, J, aij, desc) ; assert (isequal (C1, C2)) ;
618C1 = GrB.assign (c, I, accum, m, aij, J, desc) ; assert (isequal (C1, C2)) ;
619C1 = GrB.assign (c, I, m, accum, J, aij, desc) ; assert (isequal (C1, C2)) ;
620C1 = GrB.assign (c, I, m, accum, aij, J, desc) ; assert (isequal (C1, C2)) ;
621C1 = GrB.assign (c, I, m, aij, accum, J, desc) ; assert (isequal (C1, C2)) ;
622C1 = GrB.assign (c, I, m, aij, J, accum, desc) ; assert (isequal (C1, C2)) ;
623C1 = GrB.assign (c, I, m, J, aij, accum, desc) ; assert (isequal (C1, C2)) ;
624C1 = GrB.assign (c, I, m, J, accum, aij, desc) ; assert (isequal (C1, C2)) ;
625C1 = GrB.assign (accum, c, m, aij, I, J, desc) ; assert (isequal (C1, C2)) ;
626C1 = GrB.assign (accum, c, m, I, aij, J, desc) ; assert (isequal (C1, C2)) ;
627C1 = GrB.assign (accum, c, m, I, J, aij, desc) ; assert (isequal (C1, C2)) ;
628C1 = GrB.assign (accum, c, I, m, aij, J, desc) ; assert (isequal (C1, C2)) ;
629C1 = GrB.assign (accum, c, I, m, J, aij, desc) ; assert (isequal (C1, C2)) ;
630C1 = GrB.assign (accum, c, I, J, m, aij, desc) ; assert (isequal (C1, C2)) ;
631C1 = GrB.assign (accum, I, J, c, m, aij, desc) ; assert (isequal (C1, C2)) ;
632C1 = GrB.assign (accum, I, c, J, m, aij, desc) ; assert (isequal (C1, C2)) ;
633C1 = GrB.assign (accum, I, c, m, J, aij, desc) ; assert (isequal (C1, C2)) ;
634C1 = GrB.assign (accum, I, c, m, aij, J, desc) ; assert (isequal (C1, C2)) ;
635C1 = GrB.assign (I, J, accum, c, m, aij, desc) ; assert (isequal (C1, C2)) ;
636C1 = GrB.assign (I, J, c, accum, m, aij, desc) ; assert (isequal (C1, C2)) ;
637C1 = GrB.assign (I, J, c, m, accum, aij, desc) ; assert (isequal (C1, C2)) ;
638C1 = GrB.assign (I, J, c, m, aij, accum, desc) ; assert (isequal (C1, C2)) ;
639C1 = GrB.assign (I, accum, J, c, m, aij, desc) ; assert (isequal (C1, C2)) ;
640C1 = GrB.assign (I, accum, c, J, m, aij, desc) ; assert (isequal (C1, C2)) ;
641C1 = GrB.assign (I, accum, c, m, J, aij, desc) ; assert (isequal (C1, C2)) ;
642C1 = GrB.assign (I, accum, c, m, aij, J, desc) ; assert (isequal (C1, C2)) ;
643C1 = GrB.assign (I, c, accum, J, m, aij, desc) ; assert (isequal (C1, C2)) ;
644C1 = GrB.assign (I, c, accum, m, J, aij, desc) ; assert (isequal (C1, C2)) ;
645C1 = GrB.assign (I, c, accum, m, aij, J, desc) ; assert (isequal (C1, C2)) ;
646C1 = GrB.assign (I, c, J, accum, m, aij, desc) ; assert (isequal (C1, C2)) ;
647C1 = GrB.assign (I, c, J, m, accum, aij, desc) ; assert (isequal (C1, C2)) ;
648C1 = GrB.assign (I, c, J, m, aij, accum, desc) ; assert (isequal (C1, C2)) ;
649C1 = GrB.assign (I, c, m, J, accum, aij, desc) ; assert (isequal (C1, C2)) ;
650C1 = GrB.assign (I, c, m, J, aij, accum, desc) ; assert (isequal (C1, C2)) ;
651C1 = GrB.assign (I, c, m, accum, J, aij, desc) ; assert (isequal (C1, C2)) ;
652C1 = GrB.assign (I, c, m, accum, aij, J, desc) ; assert (isequal (C1, C2)) ;
653C1 = GrB.assign (I, c, m, aij, accum, J, desc) ; assert (isequal (C1, C2)) ;
654C1 = GrB.assign (I, c, m, aij, J, accum, desc) ; assert (isequal (C1, C2)) ;
655
656fprintf ('gbtest84: all tests passed\n') ;
657