168 pImpl->symbolicDecomposition =
static_cast<css*
>(cs_calloc(1,
sizeof(css)));
169 int n =
pImpl->ccsA.n;
170 pImpl->symbolicDecomposition->pinv = cs_pinv(permutation, n);
171 cs* C = cs_symperm(&
pImpl->ccsA,
pImpl->symbolicDecomposition->pinv, 0);
172 pImpl->symbolicDecomposition->parent = cs_etree(C, 0);
173 int* post = cs_post(
pImpl->symbolicDecomposition->parent, n);
174 int* c = cs_counts(C,
pImpl->symbolicDecomposition->parent, post, 0);
177 pImpl->symbolicDecomposition->cp =
178 static_cast<int*
>(cs_malloc(n + 1,
sizeof(
int)));
179 pImpl->symbolicDecomposition->unz =
pImpl->symbolicDecomposition->lnz =
180 cs_cumsum(
pImpl->symbolicDecomposition->cp, c, n);
182 if (
pImpl->symbolicDecomposition->lnz < 0) {
183 cs_sfree(
pImpl->symbolicDecomposition);
184 pImpl->symbolicDecomposition =
nullptr;
186 return pImpl->symbolicDecomposition !=
nullptr;