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

◆ remove_scalar_multiples()

Matrix * Matrix::remove_scalar_multiples ( ) const

Definition at line 1437 of file matrix.cpp.

1438{
1439 bool keep;
1440 auto R = get_ring();
1442 for (int i = 0; i < n_cols(); i++)
1443 {
1444 vec f = elem(i);
1445 if (f == nullptr) continue;
1446 keep = true;
1447 for (int j = i + 1; j < n_cols(); j++)
1448 {
1449 vec g = elem(j);
1450 if (g == nullptr) continue;
1451 if (R->vec_is_scalar_multiple(f, g))
1452 {
1453 keep = false;
1454 break;
1455 }
1456 }
1457 if (keep) result.append(R->copy_vec(f));
1458 }
1459 return result.to_matrix();
1460}
const Ring * get_ring() const
Definition matrix.hpp:134
ring_elem elem(int i, int j) const
Definition matrix.cpp:307
friend class MatrixConstructor
Definition matrix.hpp:76
int n_cols() const
Definition matrix.hpp:147
const FreeModule * rows() const
Definition matrix.hpp:144
VALGRIND_MAKE_MEM_DEFINED & result(result)

References elem(), get_ring(), Matrix(), MatrixConstructor, n_cols(), remove_scalar_multiples(), result(), and rows().

Referenced by minimal_lead_terms(), rawRemoveScalarMultiples(), and remove_scalar_multiples().