1function test99
2%TEST99 test GB_mex_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
7rng ('default') ;
8
9fprintf ('test99: GB_mex_transpose with explicit zeros in the Mask\n') ;
10
11masks = { '', 'complement', 'structural', 'structural complement' } ;
12repls = { '', 'replace' } ;
13
14for n = 10:20
15    for d = 0:.1:1
16        fprintf ('.') ;
17        for k = 1:10
18
19            C = sprand (n, n, 0.1) ;
20            A = sprand (n, n, 0.1) ;
21            if (d == 1)
22                Mask = sparse (rand (n)) ;
23            else
24                Mask = sprand (n, n, d) ;
25            end
26            if (nnz (Mask) > 0)
27                [i j x] = find (Mask) ;
28                nz = length (x) ;
29                p = randperm (nz, floor(nz/2)) ;
30                x (p) = 0 ;
31                i = uint64 (i-1) ;
32                j = uint64 (j-1) ;
33                Mask = GB_mex_Matrix_build (i,j,x,n,n,[]) ;
34                Mask = Mask.matrix ;
35            end
36
37            for k1 = 1:length(masks)
38                for k2 = 1:2
39
40                    clear desc
41                    desc.inp0 = 'tran' ;
42                    if (~isempty (masks {k1}))
43                        desc.mask = masks {k1} ;
44                    end
45                    if (~isempty (repls {k2}))
46                        desc.outp = repls {k2} ;
47                    end
48
49                    C2 = GB_spec_transpose (C, Mask, [], A, desc) ;
50                    C3 = GB_mex_transpose  (C, Mask, [], A, desc) ;
51                    GB_spec_compare (C2, C3) ;
52
53                    C2 = GB_spec_transpose (C, Mask, [], C, desc) ;
54                    C3 = GB_mex_transpose  (C, Mask, [], C, desc) ;
55                    GB_spec_compare (C2, C3) ;
56
57                end
58            end
59        end
60    end
61end
62
63fprintf ('\ntest99: all tests passed\n') ;
64
65