1function test2 2%TEST2 test cs_sparse 3% 4% Example: 5% test2 6% See also: testall 7 8% Copyright 2006-2012, Timothy A. Davis, http://www.suitesparse.com 9 10rand ('state', 0) 11% clf 12 13for trial = 1:100 14 m = fix (10 * rand (1)) ; 15 n = fix (10 * rand (1)) ; 16 nz = fix (100 * rand (1)) ; 17 18 i = 1 + fix (m * rand (nz,1)) ; 19 j = 1 + fix (n * rand (nz,1)) ; 20 x = rand (nz,1) ; 21 22 A = sparse (i,j,x) ; 23 B = cs_sparse (i,j,x) ; 24 D = cs_sparse2 (i,j,x) ; 25 fprintf ('%3d %3d %6d : %6d %6d : %d\n', ... 26 m, n, nz, nnz (A), nnz(B), nz-nnz(A)) ; 27 28 err = norm (A-B,1) / norm (A,1) ; 29 if (err > 0) 30 disp ('err = ') ; 31 disp (err) ; 32 end 33 if (err > 1e-14) 34 error ('!') ; 35 end 36 37 if (nnz (B-D) > 0) 38 error ('!') ; 39 end 40 41 if (nnz (A) ~= nnz (B)) 42 error ('nz!') ; 43 end 44 45 if (max (1,nnz (B)) ~= max (1,nzmax (B))) 46 nnz (B) 47 nzmax (B) 48 error ('nzmax!') ; 49 end 50 % pack 51 52 53 [m n] = size (A) ; 54 p = randperm (m) ; 55 q = randperm (n) ; 56 C1 = A (p,q) ; 57 C2 = cs_permute (A,p,q) ; 58 err = norm (C1-C2,1) ; 59 if (err > 0) 60 error ('!') ; 61 end 62 63% subplot (1,2,1) ; spy (A) 64% subplot (1,2,2) ; spy (C2) 65% drawnow 66 67 x = rand (m,1) ; 68 x1 = x (p) ; 69 x2 = cs_pvec (x, p) ; 70 71 err = norm (x1-x2,1) ; 72 if (err > 0) 73 error ('!') ; 74 end 75 76 x1 = zeros (m,1) ; 77 x1 (p) = x ; %#ok 78 x2 = cs_ipvec (x, p) ; %#ok 79 80 n = min (m,n) ; 81 B = A (1:n, 1:n) ; 82 p = randperm (n) ; 83 B = B+B' ; 84 85 C1 = triu (B (p,p)) ; 86 C2 = cs_symperm (B,p) ; 87 88 try 89 pp = amd (C2) ; %#ok 90 catch 91 pp = symamd (C2) ; %#ok 92 end 93 94 err = norm (C1-C2,1) ; 95 if (err > 0) 96 error ('!') ; 97 end 98 99 100 101end 102