00001 /* ========================================================================== */ 00002 /* === umfpack_col_to_triplet =============================================== */ 00003 /* ========================================================================== */ 00004 00005 /* -------------------------------------------------------------------------- */ 00006 /* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ 00007 /* Davis. All Rights Reserved. See ../README for License. */ 00008 /* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ 00009 /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ 00010 /* -------------------------------------------------------------------------- */ 00011 00012 int umfpack_di_col_to_triplet 00013 ( 00014 int n_col, 00015 const int Ap [ ], 00016 int Tj [ ] 00017 ) ; 00018 00019 long umfpack_dl_col_to_triplet 00020 ( 00021 long n_col, 00022 const long Ap [ ], 00023 long Tj [ ] 00024 ) ; 00025 00026 int umfpack_zi_col_to_triplet 00027 ( 00028 int n_col, 00029 const int Ap [ ], 00030 int Tj [ ] 00031 ) ; 00032 00033 long umfpack_zl_col_to_triplet 00034 ( 00035 long n_col, 00036 const long Ap [ ], 00037 long Tj [ ] 00038 ) ; 00039 00040 /* 00041 double int Syntax: 00042 00043 #include "umfpack.h" 00044 int n_col, *Tj, *Ap, status ; 00045 status = umfpack_di_col_to_triplet (n_col, Ap, Tj) ; 00046 00047 double long Syntax: 00048 00049 #include "umfpack.h" 00050 long n_col, *Tj, *Ap, status ; 00051 status = umfpack_dl_col_to_triplet (n_col, Ap, Tj) ; 00052 00053 complex int Syntax: 00054 00055 #include "umfpack.h" 00056 int n_col, *Tj, *Ap, status ; 00057 status = umfpack_zi_col_to_triplet (n_col, Ap, Tj) ; 00058 00059 complex long Syntax: 00060 00061 #include "umfpack.h" 00062 long n_col, *Tj, *Ap, status ; 00063 status = umfpack_zl_col_to_triplet (n_col, Ap, Tj) ; 00064 00065 Purpose: 00066 00067 Converts a column-oriented matrix to a triplet form. Only the column 00068 pointers, Ap, are required, and only the column indices of the triplet form 00069 are constructed. This routine is the opposite of umfpack_*_triplet_to_col. 00070 The matrix may be singular and/or rectangular. Analogous to [i, Tj, x] = 00071 find (A) in MATLAB, except that zero entries present in the column-form of 00072 A are present in the output, and i and x are not created (those are just Ai 00073 and Ax+Az*1i, respectively, for a column-form matrix A). 00074 00075 Returns: 00076 00077 UMFPACK_OK if successful 00078 UMFPACK_ERROR_argument_missing if Ap or Tj is missing 00079 UMFPACK_ERROR_n_nonpositive if n_col <= 0 00080 UMFPACK_ERROR_invalid_matrix if Ap [n_col] < 0, Ap [0] != 0, or 00081 Ap [j] > Ap [j+1] for any j in the range 0 to n-1. 00082 Unsorted columns and duplicate entries do not cause an error (these would 00083 only be evident by examining Ai). Empty rows and columns are OK. 00084 00085 Arguments: 00086 00087 Int n_col ; Input argument, not modified. 00088 00089 A is an n_row-by-n_col matrix. Restriction: n_col > 0. 00090 (n_row is not required) 00091 00092 Int Ap [n_col+1] ; Input argument, not modified. 00093 00094 The column pointers of the column-oriented form of the matrix. See 00095 umfpack_*_*symbolic for a description. The number of entries in 00096 the matrix is nz = Ap [n_col]. Restrictions on Ap are the same as those 00097 for umfpack_*_transpose. Ap [0] must be zero, nz must be >= 0, and 00098 Ap [j] <= Ap [j+1] and Ap [j] <= Ap [n_col] must be true for all j in 00099 the range 0 to n_col-1. Empty columns are OK (that is, Ap [j] may equal 00100 Ap [j+1] for any j in the range 0 to n_col-1). 00101 00102 Int Tj [nz] ; Output argument. 00103 00104 Tj is an integer array of size nz on input, where nz = Ap [n_col]. 00105 Suppose the column-form of the matrix is held in Ap, Ai, Ax, and Az 00106 (see umfpack_*_*symbolic for a description). Then on output, the 00107 triplet form of the same matrix is held in Ai (row indices), Tj (column 00108 indices), and Ax (numerical values). Note, however, that this routine 00109 does not require Ai and Ax (or Az for the complex version) in order to 00110 do the conversion. 00111 */