for (i = 0; i < m; i++) wi[i] = -1; /* unmark all rows for bfs */ cs_bfs(A, n, wi, wj, q, imatch, imatch_offset, jmatch, 0, 1); /* find C1, R1 from C0*/ ok = cs_bfs(A, m, wj, wi, p, jmatch, 0, imatch, imatch_offset, 3); /* find R3, C3 from R0*/ if (!ok) return (null); cs_unmatched(n, wj, q, cc, 0); /* unmatched set C0 */ cs_matched(n, wj, imatch, imatch_offset, p, q, cc, rr, 1, 1); /* set R1 and C1 */ cs_matched(n, wj, imatch, imatch_offset, p, q, cc, rr, 2, -1); /* set R2 and C2 */ cs_matched(n, wj, imatch, imatch_offset, p, q, cc, rr, 3, 3); /* set R3 and C3 */ cs_unmatched(m, wi, p, rr, 3); /* unmatched set R0 */ jmatch = null;
Dcsd D = Dcs_dmperm.cs_dmperm(dcs, 1); /* check if matrix is singular */ if (D != null && D.rr[3] < n) { isNonSingular = false;
Dcsd D = Dcs_dmperm.cs_dmperm(dcs, 1); /* check if matrix is singular */ if (D != null && D.rr[3] < n) { isNonSingular = false;