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