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