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