~logan/ubuntu/trusty/suitesparse/4.2.1-3ubuntu1

« back to all changes in this revision

Viewing changes to BTF/MATLAB/Test/test2.m

  • Committer: Bazaar Package Importer
  • Author(s): Christophe Prud'homme
  • Date: 2007-05-29 09:36:29 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20070529093629-zowquo0b7slkk6nc
Tags: 3.0.0-2
* suitesparse builds properly twice in a row
* Bug fix: "suitesparse - FTBFS: Broken build depens: libgfortran1-dev",
  thanks to Bastian Blank (Closes: #426349).
* Bug fix: "suitesparse_3.0.0-1: FTBFS: build-depends on
  libgfortran1-dev", thanks to Steve Langasek (Closes: #426354).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
%TEST2 test script for BTF
 
2
% Requires CSparse and UFget
 
3
% Example:
 
4
%   test2
 
5
% See also btf, maxtrans, strongcomp, dmperm, UFget,
 
6
%   test1, test2, test3, test4, test5.
 
7
 
 
8
% Copyright 2007, Timothy A. Davis, University of Florida
 
9
 
 
10
index = UFget ;
 
11
f = find (index.nrows == index.ncols) ;
 
12
 
 
13
% too much time:
 
14
skip = 1514 ;
 
15
f = setdiff (f, skip) ;
 
16
 
 
17
[ignore i] = sort (index.nnz (f)) ;
 
18
f = f (i) ;
 
19
nmat = length (f) ;
 
20
 
 
21
T0 = zeros (nmat,1) ;
 
22
T1 = zeros (nmat,1) ;
 
23
Anz = zeros (nmat,1) ;
 
24
figure (1) ;
 
25
clf
 
26
MN = zeros (nmat, 2) ;
 
27
Nzdiag = zeros (nmat,1) ;
 
28
 
 
29
% warmup
 
30
p = maxtrans (sparse (1)) ;             %#ok
 
31
p = btf (sparse (1)) ;                  %#ok
 
32
p = cs_dmperm (sparse (1)) ;            %#ok
 
33
a = cs_transpose (sparse (1)) ;         %#ok
 
34
 
 
35
for k = 1:nmat
 
36
 
 
37
    Prob = UFget (f (k)) ;
 
38
    A = Prob.A ;
 
39
 
 
40
    Nzdiag (k) = nnz (diag (A)) ;
 
41
 
 
42
    [m n] = size (A) ;
 
43
    Anz (k) = nnz (A) ;
 
44
    MN (k,:) = [m n] ;
 
45
 
 
46
    tic
 
47
    [p,q,r] = btf (A) ;
 
48
    t0 = toc ;
 
49
    s0 = sum (q > 0) ;
 
50
    T0 (k) = max (1e-9, t0) ;
 
51
 
 
52
    tic
 
53
    [p2,q2,r2] = cs_dmperm (A) ;
 
54
    t1 = toc ;
 
55
    s1 = sum (dmperm (A) > 0) ;
 
56
    T1 (k) = max (1e-9, t1) ;
 
57
 
 
58
    fprintf (...
 
59
    '%4d btf %10.6f cs_dmperm %10.6f rel: %8.4f\n', ...
 
60
        f(k), t0, t1, t0 / t1) ;
 
61
 
 
62
    if (s0 ~= s1)
 
63
        error ('!') ;
 
64
    end
 
65
 
 
66
    C = A (p, abs (q)) ;
 
67
    subplot (1,2,1) ;
 
68
    cspy (C) ;
 
69
    z = find (q < 0) ;
 
70
    zd = nnz (diag (C (z,z))) ;
 
71
    if (zd > 0)
 
72
        error ('?') ;
 
73
    end
 
74
 
 
75
    minnz = Anz (1) ;
 
76
    maxnz = nnz (A) ;
 
77
 
 
78
    subplot (1,2,2) ;
 
79
    loglog (Anz (1:k), T0 (1:k) ./ T1 (1:k), ...
 
80
        'o', [minnz maxnz], [1 1], 'r-') ;
 
81
    drawnow
 
82
 
 
83
    clear C A Prob
 
84
end
 
85
 
 
86