|
kusano |
7d535a |
|
|
kusano |
7d535a |
<meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
|
|
kusano |
7d535a |
<title>SuperLU: SRC/colamd.c File Reference</title>
|
|
kusano |
7d535a |
<link href="doxygen.css" rel="stylesheet" type="text/css">
|
|
kusano |
7d535a |
<link href="tabs.css" rel="stylesheet" type="text/css">
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
Main Page
|
|
kusano |
7d535a |
Data Structures
|
|
kusano |
7d535a |
Files
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
SRC/colamd.c File ReferenceA sparse matrix column ordering algorithm. More...
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#include "colamd.h"
|
|
kusano |
7d535a |
#include <limits.h>
|
|
kusano |
7d535a |
#include <stdio.h>
|
|
kusano |
7d535a |
#include <assert.h>
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
Defines
|
|
kusano |
7d535a |
#define PUBLIC
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define PRIVATE static
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define ONES_COMPLEMENT(r) (-(r)-1)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define TRUE (1)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define FALSE (0)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define EMPTY (-1)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define ALIVE (0)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define DEAD (-1)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define DEAD_PRINCIPAL (-1)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define DEAD_NON_PRINCIPAL (-2)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define ROW_IS_DEAD(r) ROW_IS_MARKED_DEAD (Row[r].shared2.mark)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define ROW_IS_MARKED_DEAD(row_mark) (row_mark < ALIVE)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define ROW_IS_ALIVE(r) (Row [r].shared2.mark >= ALIVE)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define COL_IS_DEAD(c) (Col [c].start < ALIVE)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define COL_IS_ALIVE(c) (Col [c].start >= ALIVE)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define COL_IS_DEAD_PRINCIPAL(c) (Col [c].start == DEAD_PRINCIPAL)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define KILL_ROW(r) { Row [r].shared2.mark = DEAD ; }
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define KILL_PRINCIPAL_COL(c) { Col [c].start = DEAD_PRINCIPAL ; }
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define KILL_NON_PRINCIPAL_COL(c) { Col [c].start = DEAD_NON_PRINCIPAL ; }
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define PRINTF printf
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define INDEX(i) (i)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define DEBUG0(params) ;
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define DEBUG1(params) ;
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define DEBUG2(params) ;
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define DEBUG3(params) ;
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define DEBUG4(params) ;
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define ASSERT(expression) ((void) 0)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
Functions
|
|
kusano |
7d535a |
PRIVATE int init_rows_cols (int n_row, int n_col, Colamd_Row Row[], Colamd_Col Col[], int A[], int p[], int stats[COLAMD_STATS])
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PRIVATE void init_scoring (int n_row, int n_col, Colamd_Row Row[], Colamd_Col Col[], int A[], int head[], double knobs[COLAMD_KNOBS], int *p_n_row2, int *p_n_col2, int *p_max_deg)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PRIVATE int find_ordering (int n_row, int n_col, int Alen, Colamd_Row Row[], Colamd_Col Col[], int A[], int head[], int n_col2, int max_deg, int pfree)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PRIVATE void order_children (int n_col, Colamd_Col Col[], int p[])
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PRIVATE void detect_super_cols (Colamd_Col Col[], int A[], int head[], int row_start, int row_length)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PRIVATE int garbage_collection (int n_row, int n_col, Colamd_Row Row[], Colamd_Col Col[], int A[], int *pfree)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PRIVATE int clear_mark (int n_row, Colamd_Row Row[])
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PRIVATE void print_report (char *method, int stats[COLAMD_STATS])
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PUBLIC int colamd_recommended (int nnz, int n_row, int n_col)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PUBLIC void colamd_set_defaults (double knobs[COLAMD_KNOBS])
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PUBLIC int symamd (int n, int A[], int p[], int perm[], double knobs[COLAMD_KNOBS], int stats[COLAMD_STATS], void *(*allocate)(size_t, size_t), void(*release)(void *))
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PUBLIC int colamd (int n_row, int n_col, int Alen, int A[], int p[], double knobs[COLAMD_KNOBS], int stats[COLAMD_STATS])
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PUBLIC void colamd_report (int stats[COLAMD_STATS])
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PUBLIC void symamd_report (int stats[COLAMD_STATS])
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
Detailed Description
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
==========================================================================
|
|
kusano |
7d535a |
=== colamd/symamd - a sparse matrix column ordering algorithm ============
|
|
kusano |
7d535a |
==========================================================================
|
|
kusano |
7d535a |
colamd: an approximate minimum degree column ordering algorithm,
|
|
kusano |
7d535a |
for LU factorization of symmetric or unsymmetric matrices,
|
|
kusano |
7d535a |
QR factorization, least squares, interior point methods for
|
|
kusano |
7d535a |
linear programming problems, and other related problems.
|
|
kusano |
7d535a |
symamd: an approximate minimum degree ordering algorithm for Cholesky
|
|
kusano |
7d535a |
factorization of symmetric matrices.
|
|
kusano |
7d535a |
Purpose:
|
|
kusano |
7d535a |
Colamd computes a permutation Q such that the Cholesky factorization of
|
|
kusano |
7d535a |
(AQ)'(AQ) has less fill-in and requires fewer floating point operations
|
|
kusano |
7d535a |
than A'A. This also provides a good ordering for sparse partial
|
|
kusano |
7d535a |
pivoting methods, P(AQ) = LU, where Q is computed prior to numerical
|
|
kusano |
7d535a |
factorization, and P is computed during numerical factorization via
|
|
kusano |
7d535a |
conventional partial pivoting with row interchanges. Colamd is the
|
|
kusano |
7d535a |
column ordering method used in SuperLU, part of the ScaLAPACK library.
|
|
kusano |
7d535a |
It is also available as built-in function in MATLAB Version 6,
|
|
kusano |
7d535a |
available from MathWorks, Inc. (http://www.mathworks.com). This
|
|
kusano |
7d535a |
routine can be used in place of colmmd in MATLAB.
|
|
kusano |
7d535a |
Symamd computes a permutation P of a symmetric matrix A such that the
|
|
kusano |
7d535a |
Cholesky factorization of PAP' has less fill-in and requires fewer
|
|
kusano |
7d535a |
floating point operations than A. Symamd constructs a matrix M such
|
|
kusano |
7d535a |
that M'M has the same nonzero pattern of A, and then orders the columns
|
|
kusano |
7d535a |
of M using colmmd. The column ordering of M is then returned as the
|
|
kusano |
7d535a |
row and column ordering P of A.
|
|
kusano |
7d535a |
Authors:
|
|
kusano |
7d535a |
The authors of the code itself are Stefan I. Larimore and Timothy A.
|
|
kusano |
7d535a |
Davis (davis@cise.ufl.edu), University of Florida. The algorithm was
|
|
kusano |
7d535a |
developed in collaboration with John Gilbert, Xerox PARC, and Esmond
|
|
kusano |
7d535a |
Ng, Oak Ridge National Laboratory.
|
|
kusano |
7d535a |
Date:
|
|
kusano |
7d535a |
September 8, 2003. Version 2.3.
|
|
kusano |
7d535a |
Acknowledgements:
|
|
kusano |
7d535a |
This work was supported by the National Science Foundation, under
|
|
kusano |
7d535a |
grants DMS-9504974 and DMS-9803599.
|
|
kusano |
7d535a |
Copyright and License:
|
|
kusano |
7d535a |
Copyright (c) 1998-2003 by the University of Florida.
|
|
kusano |
7d535a |
All Rights Reserved.
|
|
kusano |
7d535a |
THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY
|
|
kusano |
7d535a |
EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
|
|
kusano |
7d535a |
Permission is hereby granted to use, copy, modify, and/or distribute
|
|
kusano |
7d535a |
this program, provided that the Copyright, this License, and the
|
|
kusano |
7d535a |
Availability of the original version is retained on all copies and made
|
|
kusano |
7d535a |
accessible to the end-user of any code or package that includes COLAMD
|
|
kusano |
7d535a |
or any modified version of COLAMD.
|
|
kusano |
7d535a |
Availability:
|
|
kusano |
7d535a |
The colamd/symamd library is available at
|
|
kusano |
7d535a |
http://www.cise.ufl.edu/research/sparse/colamd/
|
|
kusano |
7d535a |
This is the http://www.cise.ufl.edu/research/sparse/colamd/colamd.c
|
|
kusano |
7d535a |
file. It requires the colamd.h file. It is required by the colamdmex.c
|
|
kusano |
7d535a |
and symamdmex.c files, for the MATLAB interface to colamd and symamd.
|
|
kusano |
7d535a |
See the ChangeLog file for changes since Version 1.0.
|
|
kusano |
7d535a |
==========================================================================
|
|
kusano |
7d535a |
=== Description of user-callable routines ================================
|
|
kusano |
7d535a |
==========================================================================
|
|
kusano |
7d535a |
----------------------------------------------------------------------------
|
|
kusano |
7d535a |
colamd_recommended:
|
|
kusano |
7d535a |
----------------------------------------------------------------------------
|
|
kusano |
7d535a |
C syntax:
|
|
kusano |
7d535a |
include "colamd.h"
|
|
kusano |
7d535a |
int colamd_recommended (int nnz, int n_row, int n_col) ;
|
|
kusano |
7d535a |
or as a C macro
|
|
kusano |
7d535a |
include "colamd.h"
|
|
kusano |
7d535a |
Alen = COLAMD_RECOMMENDED (int nnz, int n_row, int n_col) ;
|
|
kusano |
7d535a |
Purpose:
|
|
kusano |
7d535a |
Returns recommended value of Alen for use by colamd. Returns -1
|
|
kusano |
7d535a |
if any input argument is negative. The use of this routine
|
|
kusano |
7d535a |
or macro is optional. Note that the macro uses its arguments
|
|
kusano |
7d535a |
more than once, so be careful for side effects, if you pass
|
|
kusano |
7d535a |
expressions as arguments to COLAMD_RECOMMENDED. Not needed for
|
|
kusano |
7d535a |
symamd, which dynamically allocates its own memory.
|
|
kusano |
7d535a |
Arguments (all input arguments):
|
|
kusano |
7d535a |
int nnz ; Number of nonzeros in the matrix A. This must
|
|
kusano |
7d535a |
be the same value as p [n_col] in the call to
|
|
kusano |
7d535a |
colamd - otherwise you will get a wrong value
|
|
kusano |
7d535a |
of the recommended memory to use.
|
|
kusano |
7d535a |
int n_row ; Number of rows in the matrix A.
|
|
kusano |
7d535a |
int n_col ; Number of columns in the matrix A.
|
|
kusano |
7d535a |
----------------------------------------------------------------------------
|
|
kusano |
7d535a |
colamd_set_defaults:
|
|
kusano |
7d535a |
----------------------------------------------------------------------------
|
|
kusano |
7d535a |
C syntax:
|
|
kusano |
7d535a |
include "colamd.h"
|
|
kusano |
7d535a |
colamd_set_defaults (double knobs [COLAMD_KNOBS]) ;
|
|
kusano |
7d535a |
Purpose:
|
|
kusano |
7d535a |
Sets the default parameters. The use of this routine is optional.
|
|
kusano |
7d535a |
Arguments:
|
|
kusano |
7d535a |
double knobs [COLAMD_KNOBS] ; Output only.
|
|
kusano |
7d535a |
Colamd: rows with more than (knobs [COLAMD_DENSE_ROW] * n_col)
|
|
kusano |
7d535a |
entries are removed prior to ordering. Columns with more than
|
|
kusano |
7d535a |
(knobs [COLAMD_DENSE_COL] * n_row) entries are removed prior to
|
|
kusano |
7d535a |
ordering, and placed last in the output column ordering.
|
|
kusano |
7d535a |
Symamd: uses only knobs [COLAMD_DENSE_ROW], which is knobs [0].
|
|
kusano |
7d535a |
Rows and columns with more than (knobs [COLAMD_DENSE_ROW] * n)
|
|
kusano |
7d535a |
entries are removed prior to ordering, and placed last in the
|
|
kusano |
7d535a |
output ordering.
|
|
kusano |
7d535a |
COLAMD_DENSE_ROW and COLAMD_DENSE_COL are defined as 0 and 1,
|
|
kusano |
7d535a |
respectively, in colamd.h. Default values of these two knobs
|
|
kusano |
7d535a |
are both 0.5. Currently, only knobs [0] and knobs [1] are
|
|
kusano |
7d535a |
used, but future versions may use more knobs. If so, they will
|
|
kusano |
7d535a |
be properly set to their defaults by the future version of
|
|
kusano |
7d535a |
colamd_set_defaults, so that the code that calls colamd will
|
|
kusano |
7d535a |
not need to change, assuming that you either use
|
|
kusano |
7d535a |
colamd_set_defaults, or pass a (double *) NULL pointer as the
|
|
kusano |
7d535a |
knobs array to colamd or symamd.
|
|
kusano |
7d535a |
----------------------------------------------------------------------------
|
|
kusano |
7d535a |
colamd:
|
|
kusano |
7d535a |
----------------------------------------------------------------------------
|
|
kusano |
7d535a |
C syntax:
|
|
kusano |
7d535a |
include "colamd.h"
|
|
kusano |
7d535a |
int colamd (int n_row, int n_col, int Alen, int *A, int *p,
|
|
kusano |
7d535a |
double knobs [COLAMD_KNOBS], int stats [COLAMD_STATS]) ;
|
|
kusano |
7d535a |
Purpose:
|
|
kusano |
7d535a |
Computes a column ordering (Q) of A such that P(AQ)=LU or
|
|
kusano |
7d535a |
(AQ)'AQ=LL' have less fill-in and require fewer floating point
|
|
kusano |
7d535a |
operations than factorizing the unpermuted matrix A or A'A,
|
|
kusano |
7d535a |
respectively.
|
|
kusano |
7d535a |
Returns:
|
|
kusano |
7d535a |
TRUE (1) if successful, FALSE (0) otherwise.
|
|
kusano |
7d535a |
Arguments:
|
|
kusano |
7d535a |
int n_row ; Input argument.
|
|
kusano |
7d535a |
Number of rows in the matrix A.
|
|
kusano |
7d535a |
Restriction: n_row >= 0.
|
|
kusano |
7d535a |
Colamd returns FALSE if n_row is negative.
|
|
kusano |
7d535a |
int n_col ; Input argument.
|
|
kusano |
7d535a |
Number of columns in the matrix A.
|
|
kusano |
7d535a |
Restriction: n_col >= 0.
|
|
kusano |
7d535a |
Colamd returns FALSE if n_col is negative.
|
|
kusano |
7d535a |
int Alen ; Input argument.
|
|
kusano |
7d535a |
Restriction (see note):
|
|
kusano |
7d535a |
Alen >= 2*nnz + 6*(n_col+1) + 4*(n_row+1) + n_col
|
|
kusano |
7d535a |
Colamd returns FALSE if these conditions are not met.
|
|
kusano |
7d535a |
Note: this restriction makes an modest assumption regarding
|
|
kusano |
7d535a |
the size of the two typedef's structures in colamd.h.
|
|
kusano |
7d535a |
We do, however, guarantee that
|
|
kusano |
7d535a |
Alen >= colamd_recommended (nnz, n_row, n_col)
|
|
kusano |
7d535a |
or equivalently as a C preprocessor macro:
|
|
kusano |
7d535a |
Alen >= COLAMD_RECOMMENDED (nnz, n_row, n_col)
|
|
kusano |
7d535a |
will be sufficient.
|
|
kusano |
7d535a |
int A [Alen] ; Input argument, undefined on output.
|
|
kusano |
7d535a |
A is an integer array of size Alen. Alen must be at least as
|
|
kusano |
7d535a |
large as the bare minimum value given above, but this is very
|
|
kusano |
7d535a |
low, and can result in excessive run time. For best
|
|
kusano |
7d535a |
performance, we recommend that Alen be greater than or equal to
|
|
kusano |
7d535a |
colamd_recommended (nnz, n_row, n_col), which adds
|
|
kusano |
7d535a |
nnz/5 to the bare minimum value given above.
|
|
kusano |
7d535a |
On input, the row indices of the entries in column c of the
|
|
kusano |
7d535a |
matrix are held in A [(p [c]) ... (p [c+1]-1)]. The row indices
|
|
kusano |
7d535a |
in a given column c need not be in ascending order, and
|
|
kusano |
7d535a |
duplicate row indices may be be present. However, colamd will
|
|
kusano |
7d535a |
work a little faster if both of these conditions are met
|
|
kusano |
7d535a |
(Colamd puts the matrix into this format, if it finds that the
|
|
kusano |
7d535a |
the conditions are not met).
|
|
kusano |
7d535a |
The matrix is 0-based. That is, rows are in the range 0 to
|
|
kusano |
7d535a |
n_row-1, and columns are in the range 0 to n_col-1. Colamd
|
|
kusano |
7d535a |
returns FALSE if any row index is out of range.
|
|
kusano |
7d535a |
The contents of A are modified during ordering, and are
|
|
kusano |
7d535a |
undefined on output.
|
|
kusano |
7d535a |
int p [n_col+1] ; Both input and output argument.
|
|
kusano |
7d535a |
p is an integer array of size n_col+1. On input, it holds the
|
|
kusano |
7d535a |
"pointers" for the column form of the matrix A. Column c of
|
|
kusano |
7d535a |
the matrix A is held in A [(p [c]) ... (p [c+1]-1)]. The first
|
|
kusano |
7d535a |
entry, p [0], must be zero, and p [c] <= p [c+1] must hold
|
|
kusano |
7d535a |
for all c in the range 0 to n_col-1. The value p [n_col] is
|
|
kusano |
7d535a |
thus the total number of entries in the pattern of the matrix A.
|
|
kusano |
7d535a |
Colamd returns FALSE if these conditions are not met.
|
|
kusano |
7d535a |
On output, if colamd returns TRUE, the array p holds the column
|
|
kusano |
7d535a |
permutation (Q, for P(AQ)=LU or (AQ)'(AQ)=LL'), where p [0] is
|
|
kusano |
7d535a |
the first column index in the new ordering, and p [n_col-1] is
|
|
kusano |
7d535a |
the last. That is, p [k] = j means that column j of A is the
|
|
kusano |
7d535a |
kth pivot column, in AQ, where k is in the range 0 to n_col-1
|
|
kusano |
7d535a |
(p [0] = j means that column j of A is the first column in AQ).
|
|
kusano |
7d535a |
If colamd returns FALSE, then no permutation is returned, and
|
|
kusano |
7d535a |
p is undefined on output.
|
|
kusano |
7d535a |
double knobs [COLAMD_KNOBS] ; Input argument.
|
|
kusano |
7d535a |
See colamd_set_defaults for a description.
|
|
kusano |
7d535a |
int stats [COLAMD_STATS] ; Output argument.
|
|
kusano |
7d535a |
Statistics on the ordering, and error status.
|
|
kusano |
7d535a |
See colamd.h for related definitions.
|
|
kusano |
7d535a |
Colamd returns FALSE if stats is not present.
|
|
kusano |
7d535a |
stats [0]: number of dense or empty rows ignored.
|
|
kusano |
7d535a |
stats [1]: number of dense or empty columns ignored (and
|
|
kusano |
7d535a |
ordered last in the output permutation p)
|
|
kusano |
7d535a |
Note that a row can become "empty" if it
|
|
kusano |
7d535a |
contains only "dense" and/or "empty" columns,
|
|
kusano |
7d535a |
and similarly a column can become "empty" if it
|
|
kusano |
7d535a |
only contains "dense" and/or "empty" rows.
|
|
kusano |
7d535a |
stats [2]: number of garbage collections performed.
|
|
kusano |
7d535a |
This can be excessively high if Alen is close
|
|
kusano |
7d535a |
to the minimum required value.
|
|
kusano |
7d535a |
stats [3]: status code. < 0 is an error code.
|
|
kusano |
7d535a |
> 1 is a warning or notice.
|
|
kusano |
7d535a |
0 OK. Each column of the input matrix contained
|
|
kusano |
7d535a |
row indices in increasing order, with no
|
|
kusano |
7d535a |
duplicates.
|
|
kusano |
7d535a |
1 OK, but columns of input matrix were jumbled
|
|
kusano |
7d535a |
(unsorted columns or duplicate entries). Colamd
|
|
kusano |
7d535a |
had to do some extra work to sort the matrix
|
|
kusano |
7d535a |
first and remove duplicate entries, but it
|
|
kusano |
7d535a |
still was able to return a valid permutation
|
|
kusano |
7d535a |
(return value of colamd was TRUE).
|
|
kusano |
7d535a |
stats [4]: highest numbered column that
|
|
kusano |
7d535a |
is unsorted or has duplicate
|
|
kusano |
7d535a |
entries.
|
|
kusano |
7d535a |
stats [5]: last seen duplicate or
|
|
kusano |
7d535a |
unsorted row index.
|
|
kusano |
7d535a |
stats [6]: number of duplicate or
|
|
kusano |
7d535a |
unsorted row indices.
|
|
kusano |
7d535a |
-1 A is a null pointer
|
|
kusano |
7d535a |
-2 p is a null pointer
|
|
kusano |
7d535a |
-3 n_row is negative
|
|
kusano |
7d535a |
stats [4]: n_row
|
|
kusano |
7d535a |
-4 n_col is negative
|
|
kusano |
7d535a |
stats [4]: n_col
|
|
kusano |
7d535a |
-5 number of nonzeros in matrix is negative
|
|
kusano |
7d535a |
stats [4]: number of nonzeros, p [n_col]
|
|
kusano |
7d535a |
-6 p [0] is nonzero
|
|
kusano |
7d535a |
stats [4]: p [0]
|
|
kusano |
7d535a |
-7 A is too small
|
|
kusano |
7d535a |
stats [4]: required size
|
|
kusano |
7d535a |
stats [5]: actual size (Alen)
|
|
kusano |
7d535a |
-8 a column has a negative number of entries
|
|
kusano |
7d535a |
stats [4]: column with < 0 entries
|
|
kusano |
7d535a |
stats [5]: number of entries in col
|
|
kusano |
7d535a |
-9 a row index is out of bounds
|
|
kusano |
7d535a |
stats [4]: column with bad row index
|
|
kusano |
7d535a |
stats [5]: bad row index
|
|
kusano |
7d535a |
stats [6]: n_row, # of rows of matrx
|
|
kusano |
7d535a |
-10 (unused; see symamd.c)
|
|
kusano |
7d535a |
-999 (unused; see symamd.c)
|
|
kusano |
7d535a |
Future versions may return more statistics in the stats array.
|
|
kusano |
7d535a |
Example:
|
|
kusano |
7d535a |
See http://www.cise.ufl.edu/research/sparse/colamd/example.c
|
|
kusano |
7d535a |
for a complete example.
|
|
kusano |
7d535a |
To order the columns of a 5-by-4 matrix with 11 nonzero entries in
|
|
kusano |
7d535a |
the following nonzero pattern
|
|
kusano |
7d535a |
x 0 x 0
|
|
kusano |
7d535a |
x 0 x x
|
|
kusano |
7d535a |
0 x x 0
|
|
kusano |
7d535a |
0 0 x x
|
|
kusano |
7d535a |
x x 0 0
|
|
kusano |
7d535a |
with default knobs and no output statistics, do the following:
|
|
kusano |
7d535a |
include "colamd.h"
|
|
kusano |
7d535a |
define ALEN COLAMD_RECOMMENDED (11, 5, 4)
|
|
kusano |
7d535a |
int A [ALEN] = {1, 2, 5, 3, 5, 1, 2, 3, 4, 2, 4} ;
|
|
kusano |
7d535a |
int p [ ] = {0, 3, 5, 9, 11} ;
|
|
kusano |
7d535a |
int stats [COLAMD_STATS] ;
|
|
kusano |
7d535a |
colamd (5, 4, ALEN, A, p, (double *) NULL, stats) ;
|
|
kusano |
7d535a |
The permutation is returned in the array p, and A is destroyed.
|
|
kusano |
7d535a |
----------------------------------------------------------------------------
|
|
kusano |
7d535a |
symamd:
|
|
kusano |
7d535a |
----------------------------------------------------------------------------
|
|
kusano |
7d535a |
C syntax:
|
|
kusano |
7d535a |
include "colamd.h"
|
|
kusano |
7d535a |
int symamd (int n, int *A, int *p, int *perm,
|
|
kusano |
7d535a |
double knobs [COLAMD_KNOBS], int stats [COLAMD_STATS],
|
|
kusano |
7d535a |
void (*allocate) (size_t, size_t), void (*release) (void *)) ;
|
|
kusano |
7d535a |
Purpose:
|
|
kusano |
7d535a |
The symamd routine computes an ordering P of a symmetric sparse
|
|
kusano |
7d535a |
matrix A such that the Cholesky factorization PAP' = LL' remains
|
|
kusano |
7d535a |
sparse. It is based on a column ordering of a matrix M constructed
|
|
kusano |
7d535a |
so that the nonzero pattern of M'M is the same as A. The matrix A
|
|
kusano |
7d535a |
is assumed to be symmetric; only the strictly lower triangular part
|
|
kusano |
7d535a |
is accessed. You must pass your selected memory allocator (usually
|
|
kusano |
7d535a |
calloc/free or mxCalloc/mxFree) to symamd, for it to allocate
|
|
kusano |
7d535a |
memory for the temporary matrix M.
|
|
kusano |
7d535a |
Returns:
|
|
kusano |
7d535a |
TRUE (1) if successful, FALSE (0) otherwise.
|
|
kusano |
7d535a |
Arguments:
|
|
kusano |
7d535a |
int n ; Input argument.
|
|
kusano |
7d535a |
Number of rows and columns in the symmetrix matrix A.
|
|
kusano |
7d535a |
Restriction: n >= 0.
|
|
kusano |
7d535a |
Symamd returns FALSE if n is negative.
|
|
kusano |
7d535a |
int A [nnz] ; Input argument.
|
|
kusano |
7d535a |
A is an integer array of size nnz, where nnz = p [n].
|
|
kusano |
7d535a |
The row indices of the entries in column c of the matrix are
|
|
kusano |
7d535a |
held in A [(p [c]) ... (p [c+1]-1)]. The row indices in a
|
|
kusano |
7d535a |
given column c need not be in ascending order, and duplicate
|
|
kusano |
7d535a |
row indices may be present. However, symamd will run faster
|
|
kusano |
7d535a |
if the columns are in sorted order with no duplicate entries.
|
|
kusano |
7d535a |
The matrix is 0-based. That is, rows are in the range 0 to
|
|
kusano |
7d535a |
n-1, and columns are in the range 0 to n-1. Symamd
|
|
kusano |
7d535a |
returns FALSE if any row index is out of range.
|
|
kusano |
7d535a |
The contents of A are not modified.
|
|
kusano |
7d535a |
int p [n+1] ; Input argument.
|
|
kusano |
7d535a |
p is an integer array of size n+1. On input, it holds the
|
|
kusano |
7d535a |
"pointers" for the column form of the matrix A. Column c of
|
|
kusano |
7d535a |
the matrix A is held in A [(p [c]) ... (p [c+1]-1)]. The first
|
|
kusano |
7d535a |
entry, p [0], must be zero, and p [c] <= p [c+1] must hold
|
|
kusano |
7d535a |
for all c in the range 0 to n-1. The value p [n] is
|
|
kusano |
7d535a |
thus the total number of entries in the pattern of the matrix A.
|
|
kusano |
7d535a |
Symamd returns FALSE if these conditions are not met.
|
|
kusano |
7d535a |
The contents of p are not modified.
|
|
kusano |
7d535a |
int perm [n+1] ; Output argument.
|
|
kusano |
7d535a |
On output, if symamd returns TRUE, the array perm holds the
|
|
kusano |
7d535a |
permutation P, where perm [0] is the first index in the new
|
|
kusano |
7d535a |
ordering, and perm [n-1] is the last. That is, perm [k] = j
|
|
kusano |
7d535a |
means that row and column j of A is the kth column in PAP',
|
|
kusano |
7d535a |
where k is in the range 0 to n-1 (perm [0] = j means
|
|
kusano |
7d535a |
that row and column j of A are the first row and column in
|
|
kusano |
7d535a |
PAP'). The array is used as a workspace during the ordering,
|
|
kusano |
7d535a |
which is why it must be of length n+1, not just n.
|
|
kusano |
7d535a |
double knobs [COLAMD_KNOBS] ; Input argument.
|
|
kusano |
7d535a |
See colamd_set_defaults for a description.
|
|
kusano |
7d535a |
int stats [COLAMD_STATS] ; Output argument.
|
|
kusano |
7d535a |
Statistics on the ordering, and error status.
|
|
kusano |
7d535a |
See colamd.h for related definitions.
|
|
kusano |
7d535a |
Symamd returns FALSE if stats is not present.
|
|
kusano |
7d535a |
stats [0]: number of dense or empty row and columns ignored
|
|
kusano |
7d535a |
(and ordered last in the output permutation
|
|
kusano |
7d535a |
perm). Note that a row/column can become
|
|
kusano |
7d535a |
"empty" if it contains only "dense" and/or
|
|
kusano |
7d535a |
"empty" columns/rows.
|
|
kusano |
7d535a |
stats [1]: (same as stats [0])
|
|
kusano |
7d535a |
stats [2]: number of garbage collections performed.
|
|
kusano |
7d535a |
stats [3]: status code. < 0 is an error code.
|
|
kusano |
7d535a |
> 1 is a warning or notice.
|
|
kusano |
7d535a |
0 OK. Each column of the input matrix contained
|
|
kusano |
7d535a |
row indices in increasing order, with no
|
|
kusano |
7d535a |
duplicates.
|
|
kusano |
7d535a |
1 OK, but columns of input matrix were jumbled
|
|
kusano |
7d535a |
(unsorted columns or duplicate entries). Symamd
|
|
kusano |
7d535a |
had to do some extra work to sort the matrix
|
|
kusano |
7d535a |
first and remove duplicate entries, but it
|
|
kusano |
7d535a |
still was able to return a valid permutation
|
|
kusano |
7d535a |
(return value of symamd was TRUE).
|
|
kusano |
7d535a |
stats [4]: highest numbered column that
|
|
kusano |
7d535a |
is unsorted or has duplicate
|
|
kusano |
7d535a |
entries.
|
|
kusano |
7d535a |
stats [5]: last seen duplicate or
|
|
kusano |
7d535a |
unsorted row index.
|
|
kusano |
7d535a |
stats [6]: number of duplicate or
|
|
kusano |
7d535a |
unsorted row indices.
|
|
kusano |
7d535a |
-1 A is a null pointer
|
|
kusano |
7d535a |
-2 p is a null pointer
|
|
kusano |
7d535a |
-3 (unused, see colamd.c)
|
|
kusano |
7d535a |
-4 n is negative
|
|
kusano |
7d535a |
stats [4]: n
|
|
kusano |
7d535a |
-5 number of nonzeros in matrix is negative
|
|
kusano |
7d535a |
stats [4]: # of nonzeros (p [n]).
|
|
kusano |
7d535a |
-6 p [0] is nonzero
|
|
kusano |
7d535a |
stats [4]: p [0]
|
|
kusano |
7d535a |
-7 (unused)
|
|
kusano |
7d535a |
-8 a column has a negative number of entries
|
|
kusano |
7d535a |
stats [4]: column with < 0 entries
|
|
kusano |
7d535a |
stats [5]: number of entries in col
|
|
kusano |
7d535a |
-9 a row index is out of bounds
|
|
kusano |
7d535a |
stats [4]: column with bad row index
|
|
kusano |
7d535a |
stats [5]: bad row index
|
|
kusano |
7d535a |
stats [6]: n_row, # of rows of matrx
|
|
kusano |
7d535a |
-10 out of memory (unable to allocate temporary
|
|
kusano |
7d535a |
workspace for M or count arrays using the
|
|
kusano |
7d535a |
"allocate" routine passed into symamd).
|
|
kusano |
7d535a |
-999 internal error. colamd failed to order the
|
|
kusano |
7d535a |
matrix M, when it should have succeeded. This
|
|
kusano |
7d535a |
indicates a bug. If this (and *only* this)
|
|
kusano |
7d535a |
error code occurs, please contact the authors.
|
|
kusano |
7d535a |
Don't contact the authors if you get any other
|
|
kusano |
7d535a |
error code.
|
|
kusano |
7d535a |
Future versions may return more statistics in the stats array.
|
|
kusano |
7d535a |
void * (*allocate) (size_t, size_t)
|
|
kusano |
7d535a |
A pointer to a function providing memory allocation. The
|
|
kusano |
7d535a |
allocated memory must be returned initialized to zero. For a
|
|
kusano |
7d535a |
C application, this argument should normally be a pointer to
|
|
kusano |
7d535a |
calloc. For a MATLAB mexFunction, the routine mxCalloc is
|
|
kusano |
7d535a |
passed instead.
|
|
kusano |
7d535a |
void (*release) (size_t, size_t)
|
|
kusano |
7d535a |
A pointer to a function that frees memory allocated by the
|
|
kusano |
7d535a |
memory allocation routine above. For a C application, this
|
|
kusano |
7d535a |
argument should normally be a pointer to free. For a MATLAB
|
|
kusano |
7d535a |
mexFunction, the routine mxFree is passed instead.
|
|
kusano |
7d535a |
----------------------------------------------------------------------------
|
|
kusano |
7d535a |
colamd_report:
|
|
kusano |
7d535a |
----------------------------------------------------------------------------
|
|
kusano |
7d535a |
C syntax:
|
|
kusano |
7d535a |
include "colamd.h"
|
|
kusano |
7d535a |
colamd_report (int stats [COLAMD_STATS]) ;
|
|
kusano |
7d535a |
Purpose:
|
|
kusano |
7d535a |
Prints the error status and statistics recorded in the stats
|
|
kusano |
7d535a |
array on the standard error output (for a standard C routine)
|
|
kusano |
7d535a |
or on the MATLAB output (for a mexFunction).
|
|
kusano |
7d535a |
Arguments:
|
|
kusano |
7d535a |
int stats [COLAMD_STATS] ; Input only. Statistics from colamd.
|
|
kusano |
7d535a |
----------------------------------------------------------------------------
|
|
kusano |
7d535a |
symamd_report:
|
|
kusano |
7d535a |
----------------------------------------------------------------------------
|
|
kusano |
7d535a |
C syntax:
|
|
kusano |
7d535a |
include "colamd.h"
|
|
kusano |
7d535a |
symamd_report (int stats [COLAMD_STATS]) ;
|
|
kusano |
7d535a |
Purpose:
|
|
kusano |
7d535a |
Prints the error status and statistics recorded in the stats
|
|
kusano |
7d535a |
array on the standard error output (for a standard C routine)
|
|
kusano |
7d535a |
or on the MATLAB output (for a mexFunction).
|
|
kusano |
7d535a |
Arguments:
|
|
kusano |
7d535a |
int stats [COLAMD_STATS] ; Input only. Statistics from symamd.
|
|
kusano |
7d535a |
Define Documentation
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define ALIVE (0)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define ASSERT
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
expression
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
((void) 0)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define COL_IS_ALIVE
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
c
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
(Col [c].start >= ALIVE)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define COL_IS_DEAD
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
c
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
(Col [c].start < ALIVE)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define COL_IS_DEAD_PRINCIPAL
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
c
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
(Col [c].start == DEAD_PRINCIPAL)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define DEAD (-1)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define DEAD_NON_PRINCIPAL (-2)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define DEAD_PRINCIPAL (-1)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define DEBUG0
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
params
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
;
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define DEBUG1
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
params
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
;
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define DEBUG2
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
params
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
;
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define DEBUG3
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
params
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
;
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define DEBUG4
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
params
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
;
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define EMPTY (-1)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define FALSE (0)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define INDEX
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
i
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
(i)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define KILL_NON_PRINCIPAL_COL
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
c
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
{ Col [c].start = DEAD_NON_PRINCIPAL ; }
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define KILL_PRINCIPAL_COL
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
c
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
{ Col [c].start = DEAD_PRINCIPAL ; }
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define KILL_ROW
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
r
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
{ Row [r].shared2.mark = DEAD ; }
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define MAX
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
a,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
b
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
(((a) > (b)) ? (a) : (b))
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define MIN
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
a,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
b
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
(((a) < (b)) ? (a) : (b))
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define ONES_COMPLEMENT
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
r
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
(-(r)-1)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define PRINTF printf
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define PRIVATE static
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define PUBLIC
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define ROW_IS_ALIVE
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
r
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
(Row [r].shared2.mark >= ALIVE)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define ROW_IS_DEAD
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
r
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
ROW_IS_MARKED_DEAD (Row[r].shared2.mark)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define ROW_IS_MARKED_DEAD
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
row_mark
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
(row_mark < ALIVE)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
#define TRUE (1)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
Function Documentation
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PRIVATE int clear_mark
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
n_row,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
Colamd_Row
|
|
kusano |
7d535a |
Row[]
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PUBLIC int colamd
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
n_row,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
n_col,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
Alen,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
A[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
p[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
double
|
|
kusano |
7d535a |
knobs[COLAMD_KNOBS],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
stats[COLAMD_STATS]
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PUBLIC int colamd_recommended
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
nnz,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
n_row,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
n_col
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PUBLIC void colamd_report
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
stats[COLAMD_STATS]
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PUBLIC void colamd_set_defaults
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
double
|
|
kusano |
7d535a |
knobs[COLAMD_KNOBS]
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PRIVATE void detect_super_cols
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
Colamd_Col
|
|
kusano |
7d535a |
Col[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
A[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
head[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
row_start,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
row_length
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PRIVATE int find_ordering
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
n_row,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
n_col,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
Alen,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
Colamd_Row
|
|
kusano |
7d535a |
Row[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
Colamd_Col
|
|
kusano |
7d535a |
Col[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
A[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
head[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
n_col2,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
max_deg,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
pfree
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PRIVATE int garbage_collection
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
n_row,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
n_col,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
Colamd_Row
|
|
kusano |
7d535a |
Row[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
Colamd_Col
|
|
kusano |
7d535a |
Col[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
A[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int *
|
|
kusano |
7d535a |
pfree
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PRIVATE int init_rows_cols
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
n_row,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
n_col,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
Colamd_Row
|
|
kusano |
7d535a |
Row[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
Colamd_Col
|
|
kusano |
7d535a |
Col[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
A[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
p[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
stats[COLAMD_STATS]
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PRIVATE void init_scoring
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
n_row,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
n_col,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
Colamd_Row
|
|
kusano |
7d535a |
Row[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
Colamd_Col
|
|
kusano |
7d535a |
Col[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
A[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
head[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
double
|
|
kusano |
7d535a |
knobs[COLAMD_KNOBS],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int *
|
|
kusano |
7d535a |
p_n_row2,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int *
|
|
kusano |
7d535a |
p_n_col2,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int *
|
|
kusano |
7d535a |
p_max_deg
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PRIVATE void order_children
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
n_col,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
Colamd_Col
|
|
kusano |
7d535a |
Col[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
p[]
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PRIVATE void print_report
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
char *
|
|
kusano |
7d535a |
method,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
stats[COLAMD_STATS]
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PUBLIC int symamd
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
n,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
A[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
p[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
perm[],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
double
|
|
kusano |
7d535a |
knobs[COLAMD_KNOBS],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
stats[COLAMD_STATS],
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
void *(*)(size_t, size_t)
|
|
kusano |
7d535a |
allocate,
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
void(*)(void *)
|
|
kusano |
7d535a |
release
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
PUBLIC void symamd_report
|
|
kusano |
7d535a |
(
|
|
kusano |
7d535a |
int
|
|
kusano |
7d535a |
stats[COLAMD_STATS]
|
|
kusano |
7d535a |
)
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
<address style="text-align: right;"><small>Generated on Mon Nov 22 10:23:47 2010 for SuperLU by </small></address>
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
1.5.5
|
|
kusano |
7d535a |
|
|
kusano |
7d535a |
|