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