1function gbtest48
2%GBTEST48 test GrB.apply
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') ;
8desc.kind = 'sparse' ;
9
10for trial = 1:40
11
12    A = rand (4) ;
13    A (A > .5) = 0 ;
14    G = GrB (A) ;
15
16    C0 = -A ;
17    C1 = GrB.apply ('negate', A) ;
18    C2 = GrB.apply ('negate', A, desc) ;
19    C3 = GrB.apply ('negate', G, desc) ;
20    C4 = GrB.apply ('negate', G) ;
21
22    assert (isequal (C0, C1)) ;
23    assert (isequal (C0, C2)) ;
24    assert (isequal (C0, C3)) ;
25    assert (isequal (C0, C4)) ;
26
27    assert (isequal (class (C2), 'double')) ;
28    assert (isequal (class (C3), 'double')) ;
29
30    M = logical (sprand (4, 4, 0.5)) ;
31    Cin = rand (4) ;
32    T = Cin + (-A) ;
33    C0 = Cin ;
34    C0 (M) = T (M) ;
35    C1 = GrB.apply (Cin, M, '+', '-', A) ;
36    assert (isequal (C0, C1)) ;
37
38    C0 = Cin + (-A) ;
39    C1 = GrB.apply (Cin, '+', '-', A) ;
40    assert (isequal (C0, C1)) ;
41
42    T = -A ;
43    C0 = Cin ;
44    C0 (M) = T (M) ;
45    C1 = GrB.apply (Cin, M, '', '-', A) ;
46    assert (isequal (C0, C1)) ;
47
48end
49
50fprintf ('gbtest48: all tests passed\n') ;
51
52