1function gbtest61 2%GBTEST61 test GrB.laplacian 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') ; 8n = 10 ; 9A = sprand (n, n, 0.4) ; 10 11S = tril (A, -1) ; 12S = S+S' ; 13G = GrB (S) ; 14 15L0 = laplacian (graph (S, 'OmitSelfLoops')) ; 16 17% GrB.laplacian places explicit zeros on the diagonal 18L1 = GrB.laplacian (S) ; 19L2 = GrB.laplacian (G) ; 20L3 = GrB.laplacian (G, 'double', 'check') ; 21 22assert (norm (L0-L1,1) == 0) ; 23assert (isequal (GrB.offdiag (L0), GrB.offdiag (L1))) ; 24assert (isequal (L0, double (L1))) ; 25 26assert (isequal (L1, L2)) ; 27assert (isequal (L1, L3)) ; 28 29G = GrB (G, 'by row') ; 30 31L2 = GrB.laplacian (G) ; 32L3 = GrB.laplacian (G, 'double', 'check') ; 33 34assert (norm (L0-L2,1) == 0) ; 35assert (isequal (GrB.offdiag (L0), GrB.offdiag (L2))) ; 36assert (isequal (L2, L3)) ; 37 38types = { 'double', 'single', 'int8', 'int16', 'int32', 'int64' } ; 39for k = 1:6 40 type = types {k} ; 41 L2 = GrB.laplacian (G, type) ; 42 assert (isequal (GrB.type (L2), type)) ; 43 assert (isequal (L0, double (L2))) ; 44end 45 46 47fprintf ('gbtest61: all tests passed\n') ; 48 49