1function gbtest37 2%GBTEST37 test istril, istriu, isbanded, isdiag, ishermitian, ... 3% issymmetric, bandwith 4 5% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved. 6% SPDX-License-Identifier: GPL-3.0-or-later 7 8rng ('default') ; 9nmax = 5 ; 10for trial = 1:10 11 fprintf ('.') ; 12 13 for m = 1:nmax 14 for n = 1:nmax 15 A = sprand (m, n, 0.5) ; 16 17 if (m == n) 18 if (mod (trial, 10) == 1) 19 % make A symmetric 20 A = A + A' ; 21 elseif (mod (trial, 10) == 2) 22 % make A skew symmetric 23 A = A - A' ; 24 end 25 end 26 27 if (m == n) 28 C = A+A' ; 29 else 30 C = A*A' ; 31 end 32 33 if (rand < 0.1) 34 A = logical (A) ; 35 C = logical (C) ; 36 end 37 38 L = tril (A) ; 39 U = triu (A) ; 40 D = diag (diag (A)) ; 41 42 GA = GrB (A) ; 43 GL = tril (GA) ; 44 GU = triu (GA) ; 45 GD = diag (diag (GA)) ; 46 if (m == n) 47 GC = GrB.prune (GA + GA') ; 48 else 49 GC = GrB.prune (GA * GA') ; 50 end 51 52 assert (gbtest_eq (A, GA)) ; 53 assert (gbtest_eq (L, GL)) ; 54 assert (gbtest_eq (U, GU)) ; 55 assert (gbtest_eq (D, GD)) ; 56 assert (gbtest_eq (C, GC)) ; 57 58 if (~islogical (A)) 59 % MATLAB istril, istriu, and isdiag 60 % are not defined when A is logical. 61 assert (istril (A) == istril (GA)) ; 62 assert (istril (L) == istril (GL)) ; 63 assert (istril (U) == istril (GU)) ; 64 assert (istril (D) == istril (GD)) ; 65 assert (istril (C) == istril (GC)) ; 66 67 assert (istriu (A) == istriu (GA)) ; 68 assert (istriu (L) == istriu (GL)) ; 69 assert (istriu (U) == istriu (GU)) ; 70 assert (istriu (D) == istriu (GD)) ; 71 assert (istriu (C) == istriu (GC)) ; 72 73 assert (isdiag (A) == isdiag (GA)) ; 74 assert (isdiag (L) == isdiag (GL)) ; 75 assert (isdiag (U) == isdiag (GU)) ; 76 assert (isdiag (D) == isdiag (GD)) ; 77 assert (isdiag (C) == isdiag (GC)) ; 78 end 79 80 assert (ishermitian (A) == ishermitian (GA)) ; 81 assert (ishermitian (L) == ishermitian (GL)) ; 82 assert (ishermitian (U) == ishermitian (GU)) ; 83 assert (ishermitian (D) == ishermitian (GD)) ; 84 assert (ishermitian (C) == ishermitian (GC)) ; 85 86 assert (ishermitian (A, 'skew') == ishermitian (GA, 'skew')) ; 87 88 assert (issymmetric (A) == issymmetric (GA)) ; 89 assert (issymmetric (L) == issymmetric (GL)) ; 90 assert (issymmetric (U) == issymmetric (GU)) ; 91 assert (issymmetric (D) == issymmetric (GD)) ; 92 assert (issymmetric (C) == issymmetric (GC)) ; 93 94 assert (issymmetric (A, 'skew') == issymmetric (GA, 'skew')) ; 95 96 if (~islogical (A)) 97 assert (isequal (bandwidth (A), bandwidth (GA))) ; 98 assert (isequal (bandwidth (L), bandwidth (GL))) ; 99 assert (isequal (bandwidth (U), bandwidth (GU))) ; 100 assert (isequal (bandwidth (D), bandwidth (GD))) ; 101 assert (isequal (bandwidth (C), bandwidth (GC))) ; 102 103 assert (bandwidth (A, 'lower') == bandwidth (GA, 'lower')) ; 104 assert (bandwidth (L, 'lower') == bandwidth (GL, 'lower')) ; 105 assert (bandwidth (U, 'lower') == bandwidth (GU, 'lower')) ; 106 assert (bandwidth (D, 'lower') == bandwidth (GD, 'lower')) ; 107 assert (bandwidth (C, 'lower') == bandwidth (GC, 'lower')) ; 108 109 assert (bandwidth (A, 'upper') == bandwidth (GA, 'upper')) ; 110 assert (bandwidth (L, 'upper') == bandwidth (GL, 'upper')) ; 111 assert (bandwidth (U, 'upper') == bandwidth (GU, 'upper')) ; 112 assert (bandwidth (D, 'upper') == bandwidth (GD, 'upper')) ; 113 assert (bandwidth (C, 'upper') == bandwidth (GC, 'upper')) ; 114 115 for lo = 0:nmax 116 for hi = 0:nmax 117 assert (isbanded (A, lo, hi) == isbanded (GA, lo, hi)) ; 118 assert (isbanded (L, lo, hi) == isbanded (GL, lo, hi)) ; 119 assert (isbanded (U, lo, hi) == isbanded (GU, lo, hi)) ; 120 assert (isbanded (D, lo, hi) == isbanded (GD, lo, hi)) ; 121 end 122 end 123 end 124 end 125 end 126end 127 128fprintf ('\ngbtest37: all tests passed\n') ; 129 130