79 cholmod_sparse auxCholmodSparse;
85 auxCholmodSparse.nz = 0;
86 auxCholmodSparse.x = 0;
87 auxCholmodSparse.z = 0;
88 auxCholmodSparse.stype = 1;
89 auxCholmodSparse.xtype = CHOLMOD_PATTERN;
90 auxCholmodSparse.itype = CHOLMOD_INT;
91 auxCholmodSparse.dtype = CHOLMOD_DOUBLE;
92 auxCholmodSparse.sorted = 1;
93 auxCholmodSparse.packed = 1;
96 cholmod_amd(&auxCholmodSparse, NULL, 0, result, &
pImpl->cholmodCommon);
97 return amdStatus != 0;
118 cholmod_dense bcholmod;
119 bcholmod.nrow = bcholmod.d =
pImpl->cholmodSparse.nrow;
122 bcholmod.xtype = CHOLMOD_REAL;
123 bcholmod.dtype = CHOLMOD_DOUBLE;
124 cholmod_dense* xcholmod = cholmod_solve(CHOLMOD_A,
pImpl->cholmodFactor,
125 &bcholmod, &
pImpl->cholmodCommon);
126 std::memcpy(x, xcholmod->x,
127 sizeof(
double) * bcholmod.nrow);
128 cholmod_free_dense(&xcholmod, &
pImpl->cholmodCommon);
161 int change_status = cholmod_change_factor(
162 CHOLMOD_REAL, 1, 0, 1, 1,
pImpl->cholmodFactor, &
pImpl->cholmodCommon);
163 assert(
pImpl->cholmodFactor->is_ll && !
pImpl->cholmodFactor->is_super &&
164 pImpl->cholmodFactor->is_monotonic &&
165 "Cholesky factor has wrong format");
166 return change_status != 0;