1function gbtest90
2%GBTEST90 test GrB.reduce
3%
4% c = GrB.reduce (monoid, A)
5% c = GrB.reduce (monoid, A, desc)
6% c = GrB.reduce (c, accum, monoid, A)
7% c = GrB.reduce (c, accum, monoid, A, desc)
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 (pi) ;
15accum  = '*' ;
16monoid = '+' ;
17A      = GrB.random (9, 9, 0.5) ;
18desc   = struct ;
19
20c = double (C) ;
21a = double (A) ;
22
23%----------------------------------------------------------------------
24% c = GrB.reduce (monoid, A)
25%----------------------------------------------------------------------
26
27% 1 matrix: A
28% 1 string: monoid
29
30C2 = sum (A, 'all') ;
31% works in R2019b; fails in R2018a:
32% c2 = sum (a, 'all') ;
33% works in R2018a:
34c2 = sum (a (:)) ;
35assert (isequal (c2, C2)) ;
36
37C1 = GrB.reduce (monoid, A) ; assert (isequal (C1, C2)) ;
38C1 = GrB.reduce (A, monoid) ; assert (isequal (C1, C2)) ;
39
40C1 = GrB.reduce (monoid, a) ; assert (isequal (C1, C2)) ;
41C1 = GrB.reduce (a, monoid) ; assert (isequal (C1, C2)) ;
42
43%----------------------------------------------------------------------
44% c = GrB.reduce (monoid, A, desc)
45%----------------------------------------------------------------------
46
47% 1 matrix: A
48% 1 string: monoid
49
50C2 = sum (A, 'all') ;
51c2 = sum (a (:)) ;
52assert (isequal (c2, C2)) ;
53
54C1 = GrB.reduce (monoid, A, desc) ; assert (isequal (C1, C2)) ;
55C1 = GrB.reduce (A, monoid, desc) ; assert (isequal (C1, C2)) ;
56
57C1 = GrB.reduce (monoid, a, desc) ; assert (isequal (C1, C2)) ;
58C1 = GrB.reduce (a, monoid, desc) ; assert (isequal (C1, C2)) ;
59
60%----------------------------------------------------------------------
61% c = GrB.reduce (c, accum, monoid, A)
62%----------------------------------------------------------------------
63
64% 2 matrices: c, A
65% 2 strings: accum, monoid
66
67C2 = C * sum (A, 'all') ;
68c2 = c * sum (a (:)) ;
69assert (isequal (c2, C2)) ;
70
71C1 = GrB.reduce (C, accum, monoid, A) ; assert (isequal (C1, C2)) ;
72C1 = GrB.reduce (C, accum, A, monoid) ; assert (isequal (C1, C2)) ;
73C1 = GrB.reduce (C, A, accum, monoid) ; assert (isequal (C1, C2)) ;
74C1 = GrB.reduce (accum, C, monoid, A) ; assert (isequal (C1, C2)) ;
75C1 = GrB.reduce (accum, C, A, monoid) ; assert (isequal (C1, C2)) ;
76C1 = GrB.reduce (accum, monoid, C, A) ; assert (isequal (C1, C2)) ;
77
78C1 = GrB.reduce (c, accum, monoid, a) ; assert (isequal (C1, C2)) ;
79C1 = GrB.reduce (c, accum, a, monoid) ; assert (isequal (C1, C2)) ;
80C1 = GrB.reduce (c, a, accum, monoid) ; assert (isequal (C1, C2)) ;
81C1 = GrB.reduce (accum, c, monoid, a) ; assert (isequal (C1, C2)) ;
82C1 = GrB.reduce (accum, c, a, monoid) ; assert (isequal (C1, C2)) ;
83C1 = GrB.reduce (accum, monoid, c, a) ; assert (isequal (C1, C2)) ;
84
85%----------------------------------------------------------------------
86% c = GrB.reduce (c, accum, monoid, A, desc)
87%----------------------------------------------------------------------
88
89% 2 matrices: c, A
90% 2 strings: accum, monoid
91
92C2 = C * sum (A, 'all') ;
93c2 = c * sum (a (:)) ;
94assert (isequal (c2, C2)) ;
95
96C1 = GrB.reduce (C, accum, monoid, A, desc) ; assert (isequal (C1, C2)) ;
97C1 = GrB.reduce (C, accum, A, monoid, desc) ; assert (isequal (C1, C2)) ;
98C1 = GrB.reduce (C, A, accum, monoid, desc) ; assert (isequal (C1, C2)) ;
99C1 = GrB.reduce (accum, C, monoid, A, desc) ; assert (isequal (C1, C2)) ;
100C1 = GrB.reduce (accum, C, A, monoid, desc) ; assert (isequal (C1, C2)) ;
101C1 = GrB.reduce (accum, monoid, C, A, desc) ; assert (isequal (C1, C2)) ;
102
103C1 = GrB.reduce (c, accum, monoid, a, desc) ; assert (isequal (C1, C2)) ;
104C1 = GrB.reduce (c, accum, a, monoid, desc) ; assert (isequal (C1, C2)) ;
105C1 = GrB.reduce (c, a, accum, monoid, desc) ; assert (isequal (C1, C2)) ;
106C1 = GrB.reduce (accum, c, monoid, a, desc) ; assert (isequal (C1, C2)) ;
107C1 = GrB.reduce (accum, c, a, monoid, desc) ; assert (isequal (C1, C2)) ;
108C1 = GrB.reduce (accum, monoid, c, a, desc) ; assert (isequal (C1, C2)) ;
109
110fprintf ('gbtest90: all tests passed\n') ;
111
112