use crate::lu::lu::*;
pub(crate) fn garbage_perm(lu: &mut LU) {
let m = lu.m;
let pivotlen = lu.pivotlen;
let pivotcol = &mut pivotcol!(lu);
let pivotrow = &mut pivotrow!(lu);
let marked = &mut marked!(lu);
if pivotlen > m {
lu.marker += 1;
let marker = lu.marker;
let mut put = pivotlen;
for get in (0..pivotlen).rev() {
if marked[pivotcol[get as usize] as usize] != marker {
let j = pivotcol[get as usize];
marked[j as usize] = marker;
put -= 1;
pivotcol[put as usize] = j;
pivotrow[put as usize] = pivotrow[get as usize];
}
}
assert_eq!(put + m, pivotlen);
pivotcol.copy_within((put as usize)..(put + m) as usize, 0);
pivotrow.copy_within((put as usize)..(put + m) as usize, 0);
lu.pivotlen = m;
}
}