protected static int CS_UNFLIP(int i) { return (((i) < 0) ? CS_FLIP(i) : (i)); }
protected static void CS_MARK(int[] w, int j) { w[j] = CS_FLIP(w[j]); }
elen[elen_offset + i] = -1; /* node i is dead */ nel++; Cp[i] = Dcs_util.CS_FLIP(n); nv[nv_offset + n]++; } else { Ci[p] = Dcs_util.CS_FLIP(j); /* first entry is now CS_FLIP(j) */ if ((j = Dcs_util.CS_FLIP(Ci[p++])) >= 0) /* found object j */ Cp[e] = Dcs_util.CS_FLIP(k); /* absorb e into k */ w[w_offset + e] = 0; /* e is now a dead element */ Cp[e] = Dcs_util.CS_FLIP(k); /* aggressive absorb. e.k */ w[w_offset + e] = 0; /* e is a dead element */ Cp[i] = Dcs_util.CS_FLIP(k); /* absorb i into k */ nvi = -nv[nv_offset + i]; Cp[j] = Dcs_util.CS_FLIP(i); /* absorb j into i */ nv[nv_offset + i] += nv[nv_offset + j]; nv[nv_offset + j] = 0; Cp[i] = Dcs_util.CS_FLIP(Cp[i]);/* fix assembly tree */ for (j = 0; j <= n; j++) head[head_offset + j] = -1;