1function test9
2%TEST9 test metis, etree, bisect, nesdis
3% Example:
4%   test9
5% See also cholmod_test
6
7% Copyright 2007, Timothy A. Davis, http://www.suitesparse.com
8
9fprintf ('=================================================================\n');
10fprintf ('test9: test metis, etree, bisect, nesdis\n') ;
11
12% Prob = ssget ('LPnetlib/lp_qap15') ;
13Prob = ssget ('HB/bcsstk15')						    %#ok
14A = Prob.A ;
15C = A'*A ;
16R = A*A' ;
17
18fprintf ('\nmetis:\n') ;
19tic ; p0 = metis (R) ; toc						    %#ok
20% [pa po] = etree2 (R (p0,p0)) ; sparse (po - (1:size(R,1)))
21
22tic ; p1 = metis (C) ; toc						    %#ok
23% [pa po] = etree2 (C (p1,p1)) ; sparse (po - (1:size(C,1)))
24
25tic ; p2 = metis (C, 'sym') ; toc					    %#ok
26% [pa po] = etree2 (C (p1,p1)) ; sparse (po - (1:size(C,1)))
27
28tic ; p3 = metis (A, 'row') ; toc					    %#ok
29% [pa po] = etree2 (A (p1,:), 'row') ; sparse (po - (1:size(A,1)))
30
31tic ; p4 = metis (A, 'col') ; toc					    %#ok
32% [pa po] = etree2 (A (:,p1), 'col') ; sparse (po - (1:size(A,2)))
33
34fprintf ('\nmetis(A):\n') ;
35[m n] = size(A) ;
36if (m == n)
37    if (nnz (A-A') == 0)
38	tic ; p5 = metis (A) ; toc
39	% spy (A (p5,p5)) ;
40	[ignore q] = etree (A(p5,p5)) ;
41	p5post = p5 (q) ;						    %#ok
42	% spy (A (p5post,p5post)) ;
43	lnz0 = sum (symbfact (A (p5,p5)))				    %#ok
44    end
45end
46
47fprintf ('\namd:\n') ;
48if (m == n)
49    if (nnz (A-A') == 0)
50	tic ; z0 = amd2 (A) ; toc					    %#ok
51	lnz = sum (symbfact (A (z0,z0)))				    %#ok
52    end
53end
54
55fprintf ('\nbisect:\n') ;
56tic ; s0 = bisect (R) ; toc						    %#ok
57tic ; s1 = bisect (C) ; toc						    %#ok
58tic ; s2 = bisect (C, 'sym') ; toc					    %#ok
59tic ; s3 = bisect (A, 'row') ; toc					    %#ok
60tic ; s4 = bisect (A, 'col') ; toc					    %#ok
61
62
63fprintf ('\nnested dissection:\n') ;
64tic ; [c0 cp0 cmem0] = nesdis (R) ; toc					    %#ok
65tic ; [c1 cp1 cmem1] = nesdis (C) ; toc					    %#ok
66tic ; [c2 cp2 cmem2] = nesdis (C, 'sym') ; toc				    %#ok
67tic ; [c3 cp3 cmem3] = nesdis (A, 'row') ; toc				    %#ok
68tic ; [c4 cp4 cmem4] = nesdis (A, 'col') ; toc				    %#ok
69
70fprintf ('\nnested_dissection(A):\n') ;
71if (m == n)
72    if (nnz (A-A') == 0)
73	tic ; c5 = nesdis (A) ; toc					    %#ok
74	lnz1 = sum (symbfact (A (c5,c5)))				    %#ok
75    end
76end
77
78fprintf ('test9 passed\n') ;
79