50 proxsuite::linalg::veg::tuplify,
154 proxsuite::linalg::veg::tuplify,
221 usize n = usize(ld.ncols());
222 bool id_perm = perm_inv ==
nullptr;
225 stack.make_new_for_overwrite(tag,
id_perm ? isize(0) :
w.nnz());
231 for (usize
k = 0;
k < usize(
w.nnz()); ++
k) {
232 usize
i = util::zero_extend(
w.row_indices()[
k]);
238 auto sx = util::sign_extend;
239 auto zx = util::zero_extend;
245 stack.make_new_for_overwrite(tag, isize(n - current_col));
247 stack.make_new_for_overwrite(tag, isize(n - current_col));
266 isize(
zx(ld.nnz_per_col()[isize(current_col)])) - 1,
275 isize(ld.nnz_per_col()[isize(current_col)]));
276 ld.nnz_per_col_mut()[isize(current_col)] = I(
new_current_col.len() + 1);
307 for (usize col =
first_col; col != usize(-1); col =
sx(
etree[isize(col)])) {
310 for (usize p = 0; p < usize(
w.nnz()); ++p) {
312 :
zx(perm_inv[
w.row_indices()[isize(p)]])] =
313 w.values()[isize(p)];
316 I
const*
pldi = ld.row_indices();
317 T*
pldx = ld.values_mut();
319 for (usize col =
first_col; col != usize(-1); col =
sx(
etree[isize(col)])) {
320 auto col_start = ld.col_start(col);
321 auto col_end = ld.col_end(col);
332 for (usize p = col_start + 1; p < col_end; ++p) {
333 usize
i = util::zero_extend(
pldi[p]);
auto merge_second_col_into_first(I *difference, T *first_values, I *first_ptr, PROXSUITE_MAYBE_UNUSED isize first_full_len, isize first_initial_len, Slice< I > second, proxsuite::linalg::veg::DoNotDeduce< I > ignore_threshold_inclusive, bool move_values, DynStackMut stack) noexcept(false) -> proxsuite::linalg::veg::Tuple< SliceMut< T >, SliceMut< I >, SliceMut< I > >
auto rank1_update(MatMut< T, I > ld, I *etree, I const *perm_inv, VecRef< T, I > w, proxsuite::linalg::veg::DoNotDeduce< T > alpha, DynStackMut stack) noexcept(false) -> MatMut< T, I >