1function test181
2%TEST181 test transpose with explicit zeros in the Mask
3
4% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved.
5% SPDX-License-Identifier: Apache-2.0
6
7% see also test99
8
9rng ('default') ;
10
11fprintf ('test181: transpose with explicit zeros in the Mask\n') ;
12
13masks = { '', 'complement', 'structural', 'structural complement' } ;
14repls = { '', 'replace' } ;
15
16for n = 10:20
17    for d = 0:.1:1
18        fprintf ('.') ;
19        for k = 1:10
20
21            C = sprand (n, n, 0.1) ;
22            A = GB_spec_random (n, n, 0.1) ;
23            A.sparsity = 4 ;
24            if (d == 1)
25                Mask = sparse (rand (n)) ;
26            else
27                Mask = sprand (n, n, d) ;
28            end
29            if (nnz (Mask) > 0)
30                [i j x] = find (Mask) ;
31                nz = length (x) ;
32                p = randperm (nz, floor(nz/2)) ;
33                x (p) = 0 ;
34                i = uint64 (i-1) ;
35                j = uint64 (j-1) ;
36                Mask = GB_mex_Matrix_build (i,j,x,n,n,[]) ;
37                Mask = Mask.matrix ;
38            end
39
40            for k1 = 1:length(masks)
41                for k2 = 1:2
42
43                    clear desc
44                    desc.inp0 = 'tran' ;
45                    if (~isempty (masks {k1}))
46                        desc.mask = masks {k1} ;
47                    end
48                    if (~isempty (repls {k2}))
49                        desc.outp = repls {k2} ;
50                    end
51
52                    C2 = GB_spec_transpose (C, Mask, [], A, desc) ;
53                    C3 = GB_mex_transpose  (C, Mask, [], A, desc) ;
54                    GB_spec_compare (C2, C3) ;
55
56                    C2 = GB_spec_transpose (C, Mask, [], C, desc) ;
57                    C3 = GB_mex_transpose  (C, Mask, [], C, desc) ;
58                    GB_spec_compare (C2, C3) ;
59
60                end
61            end
62        end
63    end
64end
65
66fprintf ('\ntest181: all tests passed\n') ;
67
68