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