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