1function gbtest93 2%GBTEST93 test GrB.select 3% 4% C = GrB.select (op, A) 5% C = GrB.select (op, A, b) 6% C = GrB.select (op, A, b, desc) 7% 8% C = GrB.select (C, accum, op, A) 9% C = GrB.select (C, accum, op, A, b) 10% C = GrB.select (C, accum, op, A, b, desc) 11% 12% C = GrB.select (C, M, op, A) 13% C = GrB.select (C, M, op, A, b) 14% C = GrB.select (C, M, op, A, b, desc) 15% 16% C = GrB.select (C, M, accum, op, A) 17% C = GrB.select (C, M, accum, op, A, b) 18% C = GrB.select (C, M, accum, op, A, b, desc) 19 20% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved. 21% SPDX-License-Identifier: GPL-3.0-or-later 22 23rng ('default') 24 25C = GrB.random (9, 9, 0.5, 'range', [-1 1]) ; 26M = GrB.random (9, 9, 0.5, 'range', logical ([false true])) ; 27accum = '+' ; 28A = GrB.random (9, 9, 0.5, 'range', [-1 1]) ; 29B = GrB (0.5) ; 30desc = struct ; 31 32c = double (C) ; 33m = logical (M) ; 34a = double (A) ; 35b = double (B) ; 36 37%---------------------------------------------------------------------- 38% C = GrB.select (op, A) 39%---------------------------------------------------------------------- 40 41% 1 matrix: A 42% 1 string: op 43 44C2 = A .* (A > 0) ; 45c2 = a .* (a > 0) ; 46assert (isequal (c2, C2)) ; 47 48C1 = GrB.select ('>0', A) ; assert (isequal (C1, C2)) ; 49C1 = GrB.select (A, '>0') ; assert (isequal (C1, C2)) ; 50 51C1 = GrB.select ('>0', a) ; assert (isequal (C1, C2)) ; 52C1 = GrB.select (a, '>0') ; assert (isequal (C1, C2)) ; 53 54%---------------------------------------------------------------------- 55% C = GrB.select (op, A, desc) 56%---------------------------------------------------------------------- 57 58% 1 matrix: A 59% 1 string: op 60 61C2 = A .* (A > 0) ; 62c2 = a .* (a > 0) ; 63assert (isequal (c2, C2)) ; 64 65C1 = GrB.select ('>0', A, desc) ; assert (isequal (C1, C2)) ; 66C1 = GrB.select (A, '>0', desc) ; assert (isequal (C1, C2)) ; 67 68C1 = GrB.select ('>0', a, desc) ; assert (isequal (C1, C2)) ; 69C1 = GrB.select (a, '>0', desc) ; assert (isequal (C1, C2)) ; 70 71%---------------------------------------------------------------------- 72% C = GrB.select (op, A, b, desc) 73%---------------------------------------------------------------------- 74 75% 2 matrices A, b 76% 1 string: op 77 78C2 = A .* (A > 0.5) ; 79c2 = a .* (a > 0.5) ; 80assert (isequal (c2, C2)) ; 81 82C1 = GrB.select ('>', A, B, desc) ; assert (isequal (C1, C2)) ; 83C1 = GrB.select (A, '>', B, desc) ; assert (isequal (C1, C2)) ; 84C1 = GrB.select (A, B, '>', desc) ; assert (isequal (C1, C2)) ; 85 86C1 = GrB.select ('>', a, b, desc) ; assert (isequal (C1, C2)) ; 87C1 = GrB.select (a, '>', b, desc) ; assert (isequal (C1, C2)) ; 88C1 = GrB.select (a, b, '>', desc) ; assert (isequal (C1, C2)) ; 89 90%---------------------------------------------------------------------- 91% C = GrB.select (C, accum, op, A, desc) 92%---------------------------------------------------------------------- 93 94% 2 matrices: C, A 95% 2 strings: accum, op 96 97C2 = C + A .* (A > 0) ; 98c2 = c + a .* (a > 0) ; 99assert (isequal (c2, C2)) ; 100 101C1 = GrB.select (C, accum, '>0', A, desc) ; assert (isequal (C1, C2)) ; 102C1 = GrB.select (C, accum, A, '>0', desc) ; assert (isequal (C1, C2)) ; 103C1 = GrB.select (C, A, accum, '>0', desc) ; assert (isequal (C1, C2)) ; 104C1 = GrB.select (accum, '>0', C, A, desc) ; assert (isequal (C1, C2)) ; 105 106C1 = GrB.select (c, accum, '>0', a, desc) ; assert (isequal (C1, C2)) ; 107C1 = GrB.select (c, accum, a, '>0', desc) ; assert (isequal (C1, C2)) ; 108C1 = GrB.select (c, a, accum, '>0', desc) ; assert (isequal (C1, C2)) ; 109C1 = GrB.select (accum, '>0', c, a, desc) ; assert (isequal (C1, C2)) ; 110 111%---------------------------------------------------------------------- 112% C = GrB.select (C, accum, op, A, b, desc) 113%---------------------------------------------------------------------- 114 115% 3 matrices: C, A, b 116% 2 strings: accum, op 117 118C2 = C + A .* (A > 0.5) ; 119c2 = c + a .* (a > 0.5) ; 120assert (isequal (c2, C2)) ; 121 122C1 = GrB.select (C, accum, '>', A, B, desc) ; assert (isequal (C1, C2)) ; 123C1 = GrB.select (C, accum, A, '>', B, desc) ; assert (isequal (C1, C2)) ; 124C1 = GrB.select (C, accum, A, B, '>', desc) ; assert (isequal (C1, C2)) ; 125C1 = GrB.select (C, A, B, accum, '>', desc) ; assert (isequal (C1, C2)) ; 126C1 = GrB.select (C, A, accum, B, '>', desc) ; assert (isequal (C1, C2)) ; 127C1 = GrB.select (C, A, accum, '>', B, desc) ; assert (isequal (C1, C2)) ; 128C1 = GrB.select (accum, '>', C, A, B, desc) ; assert (isequal (C1, C2)) ; 129C1 = GrB.select (accum, C, '>', A, B, desc) ; assert (isequal (C1, C2)) ; 130C1 = GrB.select (accum, C, A, '>', B, desc) ; assert (isequal (C1, C2)) ; 131C1 = GrB.select (accum, C, A, B, '>', desc) ; assert (isequal (C1, C2)) ; 132 133C1 = GrB.select (c, accum, '>', a, b, desc) ; assert (isequal (C1, C2)) ; 134C1 = GrB.select (c, accum, a, '>', b, desc) ; assert (isequal (C1, C2)) ; 135C1 = GrB.select (c, accum, a, b, '>', desc) ; assert (isequal (C1, C2)) ; 136C1 = GrB.select (c, a, b, accum, '>', desc) ; assert (isequal (C1, C2)) ; 137C1 = GrB.select (c, a, accum, b, '>', desc) ; assert (isequal (C1, C2)) ; 138C1 = GrB.select (c, a, accum, '>', b, desc) ; assert (isequal (C1, C2)) ; 139C1 = GrB.select (accum, '>', c, a, b, desc) ; assert (isequal (C1, C2)) ; 140C1 = GrB.select (accum, c, '>', a, b, desc) ; assert (isequal (C1, C2)) ; 141C1 = GrB.select (accum, c, a, '>', b, desc) ; assert (isequal (C1, C2)) ; 142C1 = GrB.select (accum, c, a, b, '>', desc) ; assert (isequal (C1, C2)) ; 143 144%---------------------------------------------------------------------- 145% C = GrB.select (C, M, op, A, desc) 146%---------------------------------------------------------------------- 147 148% 3 matrices: C, M, A 149% 1 string: op 150 151% C<M> = op (A) 152T = A .* (A > 0) ; 153C2 = C ; 154C2 (M) = T (M) ; 155 156t = a .* (a > 0) ; 157c2 = c ; 158c2 (m) = t (m) ; 159assert (isequal (c2, C2)) ; 160 161C1 = GrB.select (C, M, '>0', A, desc) ; assert (isequal (C1, C2)) ; 162C1 = GrB.select (C, '>0', M, A, desc) ; assert (isequal (C1, C2)) ; 163C1 = GrB.select ('>0', C, M, A, desc) ; assert (isequal (C1, C2)) ; 164C1 = GrB.select (C, M, A, '>0', desc) ; assert (isequal (C1, C2)) ; 165 166C1 = GrB.select (c, m, '>0', a, desc) ; assert (isequal (C1, C2)) ; 167C1 = GrB.select (c, '>0', m, a, desc) ; assert (isequal (C1, C2)) ; 168C1 = GrB.select ('>0', c, m, a, desc) ; assert (isequal (C1, C2)) ; 169C1 = GrB.select (c, m, a, '>0', desc) ; assert (isequal (C1, C2)) ; 170 171%---------------------------------------------------------------------- 172% C = GrB.select (C, M, op, A, b, desc) 173%---------------------------------------------------------------------- 174 175% 4 matrices: C, M, A, b 176% 1 string: op 177 178% C<M> = op (A,b) 179 180T = A .* (A > 0.5) ; 181C2 = C ; 182C2 (M) = T (M) ; 183 184t = a .* (a > 0.5) ; 185c2 = c ; 186c2 (m) = t (m) ; 187assert (isequal (c2, C2)) ; 188 189C1 = GrB.select (C, M, '>', A, B, desc) ; assert (isequal (C1, C2)) ; 190C1 = GrB.select ('>', C, M, A, B, desc) ; assert (isequal (C1, C2)) ; 191C1 = GrB.select (C, '>', M, A, B, desc) ; assert (isequal (C1, C2)) ; 192C1 = GrB.select (C, M, A, '>', B, desc) ; assert (isequal (C1, C2)) ; 193C1 = GrB.select (C, M, A, B, '>', desc) ; assert (isequal (C1, C2)) ; 194 195C1 = GrB.select (c, m, '>', a, b, desc) ; assert (isequal (C1, C2)) ; 196C1 = GrB.select ('>', c, m, a, b, desc) ; assert (isequal (C1, C2)) ; 197C1 = GrB.select (c, '>', m, a, b, desc) ; assert (isequal (C1, C2)) ; 198C1 = GrB.select (c, m, a, '>', b, desc) ; assert (isequal (C1, C2)) ; 199C1 = GrB.select (c, m, a, b, '>', desc) ; assert (isequal (C1, C2)) ; 200 201%---------------------------------------------------------------------- 202% C = GrB.select (C, M, accum, op, A, desc) 203%---------------------------------------------------------------------- 204 205% 3 matrices: C, M, A 206% 2 strings: accum, op 207 208% C<M> += op (A) 209 210T = C + A .* (A > 0) ; 211C2 = C ; 212C2 (M) = T (M) ; 213 214t = c + a .* (a > 0) ; 215c2 = c ; 216c2 (m) = t (m) ; 217assert (isequal (c2, C2)) ; 218 219C1 = GrB.select (C, M, accum, '>0', A, desc) ; assert (isequal (C1, C2)) ; 220C1 = GrB.select (C, accum, '>0', M, A, desc) ; assert (isequal (C1, C2)) ; 221C1 = GrB.select (C, accum, M, '>0', A, desc) ; assert (isequal (C1, C2)) ; 222C1 = GrB.select (C, accum, M, A, '>0', desc) ; assert (isequal (C1, C2)) ; 223C1 = GrB.select (C, M, A, accum, '>0', desc) ; assert (isequal (C1, C2)) ; 224C1 = GrB.select (C, M, accum, A, '>0', desc) ; assert (isequal (C1, C2)) ; 225C1 = GrB.select (accum, '>0', C, M, A, desc) ; assert (isequal (C1, C2)) ; 226C1 = GrB.select (accum, C, '>0', M, A, desc) ; assert (isequal (C1, C2)) ; 227C1 = GrB.select (accum, C, M, '>0', A, desc) ; assert (isequal (C1, C2)) ; 228C1 = GrB.select (accum, C, M, A, '>0', desc) ; assert (isequal (C1, C2)) ; 229 230C1 = GrB.select (c, m, accum, '>0', a, desc) ; assert (isequal (C1, C2)) ; 231C1 = GrB.select (c, accum, '>0', m, a, desc) ; assert (isequal (C1, C2)) ; 232C1 = GrB.select (c, accum, m, '>0', a, desc) ; assert (isequal (C1, C2)) ; 233C1 = GrB.select (c, accum, m, a, '>0', desc) ; assert (isequal (C1, C2)) ; 234C1 = GrB.select (c, m, a, accum, '>0', desc) ; assert (isequal (C1, C2)) ; 235C1 = GrB.select (c, m, accum, a, '>0', desc) ; assert (isequal (C1, C2)) ; 236C1 = GrB.select (accum, '>0', c, m, a, desc) ; assert (isequal (C1, C2)) ; 237C1 = GrB.select (accum, c, '>0', m, a, desc) ; assert (isequal (C1, C2)) ; 238C1 = GrB.select (accum, c, m, '>0', a, desc) ; assert (isequal (C1, C2)) ; 239C1 = GrB.select (accum, c, m, a, '>0', desc) ; assert (isequal (C1, C2)) ; 240 241%---------------------------------------------------------------------- 242% C = GrB.select (C, M, accum, op, A, b, desc) 243%---------------------------------------------------------------------- 244 245% 4 matrices: C, M, A, b 246% 2 strings: accum, op 247 248% C<M> += op (A,b) 249 250T = C + A .* (A > 0.5) ; 251C2 = C ; 252C2 (M) = T (M) ; 253 254t = c + a .* (a > 0.5) ; 255c2 = c ; 256c2 (m) = t (m) ; 257assert (isequal (c2, C2)) ; 258 259C1 = GrB.select (C, M, accum, '>', A, B, desc) ; assert (isequal (C1, C2)) ; 260C1 = GrB.select (C, M, accum, A, '>', B, desc) ; assert (isequal (C1, C2)) ; 261C1 = GrB.select (C, M, accum, A, B, '>', desc) ; assert (isequal (C1, C2)) ; 262 263C1 = GrB.select (C, M, A, B, accum, '>', desc) ; assert (isequal (C1, C2)) ; 264C1 = GrB.select (C, M, A, accum, B, '>', desc) ; assert (isequal (C1, C2)) ; 265C1 = GrB.select (C, M, A, accum, '>', B, desc) ; assert (isequal (C1, C2)) ; 266 267C1 = GrB.select (C, accum, '>', M, A, B, desc) ; assert (isequal (C1, C2)) ; 268C1 = GrB.select (C, accum, M, '>', A, B, desc) ; assert (isequal (C1, C2)) ; 269C1 = GrB.select (C, accum, M, A, '>', B, desc) ; assert (isequal (C1, C2)) ; 270C1 = GrB.select (C, accum, M, A, B, '>', desc) ; assert (isequal (C1, C2)) ; 271 272C1 = GrB.select (accum, '>', C, M, A, B, desc) ; assert (isequal (C1, C2)) ; 273C1 = GrB.select (accum, C, '>', M, A, B, desc) ; assert (isequal (C1, C2)) ; 274C1 = GrB.select (accum, C, M, '>', A, B, desc) ; assert (isequal (C1, C2)) ; 275C1 = GrB.select (accum, C, M, A, '>', B, desc) ; assert (isequal (C1, C2)) ; 276C1 = GrB.select (accum, C, M, A, B, '>', desc) ; assert (isequal (C1, C2)) ; 277 278fprintf ('gbtest93: all tests passed\n') ; 279 280