1function gbtest63
2%GBTEST63 test GrB.incidence
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') ;
8
9for trial = 1:2
10
11    if (trial == 1)
12        ij = [
13        4 1
14        1 2
15        4 3
16        6 3
17        7 3
18        1 4
19        7 4
20        2 5
21        7 5
22        3 6
23        5 6
24        2 7 ] ;
25        W = sparse (ij (:,1), ij (:,2), ones (12,1), 8, 8) ;
26    else
27        load west0479 ; %#ok<*LOAD>
28        W = west0479 ;
29    end
30
31    W = spones (GrB.offdiag (W)) ;
32    A = digraph (W) ;
33    G = GrB (W) ;
34
35    E0 = incidence (A) ;
36    E1 = GrB.incidence (G) ;
37    % E0 and E1 are the same, except the columns are in different orders
38    E0 = sortrows (E0')' ;
39    E1 = double (E1) ;
40    E1 = sortrows (E1')' ;
41    assert (isequal (E0, E1)) ;
42
43    E1 = GrB.incidence (G, 'int8') ;
44    assert (isequal (GrB.type (E1), 'int8')) ;
45    E1 = double (E1) ;
46    E1 = sortrows (E1')' ;
47    assert (isequal (E0, E1)) ;
48
49    W = W+W' ;
50    A = graph (W) ;
51    G = GrB (W) ;
52
53    E0 = incidence (A) ;
54    E1 = GrB.incidence (G, 'upper') ;
55    E0 = sortrows (E0')' ;
56    E1 = double (E1) ;
57    E1 = sortrows (E1')' ;
58    assert (isequal (E0, E1)) ;
59
60    E1 = GrB.incidence (G, 'lower') ;
61    E1 = -E1 ;
62    E1 = double (E1) ;
63    E1 = sortrows (E1')' ;
64    assert (isequal (E0, E1)) ;
65
66end
67
68fprintf ('gbtest63: all tests passed\n') ;
69
70