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

◆ split_off_content()

const Matrix * Matrix::split_off_content ( const Matrix *& result) const

Definition at line 2043 of file matrix.cpp.

2045{
2046 const Ring *R = get_ring();
2047 const PolynomialRing *P = R->cast_to_PolynomialRing();
2048 const Ring *targetR = (P == nullptr ? R : P->getCoefficients());
2049
2050 const FreeModule *F = targetR->make_FreeModule(1);
2051 MatrixConstructor mat_content(F, n_cols());
2053
2054 for (int i = 0; i < n_cols(); i++)
2055 {
2056 vec g;
2057 ring_elem c = R->vec_split_off_content(elem(i), g);
2058 mat_content.set_entry(0, i, c);
2059 mat.set_column(i, g);
2060 }
2061 result = mat.to_matrix();
2062 return mat_content.to_matrix();
2063}
friend class FreeModule
Definition matrix.hpp:73
const_monomial degree_shift() const
Definition matrix.hpp:149
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
const FreeModule * cols() const
Definition matrix.hpp:145
virtual const Ring * getCoefficients() const
Definition polyring.hpp:277
virtual FreeModule * make_FreeModule() const
Definition ring.cpp:53
virtual const PolynomialRing * cast_to_PolynomialRing() const
Definition ring.hpp:243
ring_elem vec_split_off_content(vec f, vec &result) const
VALGRIND_MAKE_MEM_DEFINED & result(result)

References Ring::cast_to_PolynomialRing(), cols(), degree_shift(), elem(), FreeModule, get_ring(), PolynomialRing::getCoefficients(), Ring::make_FreeModule(), Matrix(), MatrixConstructor, n_cols(), result(), rows(), MatrixConstructor::set_column(), MatrixConstructor::set_entry(), split_off_content(), MatrixConstructor::to_matrix(), and Ring::vec_split_off_content().

Referenced by auto_reduce(), rawMatrixSplitContent(), and split_off_content().