1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
function test231
%TEST231 test GrB_select with idxunp
% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2022, All Rights Reserved.
% SPDX-License-Identifier: Apache-2.0
[~, ~, ~, types, ~, ~, idxunops] = GB_spec_opsall ;
ops = idxunops ;
types = types.all ;
fprintf ('\n--- testing select with idxunops\n') ;
rng ('default') ;
desc.inp0 = 'tran' ;
n_operators = 0 ;
for k2 = 1:length(ops)
opname = ops {k2} ;
fprintf ('\n%-10s ', opname) ;
for k1 = 1:length (types)
type = types {k1} ;
% create the op
clear op
op.opname = opname ;
op.optype = type ;
[is_idxunop, ztype] = GB_spec_is_idxunop (opname, type) ;
if (~is_idxunop)
continue ;
end
n_operators = n_operators + 1 ;
for m = [1 4] % [ 1 10 ]% 100]
for n = [1 4] % [1 10 ]% 100]
for hi = [1 5] % [-1:2:5 ]
for lo = [-1 0] % [-3:2:5 ]
Amat = (hi*sprand (m,n,0.8)-lo) .* sprand (m,n,0.5) ;
Cmat = sparse (m, n) ;
fprintf ('.') ;
C.matrix = Cmat ;
C.class = ztype ;
CT.matrix = Cmat' ;
CT.class = ztype ;
A.matrix = Amat ;
A.class = type ;
B.matrix = spones (Amat) ;
B.class = type ;
B.iso = true ;
for ythunk = -3:3
y.matrix = ythunk ;
y.class = type ;
for how = 0:1
for csc = 0:1
A.is_csc = csc ;
C.is_csc = csc ;
CT.is_csc = csc ;
for sparsity = [1 2 4]
A.sparsity = sparsity ;
C1 = GB_mex_select_idxunop (C, [ ], [ ], op, how, A, y, [ ]) ;
C2 = GB_spec_select_idxunop (C, [ ], [ ], op, A, y, [ ]) ;
GB_spec_compare (C1, C2) ;
C1 = GB_mex_select_idxunop (C, [ ], [ ], op, how, B, y, [ ]) ;
C2 = GB_spec_select_idxunop (C, [ ], [ ], op, B, y, [ ]) ;
GB_spec_compare (C1, C2) ;
C1 = GB_mex_select_idxunop (CT, [ ], [ ], op, how, A, y, desc) ;
C2 = GB_spec_select_idxunop (CT, [ ], [ ], op, A, y, desc) ;
GB_spec_compare (C1, C2) ;
end
end
end
end
end
end
end
end
end
end
fprintf ('\nNumber of built-in GraphBLAS idxunops: %d\n', n_operators) ;
fprintf ('\ntest231: all tests passed\n') ;
|