1function gbtest83 2%GBTEST83 test GrB.apply 3% 4% C = GrB.apply (op, A) 5% C = GrB.apply (C, accum, op, A) 6% C = GrB.apply (C, M, op, A) 7% C = GrB.apply (C, M, accum, op, A) 8 9% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved. 10% SPDX-License-Identifier: GPL-3.0-or-later 11 12rng ('default') 13 14C = GrB.random (9, 9, 0.5) ; 15M = GrB.random (9, 9, 0.5, 'range', logical ([false true])) ; 16accum = '+' ; 17op = 'sqrt' ; 18A = GrB.random (9, 9, 0.5) ; 19desc = struct ; 20 21c = double (C) ; 22a = double (A) ; 23m = logical (M) ; 24 25%---------------------------------------------------------------------- 26% C = GrB.apply (op, A, desc) 27%---------------------------------------------------------------------- 28 29% 1 matrix: A 30% 1 string: op 31 32C2 = sqrt (A) ; 33 34C1 = GrB.apply (op, A, desc) ; assert (isequal (C1, C2)) ; 35C1 = GrB.apply (A, op, desc) ; assert (isequal (C1, C2)) ; 36 37C1 = GrB.apply (op, a, desc) ; assert (isequal (C1, C2)) ; 38C1 = GrB.apply (a, op, desc) ; assert (isequal (C1, C2)) ; 39 40%---------------------------------------------------------------------- 41% C = GrB.apply (C, accum, op, A, desc) 42%---------------------------------------------------------------------- 43 44% 2 matrices: C, A 45% 2 strings: accum, op 46 47C2 = C + sqrt (A) ; 48c2 = c + sqrt (a) ; 49assert (isequal (c2, C2)) ; 50 51C1 = GrB.apply (C, accum, op, A, desc) ; assert (isequal (C1, C2)) ; 52C1 = GrB.apply (C, accum, A, op, desc) ; assert (isequal (C1, C2)) ; 53C1 = GrB.apply (C, A, accum, op, desc) ; assert (isequal (C1, C2)) ; 54C1 = GrB.apply (accum, C, A, op, desc) ; assert (isequal (C1, C2)) ; 55C1 = GrB.apply (accum, C, op, A, desc) ; assert (isequal (C1, C2)) ; 56C1 = GrB.apply (accum, op, C, A, desc) ; assert (isequal (C1, C2)) ; 57 58C1 = GrB.apply (c, accum, op, a, desc) ; assert (isequal (C1, C2)) ; 59C1 = GrB.apply (c, accum, a, op, desc) ; assert (isequal (C1, C2)) ; 60C1 = GrB.apply (c, a, accum, op, desc) ; assert (isequal (C1, C2)) ; 61C1 = GrB.apply (accum, c, a, op, desc) ; assert (isequal (C1, C2)) ; 62C1 = GrB.apply (accum, c, op, a, desc) ; assert (isequal (C1, C2)) ; 63C1 = GrB.apply (accum, op, c, a, desc) ; assert (isequal (C1, C2)) ; 64 65%---------------------------------------------------------------------- 66% C = GrB.apply (C, M, op, A, desc) 67%---------------------------------------------------------------------- 68 69% 3 matrices: C, M, A 70% 1 string: op 71 72% C<M> = sqrt (A) 73C2 = GrB.assign (C, M, sqrt (A)) ; 74 75t = sqrt (a) ; 76c2 = c ; 77c2 (m) = t (m) ; 78assert (isequal (c2, C2)) ; 79 80C1 = GrB.apply (C, M, op, A, desc) ; assert (isequal (C1, C2)) ; 81C1 = GrB.apply (C, M, A, op, desc) ; assert (isequal (C1, C2)) ; 82C1 = GrB.apply (C, op, M, A, desc) ; assert (isequal (C1, C2)) ; 83C1 = GrB.apply (op, C, M, A, desc) ; assert (isequal (C1, C2)) ; 84 85C1 = GrB.apply (c, m, op, a, desc) ; assert (isequal (C1, C2)) ; 86C1 = GrB.apply (c, m, a, op, desc) ; assert (isequal (C1, C2)) ; 87C1 = GrB.apply (c, op, m, a, desc) ; assert (isequal (C1, C2)) ; 88C1 = GrB.apply (op, c, m, a, desc) ; assert (isequal (C1, C2)) ; 89 90%---------------------------------------------------------------------- 91% C = GrB.apply (C, M, accum, op, A, desc) 92%---------------------------------------------------------------------- 93 94% 3 matrices: C, M, A 95% 2 strings: accum, op 96 97% C<M> += sqrt (A) 98C2 = GrB.assign (C, M, accum, sqrt (A)) ; 99 100t = c + sqrt (a) ; 101c2 = c ; 102c2 (m) = t (m) ; 103assert (isequal (c2, C2)) ; 104 105C1 = GrB.apply (C, M, accum, op, A, desc) ; assert (isequal (C1, C2)) ; 106C1 = GrB.apply (C, M, accum, A, op, desc) ; assert (isequal (C1, C2)) ; 107C1 = GrB.apply (C, M, A, accum, op, desc) ; assert (isequal (C1, C2)) ; 108C1 = GrB.apply (C, accum, M, op, A, desc) ; assert (isequal (C1, C2)) ; 109C1 = GrB.apply (C, accum, M, A, op, desc) ; assert (isequal (C1, C2)) ; 110C1 = GrB.apply (C, accum, op, M, A, desc) ; assert (isequal (C1, C2)) ; 111 112C1 = GrB.apply (accum, C, M, op, A, desc) ; assert (isequal (C1, C2)) ; 113C1 = GrB.apply (accum, C, M, A, op, desc) ; assert (isequal (C1, C2)) ; 114C1 = GrB.apply (accum, C, op, M, A, desc) ; assert (isequal (C1, C2)) ; 115C1 = GrB.apply (accum, op, C, M, A, desc) ; assert (isequal (C1, C2)) ; 116 117fprintf ('gbtest83: all tests passed\n') ; 118 119