1 /* ========================================================================== */
2 /* === umfpack_get_lunz ===================================================== */
3 /* ========================================================================== */
4 
5 /* -------------------------------------------------------------------------- */
6 /* Copyright (c) 2005-2012 by Timothy A. Davis, http://www.suitesparse.com.   */
7 /* All Rights Reserved.  See ../Doc/License.txt for License.                  */
8 /* -------------------------------------------------------------------------- */
9 
10 int umfpack_di_get_lunz
11 (
12     int *lnz,
13     int *unz,
14     int *n_row,
15     int *n_col,
16     int *nz_udiag,
17     void *Numeric
18 ) ;
19 
20 SuiteSparse_long umfpack_dl_get_lunz
21 (
22     SuiteSparse_long *lnz,
23     SuiteSparse_long *unz,
24     SuiteSparse_long *n_row,
25     SuiteSparse_long *n_col,
26     SuiteSparse_long *nz_udiag,
27     void *Numeric
28 ) ;
29 
30 int umfpack_zi_get_lunz
31 (
32     int *lnz,
33     int *unz,
34     int *n_row,
35     int *n_col,
36     int *nz_udiag,
37     void *Numeric
38 ) ;
39 
40 SuiteSparse_long umfpack_zl_get_lunz
41 (
42     SuiteSparse_long *lnz,
43     SuiteSparse_long *unz,
44     SuiteSparse_long *n_row,
45     SuiteSparse_long *n_col,
46     SuiteSparse_long *nz_udiag,
47     void *Numeric
48 ) ;
49 
50 /*
51 double int Syntax:
52 
53     #include "umfpack.h"
54     void *Numeric ;
55     int status, lnz, unz, n_row, n_col, nz_udiag ;
56     status = umfpack_di_get_lunz (&lnz, &unz, &n_row, &n_col, &nz_udiag,
57 	Numeric) ;
58 
59 double SuiteSparse_long Syntax:
60 
61     #include "umfpack.h"
62     void *Numeric ;
63     SuiteSparse_long status, lnz, unz, n_row, n_col, nz_udiag ;
64     status = umfpack_dl_get_lunz (&lnz, &unz, &n_row, &n_col, &nz_udiag,
65 	Numeric) ;
66 
67 complex int Syntax:
68 
69     #include "umfpack.h"
70     void *Numeric ;
71     int status, lnz, unz, n_row, n_col, nz_udiag ;
72     status = umfpack_zi_get_lunz (&lnz, &unz, &n_row, &n_col, &nz_udiag,
73 	Numeric) ;
74 
75 complex SuiteSparse_long Syntax:
76 
77     #include "umfpack.h"
78     void *Numeric ;
79     SuiteSparse_long status, lnz, unz, n_row, n_col, nz_udiag ;
80     status = umfpack_zl_get_lunz (&lnz, &unz, &n_row, &n_col, &nz_udiag,
81 	Numeric) ;
82 
83 Purpose:
84 
85     Determines the size and number of nonzeros in the LU factors held by the
86     Numeric object.  These are also the sizes of the output arrays required
87     by umfpack_*_get_numeric.
88 
89     The matrix L is n_row -by- min(n_row,n_col), with lnz nonzeros, including
90     the entries on the unit diagonal of L.
91 
92     The matrix U is min(n_row,n_col) -by- n_col, with unz nonzeros, including
93     nonzeros on the diagonal of U.
94 
95 Returns:
96 
97     UMFPACK_OK if successful.
98     UMFPACK_ERROR_invalid_Numeric_object if Numeric is not a valid object.
99     UMFPACK_ERROR_argument_missing if any other argument is (Int *) NULL.
100 
101 Arguments:
102 
103     Int *lnz ;		Output argument.
104 
105 	The number of nonzeros in L, including the diagonal (which is all
106 	one's).  This value is the required size of the Lj and Lx arrays as
107 	computed by umfpack_*_get_numeric.  The value of lnz is identical to
108 	Info [UMFPACK_LNZ], if that value was returned by umfpack_*_numeric.
109 
110     Int *unz ;		Output argument.
111 
112 	The number of nonzeros in U, including the diagonal.  This value is the
113 	required size of the Ui and Ux arrays as computed by
114 	umfpack_*_get_numeric.  The value of unz is identical to
115 	Info [UMFPACK_UNZ], if that value was returned by umfpack_*_numeric.
116 
117     Int *n_row ;	Output argument.
118     Int *n_col ;	Output argument.
119 
120 	The order of the L and U matrices.  L is n_row -by- min(n_row,n_col)
121 	and U is min(n_row,n_col) -by- n_col.
122 
123     Int *nz_udiag ;	Output argument.
124 
125 	The number of numerically nonzero values on the diagonal of U.  The
126 	matrix is singular if nz_diag < min(n_row,n_col).  A divide-by-zero
127 	will occur if nz_diag < n_row == n_col when solving a sparse system
128 	involving the matrix U in umfpack_*_*solve.  The value of nz_udiag is
129 	identical to Info [UMFPACK_UDIAG_NZ] if that value was returned by
130 	umfpack_*_numeric.
131 
132     void *Numeric ;	Input argument, not modified.
133 
134 	Numeric must point to a valid Numeric object, computed by
135 	umfpack_*_numeric.
136 */
137