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

« back to all changes in this revision

Viewing changes to CCOLAMD/MATLAB/ccolamd.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
function [p, stats] = ccolamd (S, knobs, cmember)                           %#ok
 
2
%CCOLAMD constrained column approximate minimum degree permutation.
 
3
%    p = CCOLAMD(S) returns the column approximate minimum degree permutation
 
4
%    vector for the sparse matrix S.  For a non-symmetric matrix S, S(:,p)
 
5
%    tends to have sparser LU factors than S.  chol(S(:,p)'*S(:,p)) also tends
 
6
%    to be sparser than chol(S'*S).  p=ccolamd(S,1) optimizes the ordering for
 
7
%    lu(S(:,p)).  The ordering is followed by a column elimination tree post-
 
8
%    ordering.
 
9
%
 
10
%    Example:
 
11
%            p = ccolamd (S)
 
12
%            p = ccolamd (S,knobs,cmember)
 
13
%
 
14
%    knobs is an optional one- to five-element input vector, with a default
 
15
%    value of [0 10 10 1 0] if not present or empty ([ ]).  Entries not present
 
16
%    are set to their defaults.
 
17
%
 
18
%    knobs(1): if nonzero, the ordering is optimized for lu(S(:,p)).  It will
 
19
%       be a poor ordering for chol(S(:,p)'*S(:,p)).  This is the most
 
20
%       important knob for ccolamd.
 
21
%    knobs(2): if S is m-by-n, rows with more than max(16,knobs(2)*sqrt(n))
 
22
%       entries are ignored.
 
23
%    knobs(3): columns with more than max(16,knobs(3)*sqrt(min(m,n))) entries
 
24
%       are ignored and ordered last in the output permutation (subject to the
 
25
%       cmember constraints).
 
26
%    knobs(4): if nonzero, aggressive absorption is performed.
 
27
%    knobs(5): if nonzero, statistics and knobs are printed.
 
28
%
 
29
%    cmember is an optional vector of length n.  It defines the constraints on
 
30
%    the column ordering.  If cmember(j)=s, then column j is in constraint set
 
31
%    s (s must be in the range 1 to n).  In the output permutation p, all
 
32
%    columns in set 1 appear first, followed by all columns in set 2, and so
 
33
%    on.  cmember=ones(1,n) if not present or empty.  ccolamd(S,[],1:n) returns
 
34
%    1:n.
 
35
%
 
36
%    p = ccolamd(S) is about the same as p = colamd(S).  knobs and its default
 
37
%    values differ.  colamd always does aggressive absorption, and it finds an
 
38
%    ordering suitable for both lu(S(:,p)) and chol(S(:,p)'*S(:,p)); it cannot
 
39
%    optimize its ordering for lu(S(:,p)) to the extent that ccolamd(S,1) can.
 
40
%
 
41
%    See also AMD, CSYMAMD, COLAMD, SYMAMD, SYMRCM.
 
42
 
 
43
% Copyright 1998-2007, Timothy A. Davis, Stefan Larimore, and Siva Rajamanickam
 
44
% Developed in collaboration with J. Gilbert and E. Ng.
 
45
% Supported by the National Science Foundation (DMS-9504974, DMS-9803599,
 
46
% CCR-0203270), and a grant from Sandia National Lab.
 
47
 
 
48
error ('ccolamd: mexFunction not found') ;