1function gbtest50
2%GBTEST50 test GrB.ktruss and GrB.tricount
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
9load west0479 ; %#ok<*LOAD>
10A = GrB.offdiag (west0479) ;
11A = A+A' ;
12C3a  = GrB.ktruss (A) ;
13C3  = GrB.ktruss (A, 3) ;
14assert (isequal (C3a, C3)) ;
15C3  = GrB.ktruss (A, 3, 'check') ;
16assert (isequal (C3a, C3)) ;
17
18ntriangles = sum (C3, 'all') / 6 ;
19
20C4a = GrB.ktruss (A, 4) ;
21C4b = GrB.ktruss (C3, 4) ;          % this is faster
22assert (isequal (C4a, C4b)) ;
23
24nt2 = GrB.tricount (A) ;
25assert (ntriangles == nt2) ;
26assert (ntriangles == 235) ;
27
28d = GrB.entries (A, 'col', 'degree') ;
29nt2 = GrB.tricount (A, d) ;
30assert (ntriangles == nt2) ;
31assert (ntriangles == 235) ;
32
33nt2 = GrB.tricount (A, 'check', d) ;
34assert (ntriangles == nt2) ;
35assert (ntriangles == 235) ;
36
37nt2 = GrB.tricount (A, d, 'check') ;
38assert (ntriangles == nt2) ;
39assert (ntriangles == 235) ;
40
41rng ('default') ;
42for k = 1:200
43    if (mod (k, 10) == 1)
44        fprintf ('.') ;
45    end
46    n = 10000 ;
47    G = GrB.eye (10000) ;
48    j = randperm (n, 10) ;
49    G (:,j) = 1 ;
50    G (j,:) = 1 ;
51    nt = GrB.tricount (G) ; %#ok<NASGU>
52end
53
54fprintf ('\ngbtest50: all tests passed\n') ;
55
56