/*! @file mark_relax.c * \brief Record the rows pivoted by the relaxed supernodes. * *
 * -- SuperLU routine (version 4.0) --
 * Lawrence Berkeley National Laboratory
 * June 1, 2009
 * <\pre>
 */
#include "slu_ddefs.h"

/*! \brief
 *
 * 
 * Purpose
 * =======
 *    mark_relax() - record the rows used by the relaxed supernodes.
 * 
*/ int mark_relax( int n, /* order of the matrix A */ int *relax_end, /* last column in a relaxed supernode. * if j-th column starts a relaxed supernode, * relax_end[j] represents the last column of * this supernode. */ int *relax_fsupc, /* first column in a relaxed supernode. * relax_fsupc[j] represents the first column of * j-th supernode. */ int *xa_begin, /* Astore->colbeg */ int *xa_end, /* Astore->colend */ int *asub, /* row index of A */ int *marker /* marker[j] is the maximum column index if j-th * row belongs to a relaxed supernode. */ ) { register int jcol, kcol; register int i, j, k; for (i = 0; i < n && relax_fsupc[i] != EMPTY; i++) { jcol = relax_fsupc[i]; /* first column */ kcol = relax_end[jcol]; /* last column */ for (j = jcol; j <= kcol; j++) for (k = xa_begin[j]; k < xa_end[j]; k++) marker[asub[k]] = jcol; } return i; }