1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
// Copyright (C) 1998-2016 Stefan I. Larimore and Timothy A. Davis.
// Copyright (C) 2011-2022 Richard W. Lincoln.
// All Rights Reserved.
//! Approximate minimum degree column ordering algorithms.
//!
//! [fn@colamd]: an approximate minimum degree column ordering algorithm,
//! for LU factorization of symmetric or unsymmetric matrices,
//! QR factorization, least squares, interior point methods for
//! linear programming problems, and other related problems.
//!
//! [fn@symamd]: an approximate minimum degree ordering algorithm for Cholesky
//! factorization of symmetric matrices.
//!
//! Colamd computes a permutation `Q` such that the Cholesky factorization of
//! `(AQ)'(AQ)` has less fill-in and requires fewer floating point operations
//! than `A'A`. This also provides a good ordering for sparse partial
//! pivoting methods, `P(AQ) = LU`, where `Q` is computed prior to numerical
//! factorization, and `P` is computed during numerical factorization via
//! conventional partial pivoting with row interchanges.
//!
//! Symamd computes a permutation `P` of a symmetric matrix A such that the
//! Cholesky factorization of `PAP'` has less fill-in and requires fewer
//! floating point operations than `A`. Symamd constructs a matrix `M` such
//! that `M'M` has the same nonzero pattern of `A`, and then orders the columns
//! of `M` using colmmd. The column ordering of `M` is then returned as the
//! row and column ordering `P` of `A`.
//!
//! The authors of the code itself are Stefan I. Larimore and Timothy A.
//! Davis (davis at cise.ufl.edu), University of Florida. The algorithm was
//! developed in collaboration with John Gilbert, Xerox PARC, and Esmond
//! Ng, Oak Ridge National Laboratory.
//!
//! This work was supported by the National Science Foundation, under
//! grants DMS-9504974 and DMS-9803599.
mod col;
mod colamd;
mod colamd2;
mod debug;
mod internal;
mod report;
mod row;
mod stats;
mod symamd;
pub use crate::colamd::{colamd, recommended};
pub use crate::internal::Int;
pub use crate::report::*;
pub use crate::stats::*;
pub use crate::symamd::symamd;