Macaulay2 Engine
Loading...
Searching...
No Matches

◆ column_permute()

template<typename CoeffRing>
bool SMat< CoeffRing >::column_permute ( size_t start_col,
M2_arrayint perm )

Definition at line 1032 of file smat.hpp.

1033{
1034 size_t ncols_to_permute = perm->len;
1035 bool *done = newarray_atomic(bool, ncols_to_permute);
1037 for (size_t i = 0; i < ncols_to_permute; i++) done[i] = true;
1038 for (size_t i = 0; i < ncols_to_permute; i++)
1039 {
1040 size_t j = perm->array[i];
1041 if (!done[j])
1042 {
1043 ERROR("expected permutation");
1044 freemem(done);
1045 return false;
1046 }
1047 done[j] = false;
1048 }
1049 for (size_t i = 0; i < ncols_to_permute; i++)
1050 tmpvecs[i] = columns_[start_col + perm->array[i]];
1051 for (size_t i = 0; i < ncols_to_permute; i++)
1054 freemem(done);
1055 return true;
1056}
sparsevec ** columns_
Definition smat.hpp:234
Definition smat.hpp:43
void freemem(void *s)
Definition m2-mem.cpp:103
const int ERROR
Definition m2-mem.cpp:55
#define newarray(T, len)
Definition newdelete.hpp:82
#define newarray_atomic(T, len)
Definition newdelete.hpp:91

References columns_, ERROR, freemem(), newarray, and newarray_atomic.

Referenced by MatElementaryOps< SMat< RT > >::column_permute().