Lines Matching full:column
72 /* knobs [1] and stats [1]: dense column knob and output statistic. */
114 /* Row and column status */
118 /* Column status */
122 /* Macros for row and column status update and checking. */
137 // == Row and Column structures ==
141 Index start ; /* index for A of first row in this column, or DEAD */
142 /* if column is dead */
143 Index length ; /* number of rows in this column */
147 /* col, if the column is alive */
148 Index parent ; /* parent in parent tree super-column structure, if */
149 /* the column is dead */
154 Index order ; /* pivot ordering of this column, if col is dead */
161 Index prev ; /* previous column in degree list, if col is in a */
166 Index degree_next ; /* next column, if col is in a degree list */
167 Index hash_next ; /* next column, if col is in a hash list */
185 Index first_column ;/* first column in row (used in garbage collection) */
197 argument is negative. 2*nnz space is required for the row and column
278 * ordering, and placed last in the output column ordering.
312 * \brief Computes a column ordering using the column approximate minimum degree ordering
314 * Computes a column ordering (Q) of A such that P(AQ)=LU or
324 * \param p column pointers of A, of size n_col+1
437 /* === Construct the row and column data structures ===================== */
481 Takes the column form of the matrix in A and creates the row form of the
482 matrix. Also, row and column attributes are stored in the Col and Row
485 column form of the matrix. Returns false if the matrix is invalid,
504 Index col ; /* a column index */
506 Index *cp ; /* a column pointer */
507 Index *cp_end ; /* a pointer to the end of a column */
512 /* === Initialize columns, and check column pointers ==================== */
521 /* column pointers must be non-decreasing */
586 /* this is a repeated entry in the column, */
591 /* mark the row as having been seen in this column */
600 /* row form of the matrix starts directly after the column */
658 COLAMD_DEBUG0 (("colamd: reconstructing column form, matrix jumbled\n")) ;
702 each column, and places all columns in the degree lists. Not user-callable.
713 Index A [], /* column form and row form of A */
723 Index c ; /* a column index */
725 Index *cp ; /* a column pointer */
726 Index deg ; /* degree of a row or column */
727 Index *cp_end ; /* a pointer to the end of a column */
728 Index *new_cp ; /* new column pointer */
729 Index col_length ; /* length of pruned column */
730 Index score ; /* current column score */
735 Index min_score ; /* smallest column score */
758 /* this is a empty column, kill and order it last */
778 /* this is a dense column, kill and order it last */
812 /* === Compute initial column scores ==================================== */
819 /* now find the initial matlab score for each column */
822 /* skip dead column */
840 /* compact the column */
847 /* determine pruned column length */
851 /* a newly-made null column (all rows in this col are "dense" */
859 /* set column length and set score */
872 /* least one live column. */
883 /* place in reverse order, so low column indices are at the front */
903 /* now add this column to dList at proper score location */
908 /* if there already was a column with the same score, set its */
909 /* previous pointer to this new column */
938 (no supercolumns on input). Uses a minimum approximate column minimum
951 Index A [], /* column form and row form of A */
961 Index pivot_col ; /* current pivot column */
962 Index *cp ; /* a column pointer */
965 Index *new_cp ; /* modified column pointer */
970 Index pivot_col_score ; /* score of pivot column */
972 Index *cp_end ; /* pointer to the end of a column */
975 Index col ; /* a column index */
977 Index cur_score ; /* score of current column */
980 Index first_col ; /* first column in hash bucket */
984 Index min_score ; /* smallest column score */
1006 /* === Select pivot column, and order it ============================ */
1013 /* get pivot column from head of minimum degree list */
1033 /* the pivot column is the kth column in the pivot order */
1036 /* increment order count by column thickness */
1063 /* tag pivot column as having been visited so it isn't included */
1067 /* pivot row is the union of all rows in the pivot column pattern */
1084 /* get a column */
1086 /* add the column, if alive and untagged */
1090 /* tag column in pivot row */
1093 /* place column in pivot row */
1100 /* clear tag on pivot column */
1137 /* Here begins the computation of the approximate degree. The column */
1139 /* set differences of each row in the column minus the pattern of the */
1140 /* pivot row itself. The column ("thickness") itself is also */
1141 /* excluded from the column score (we thus use an approximate */
1146 /* being scanned - that is, the sum of the sizes of each column in */
1147 /* the pivot row. Thus, the amortized time to compute a column score */
1148 /* is proportional to the size of that column (where size, in this */
1149 /* context, is the column "length", or the number of row indices */
1150 /* in that column). The number of row indices in a column is */
1152 /* column on input to colamd. */
1161 /* for each column in pivot row */
1175 /* === Remove column from degree list =========================== */
1196 /* === Scan the column ========================================== */
1218 /* subtract column thickness from this row's set difference */
1236 /* === Add up set differences for each column ======================= */
1240 /* for each column in pivot row */
1245 /* get a column */
1251 /* compact the column */
1269 /* compact the column */
1279 /* recompute the column's length */
1287 /* nothing left but the pivot row in this column */
1293 /* increment order count by column thickness */
1305 /* add column to hash table, for supercolumn detection */
1315 /* first column in degree list as head of hash bucket */
1333 /* The approximate external column degree is now computed. */
1341 /* === Kill the pivotal column ====================================== */
1354 /* === Finalize the new pivot row, and column scores ================ */
1358 /* for each column in pivot row */
1372 /* add new pivot row to column */
1395 /* === Place column back in degree list ========================= */
1444 parent tree (a column is a child of the column which absorbed it). The
1446 being the first column, and p [n_col-1] being the last. It doesn't look
1459 Index p [] /* p [0 ... n_col-1] is the column permutation*/
1465 Index c ; /* column index */
1466 Index parent ; /* index of column's parent */
1467 Index order ; /* column's order */
1469 /* === Order each non-principal column ================================== */
1473 /* find an un-ordered non-principal column */
1494 /* order this column */
1499 /* get immediate parent of this column */
1502 /* continue until we hit an ordered column. There are */
1504 /* above an ordered column */
1536 head [h] is the first column in degree bucket h.
1537 Col [head [h]].headhash gives the first column in hash bucket h.
1541 -(head [h] + 2) is the first column in hash bucket h.
1543 For a column c in a hash bucket, Col [c].shared3.prev is NOT a "previous
1544 column" pointer. Col [c].shared3.hash is used instead as the hash number
1545 for that column. The value of Col [c].shared4.hash_next is the next column
1549 linear in the sum of the sizes (lengths) of each column whose score has
1567 Index hash ; /* hash value for a column */
1569 Index c ; /* a column index */
1570 Index super_c ; /* column index of the column to absorb into */
1571 Index *cp1 ; /* column pointer for column super_c */
1572 Index *cp2 ; /* column pointer for column c */
1573 Index length ; /* length of column super_c */
1574 Index prev_c ; /* column preceding c in hash bucket */
1577 Index col ; /* a column index in the row to check */
1578 Index head_column ; /* first column in hash bucket or degree list */
1579 Index first_col ; /* first column in hash bucket */
1581 /* === Consider each column in the row ================================== */
1593 /* get hash number for this column */
1597 /* === Get the first column in this hash bucket ===================== */
1609 /* === Consider each column in the hash bucket ====================== */
1618 /* prev_c is the column preceding column c in the hash bucket */
1712 colamd_col<Index> Col [], /* column info */
1723 Index c ; /* a column index */
1724 Index length ; /* length of a row or column */
1735 /* move and compact the column */
1765 /* save first column index in Row [r].shared2.first_column */
1788 /* restore first column index */