5164
|
1 /* ========================================================================== */ |
|
2 /* === UMFPACK_report_triplet =============================================== */ |
|
3 /* ========================================================================== */ |
|
4 |
|
5 /* -------------------------------------------------------------------------- */ |
|
6 /* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ |
|
7 /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ |
|
8 /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ |
|
9 /* -------------------------------------------------------------------------- */ |
|
10 |
|
11 /* |
|
12 User-callable. Prints a matrix in triplet form. See |
|
13 umfpack_report_triplet.h for details. |
|
14 */ |
|
15 |
|
16 #include "umf_internal.h" |
|
17 |
|
18 GLOBAL Int UMFPACK_report_triplet |
|
19 ( |
|
20 Int n_row, |
|
21 Int n_col, |
|
22 Int nz, |
|
23 const Int Ti [ ], |
|
24 const Int Tj [ ], |
|
25 const double Tx [ ], |
|
26 #ifdef COMPLEX |
|
27 const double Tz [ ], |
|
28 #endif |
|
29 const double Control [UMFPACK_CONTROL] |
|
30 ) |
|
31 { |
|
32 Entry t ; |
|
33 Int prl, prl1, k, i, j, do_values ; |
|
34 #ifdef COMPLEX |
|
35 Int split = SPLIT (Tz) ; |
|
36 #endif |
|
37 |
|
38 prl = GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; |
|
39 |
|
40 if (prl <= 2) |
|
41 { |
|
42 return (UMFPACK_OK) ; |
|
43 } |
|
44 |
|
45 PRINTF (("triplet-form matrix, n_row = "ID", n_col = "ID" nz = "ID". ", |
|
46 n_row, n_col, nz)) ; |
|
47 |
|
48 if (!Ti || !Tj) |
|
49 { |
|
50 PRINTF (("ERROR: indices not present\n\n")) ; |
|
51 return (UMFPACK_ERROR_argument_missing) ; |
|
52 } |
|
53 |
|
54 if (n_row <= 0 || n_col <= 0) |
|
55 { |
|
56 PRINTF (("ERROR: n_row or n_col is <= 0\n\n")) ; |
|
57 return (UMFPACK_ERROR_n_nonpositive) ; |
|
58 } |
|
59 |
|
60 if (nz < 0) |
|
61 { |
|
62 PRINTF (("ERROR: nz is < 0\n\n")) ; |
|
63 return (UMFPACK_ERROR_invalid_matrix) ; |
|
64 } |
|
65 |
|
66 PRINTF4 (("\n")) ; |
|
67 |
|
68 do_values = Tx != (double *) NULL ; |
|
69 |
|
70 prl1 = prl ; |
|
71 for (k = 0 ; k < nz ; k++) |
|
72 { |
|
73 i = Ti [k] ; |
|
74 j = Tj [k] ; |
|
75 PRINTF4 ((" "ID" : "ID" "ID" ", INDEX (k), INDEX (i), INDEX (j))) ; |
|
76 if (do_values && prl >= 4) |
|
77 { |
|
78 ASSIGN (t, Tx, Tz, k, split) ; |
|
79 PRINT_ENTRY (t) ; |
|
80 } |
|
81 PRINTF4 (("\n")) ; |
|
82 if (i < 0 || i >= n_row || j < 0 || j >= n_col) |
|
83 { |
|
84 /* invalid triplet */ |
|
85 PRINTF (("ERROR: invalid triplet\n\n")) ; |
|
86 return (UMFPACK_ERROR_invalid_matrix) ; |
|
87 } |
|
88 if (prl == 4 && k == 9 && nz > 10) |
|
89 { |
|
90 PRINTF ((" ...\n")) ; |
|
91 prl-- ; |
|
92 } |
|
93 } |
|
94 prl = prl1 ; |
|
95 |
|
96 PRINTF4 ((" triplet-form matrix ")) ; |
|
97 PRINTF (("OK\n\n")) ; |
|
98 return (UMFPACK_OK) ; |
|
99 } |