1function test100
2%TEST100 test GB_mex_isequal
3
4% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved.
5% SPDX-License-Identifier: Apache-2.0
6
7[~, ~, ~, types, ~, ~] = GB_spec_opsall ;
8types = types.all ;
9
10rng ('default') ;
11
12fprintf ('\ntest100: GB_mex_isequal\n') ;
13
14n = 5 ;
15m = 6 ;
16
17B = sprand (n, n, 0.1) ;
18A = sprand (n, n, 0.1) ;
19
20r0 = isequal (A, B) ;
21r1 = GB_mex_isequal (A, B) ;
22assert (r0 == r1)
23
24B = sprand (n, n, 0.1) ;
25A = sprand (m, n, 0.1) ;
26
27r0 = isequal (A, B) ;
28r1 = GB_mex_isequal (A, B) ;
29assert (r0 == r1)
30
31r0 = isequal (A, A) ;
32r1 = GB_mex_isequal (A, A) ;
33assert (r0 == r1)
34
35A = sprand (5, 5, 0.1) ;
36A = A+A' ;
37r0 = isequal (A, A') ;
38r1 = GB_mex_isequal (A, A') ;
39assert (r0 == r1)
40
41for k = [false true]
42    fprintf ('\nbuiltin_complex: %d ', k) ;
43    GB_builtin_complex_set (k) ;
44
45    % complex case:
46    A = sprand (5, 5, 0.1) + 1i * sprand (5, 5, 0.1) ;
47    B = sprand (5, 5, 0.1) + 1i * sprand (5, 5, 0.1) ;
48    r0 = isequal (A, B) ;
49    r1 = GB_mex_isequal (A, B) ;
50    assert (r0 == r1)
51
52    r0 = isequal (A, A) ;
53    r1 = GB_mex_isequal (A, A) ;
54    assert (r0 == r1)
55
56    A = A+A.' ;
57    r0 = isequal (A, A.') ;
58    r1 = GB_mex_isequal (A, A.') ;
59    assert (r0 == r1)
60
61    density = 0.5 ;
62    scale = 100 ;
63    ntypes = length (types) ;
64
65    for k1 = 1:ntypes
66        atype = types {k1} ;
67        fprintf ('.') ;
68        for am = [1 5]
69            for an = [1 5]
70                A = GB_spec_random (am,an,density,100,atype) ;
71
72                r0 = isequal (A, A) ;
73                r1 = GB_mex_isequal (A, A) ;
74                assert (r0 == r1)
75
76                Amat = GB_mex_cast (full (A.matrix), atype) ;
77
78                for k2 = 1:ntypes
79                    bclas = types {k2} ;
80                    for bm = [1 5]
81                        for bn = [1 5]
82
83                            B = GB_spec_random (bm,bn,density,100,bclas) ;
84
85                            % r0 = isequal (A, B) ;
86                            Bmat = GB_mex_cast (full (B.matrix), bclas) ;
87                            r0 = isequal (Amat, Bmat) & ...
88                                isequal (atype, bclas) & ...
89                                    isequal (A.pattern, B.pattern) ;
90
91                            r1 = GB_mex_isequal (A, B) ;
92                            assert (r0 == r1)
93
94                        end
95                    end
96                end
97            end
98        end
99    end
100end
101
102fprintf ('\ntest100: all tests passed\n') ;
103
104