1function gbtest87 2%GBTEST87 test GrB.eadd 3% 4% C = GrB.eadd (op, A, B) 5% C = GrB.eadd (op, A, B, desc) 6% C = GrB.eadd (C, accum, op, A, B, desc) 7% C = GrB.eadd (C, M, op, A, B, desc) 8% C = GrB.eadd (C, M, accum, op, A, B, desc) 9 10% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved. 11% SPDX-License-Identifier: GPL-3.0-or-later 12 13rng ('default') 14 15C = GrB.random (9, 9, 0.5) ; 16M = GrB.random (9, 9, 0.5, 'range', logical ([false true])) ; 17accum = '+' ; 18A = GrB.random (9, 9, 0.5) ; 19B = GrB.random (9, 9, 0.5) ; 20desc = struct ; 21 22op = 'max' ; 23 24c = double (C) ; 25m = logical (M) ; 26a = double (A) ; 27b = double (B) ; 28 29%---------------------------------------------------------------------- 30% C = GrB.eadd (op, A, B) 31%---------------------------------------------------------------------- 32 33% 2 matrices: A, B 34% 1 string: op 35 36C2 = max (A,B) ; 37c2 = max (a,b) ; 38assert (isequal (c2, C2)) ; 39 40C1 = GrB.eadd (op, A, B) ; assert (isequal (C1, C2)) ; 41C1 = GrB.eadd (A, op, B) ; assert (isequal (C1, C2)) ; 42C1 = GrB.eadd (A, B, op) ; assert (isequal (C1, C2)) ; 43 44C1 = GrB.eadd (op, a, b) ; assert (isequal (C1, C2)) ; 45C1 = GrB.eadd (a, op, b) ; assert (isequal (C1, C2)) ; 46C1 = GrB.eadd (a, b, op) ; assert (isequal (C1, C2)) ; 47 48%---------------------------------------------------------------------- 49% C = GrB.eadd (op, A, B, desc) 50%---------------------------------------------------------------------- 51 52% 2 matrices: A, B 53% 1 string: op 54 55C2 = max (A,B) ; 56c2 = max (a,b) ; 57assert (isequal (c2, C2)) ; 58 59C1 = GrB.eadd (op, A, B, desc) ; assert (isequal (C1, C2)) ; 60C1 = GrB.eadd (A, op, B, desc) ; assert (isequal (C1, C2)) ; 61C1 = GrB.eadd (A, B, op, desc) ; assert (isequal (C1, C2)) ; 62 63C1 = GrB.eadd (op, a, b, desc) ; assert (isequal (C1, C2)) ; 64C1 = GrB.eadd (a, op, b, desc) ; assert (isequal (C1, C2)) ; 65C1 = GrB.eadd (a, b, op, desc) ; assert (isequal (C1, C2)) ; 66 67%---------------------------------------------------------------------- 68% C = GrB.eadd (C, accum, op, A, B, desc) 69%---------------------------------------------------------------------- 70 71% 3 matrices: C, A, B 72% 2 strings: accum, op 73 74% C = accum (C, op (A,B)) ; 75 76C2 = C + max (A,B) ; 77c2 = c + max (a,b) ; 78assert (isequal (c2, C2)) ; 79 80C1 = GrB.eadd (C, accum, op, A, B, desc) ; assert (isequal (C1, C2)) ; 81C1 = GrB.eadd (C, accum, A, op, B, desc) ; assert (isequal (C1, C2)) ; 82C1 = GrB.eadd (C, accum, A, B, op, desc) ; assert (isequal (C1, C2)) ; 83C1 = GrB.eadd (C, A, accum, op, B, desc) ; assert (isequal (C1, C2)) ; 84C1 = GrB.eadd (C, A, accum, B, op, desc) ; assert (isequal (C1, C2)) ; 85C1 = GrB.eadd (C, A, B, accum, op, desc) ; assert (isequal (C1, C2)) ; 86 87C1 = GrB.eadd (c, accum, op, a, b, desc) ; assert (isequal (C1, C2)) ; 88C1 = GrB.eadd (c, accum, a, op, b, desc) ; assert (isequal (C1, C2)) ; 89C1 = GrB.eadd (c, accum, a, b, op, desc) ; assert (isequal (C1, C2)) ; 90C1 = GrB.eadd (c, a, accum, op, b, desc) ; assert (isequal (C1, C2)) ; 91C1 = GrB.eadd (c, a, accum, b, op, desc) ; assert (isequal (C1, C2)) ; 92C1 = GrB.eadd (c, a, b, accum, op, desc) ; assert (isequal (C1, C2)) ; 93 94%---------------------------------------------------------------------- 95% C = GrB.eadd (C, M, op, A, B, desc) 96%---------------------------------------------------------------------- 97 98% 4 matrices: C, M, A, B 99% 1 string: op 100 101% C<M> = op (A,B) 102 103T = max (A,B) ; 104C2 = C ; 105C2 (M) = T (M) ; 106 107t = max (a,b) ; 108c2 = c ; 109c2 (m) = t (m) ; 110assert (isequal (c2, C2)) ; 111 112C1 = GrB.eadd (op, C, M, A, B, desc) ; assert (isequal (C1, C2)) ; 113C1 = GrB.eadd (C, M, op, A, B, desc) ; assert (isequal (C1, C2)) ; 114C1 = GrB.eadd (C, M, A, op, B, desc) ; assert (isequal (C1, C2)) ; 115C1 = GrB.eadd (C, M, A, B, op, desc) ; assert (isequal (C1, C2)) ; 116 117C1 = GrB.eadd (op, c, m, a, b, desc) ; assert (isequal (C1, C2)) ; 118C1 = GrB.eadd (c, m, op, a, b, desc) ; assert (isequal (C1, C2)) ; 119C1 = GrB.eadd (c, m, a, op, b, desc) ; assert (isequal (C1, C2)) ; 120C1 = GrB.eadd (c, m, a, b, op, desc) ; assert (isequal (C1, C2)) ; 121 122%---------------------------------------------------------------------- 123% C = GrB.eadd (C, M, accum, op, A, B, desc) 124%---------------------------------------------------------------------- 125 126% 4 matrices: C, M, A, B 127% 2 string: accum, op 128 129% C<M> = accum (C, A*B) ; 130 131T = C + max (A,B) ; 132C2 = C ; 133C2 (M) = T (M) ; 134 135t = c + max (a,b) ; 136c2 = c ; 137c2 (m) = t (m) ; 138assert (isequal (c2, C2)) ; 139 140C1 = GrB.eadd (C, M, accum, op, A, B, desc) ; assert (isequal (C1, C2)) ; 141C1 = GrB.eadd (C, M, accum, A, op, B, desc) ; assert (isequal (C1, C2)) ; 142C1 = GrB.eadd (C, M, accum, A, B, op, desc) ; assert (isequal (C1, C2)) ; 143C1 = GrB.eadd (C, accum, op, M, A, B, desc) ; assert (isequal (C1, C2)) ; 144C1 = GrB.eadd (C, accum, M, op, A, B, desc) ; assert (isequal (C1, C2)) ; 145C1 = GrB.eadd (C, accum, M, A, op, B, desc) ; assert (isequal (C1, C2)) ; 146C1 = GrB.eadd (C, accum, M, A, B, op, desc) ; assert (isequal (C1, C2)) ; 147C1 = GrB.eadd (C, M, A, B, accum, op, desc) ; assert (isequal (C1, C2)) ; 148C1 = GrB.eadd (C, M, A, accum, B, op, desc) ; assert (isequal (C1, C2)) ; 149C1 = GrB.eadd (C, M, A, accum, op, B, desc) ; assert (isequal (C1, C2)) ; 150C1 = GrB.eadd (accum, op, C, M, A, B, desc) ; assert (isequal (C1, C2)) ; 151C1 = GrB.eadd (accum, C, op, M, A, B, desc) ; assert (isequal (C1, C2)) ; 152C1 = GrB.eadd (accum, C, M, op, A, B, desc) ; assert (isequal (C1, C2)) ; 153C1 = GrB.eadd (accum, C, M, A, op, B, desc) ; assert (isequal (C1, C2)) ; 154C1 = GrB.eadd (accum, C, M, A, B, op, desc) ; assert (isequal (C1, C2)) ; 155 156C1 = GrB.eadd (c, m, accum, op, a, b, desc) ; assert (isequal (C1, C2)) ; 157C1 = GrB.eadd (c, m, accum, a, op, b, desc) ; assert (isequal (C1, C2)) ; 158C1 = GrB.eadd (c, m, accum, a, b, op, desc) ; assert (isequal (C1, C2)) ; 159C1 = GrB.eadd (c, accum, op, m, a, b, desc) ; assert (isequal (C1, C2)) ; 160C1 = GrB.eadd (c, accum, m, op, a, b, desc) ; assert (isequal (C1, C2)) ; 161C1 = GrB.eadd (c, accum, m, a, op, b, desc) ; assert (isequal (C1, C2)) ; 162C1 = GrB.eadd (c, accum, m, a, b, op, desc) ; assert (isequal (C1, C2)) ; 163C1 = GrB.eadd (c, m, a, b, accum, op, desc) ; assert (isequal (C1, C2)) ; 164C1 = GrB.eadd (c, m, a, accum, b, op, desc) ; assert (isequal (C1, C2)) ; 165C1 = GrB.eadd (c, m, a, accum, op, b, desc) ; assert (isequal (C1, C2)) ; 166C1 = GrB.eadd (accum, op, c, m, a, b, desc) ; assert (isequal (C1, C2)) ; 167C1 = GrB.eadd (accum, c, op, m, a, b, desc) ; assert (isequal (C1, C2)) ; 168C1 = GrB.eadd (accum, c, m, op, a, b, desc) ; assert (isequal (C1, C2)) ; 169C1 = GrB.eadd (accum, c, m, a, op, b, desc) ; assert (isequal (C1, C2)) ; 170C1 = GrB.eadd (accum, c, m, a, b, op, desc) ; assert (isequal (C1, C2)) ; 171 172fprintf ('gbtest87: all tests passed\n') ; 173 174