1function gbtest45
2%GBTEST45 test GrB.vreduce
3
4% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved.
5% SPDX-License-Identifier: GPL-3.0-or-later
6
7rng ('default') ;
8d.kind = 'sparse' ;
9
10for trial = 1:40
11
12    A = rand (4) ;
13    G = GrB (A) ;
14    x = GrB.vreduce ('+', A) ;
15    y = GrB.vreduce ('+', G) ;
16    t = GrB.vreduce ('+', G, d) ;
17    z = sum (G, 2) ;
18    w = sum (A, 2) ;
19
20    assert (isequal (w, x)) ;
21    assert (isequal (w, y)) ;
22    assert (isequal (w, z)) ;
23    assert (isequal (w, t)) ;
24
25    assert (isequal (class (t), 'double')) ;
26
27    cin = rand (4,1) ;
28    x = GrB.vreduce (cin, '+', '+', A) ;
29    y = cin + sum (A, 2) ;
30    assert (isequal (x, y)) ;
31
32    m = logical (sprand (4, 1, 0.5)) ;
33    x = GrB.vreduce (cin, m, '+', '+', A) ;
34    t = cin + sum (A, 2) ;
35    y = cin ;
36    y (m) = t (m) ;
37    assert (isequal (x, y)) ;
38
39    x = GrB.vreduce (cin, m, '+', A) ;
40    t = sum (A, 2) ;
41    y = cin ;
42    y (m) = t (m) ;
43    assert (isequal (x, y)) ;
44
45end
46
47fprintf ('gbtest45: all tests passed\n') ;
48
49