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

◆ top_coefficients()

Matrix * Matrix::top_coefficients ( Matrix *& monoms) const

Definition at line 994 of file matrix.cpp.

995{
996 const PolynomialRing *R = get_ring()->cast_to_PolynomialRing();
997 if (R == nullptr)
998 {
999 ERROR("expected polynomial ring");
1000 return nullptr;
1001 }
1003 MatrixConstructor cons_monoms(R->make_FreeModule(1), 0);
1004 for (int i = 0; i < n_cols(); i++)
1005 {
1006 int var, exp;
1007 vec u = elem(i);
1008 vec v = R->vec_top_coefficient(u, var, exp);
1009 result.append(v);
1010 if (v == nullptr)
1011 cons_monoms.append(v);
1012 else
1013 {
1014 ring_elem b;
1015 if (var < R->n_vars())
1016 {
1017 ring_elem a = R->var(var);
1018 b = R->power(a, exp);
1019 }
1020 else
1021 {
1022 b = R->from_long(1);
1023 }
1024 vec w = R->make_vec(0, b);
1025 cons_monoms.append(w);
1026 }
1027 }
1028 monoms = cons_monoms.to_matrix();
1029 return result.to_matrix();
1030}
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
virtual ring_elem var(int v) const =0
virtual vec vec_top_coefficient(const vec v, int &var, int &exp) const =0
virtual FreeModule * make_FreeModule() const
Definition ring.cpp:53
vec make_vec(int r, ring_elem a) const
Definition ring-vecs.cpp:60
virtual ring_elem from_long(long n) const =0
virtual const PolynomialRing * cast_to_PolynomialRing() const
Definition ring.hpp:243
virtual ring_elem power(const ring_elem f, mpz_srcptr n) const
Exponentiation. This is the default function, if a class doesn't define this.
Definition ring.cpp:109
const int ERROR
Definition m2-mem.cpp:55
VALGRIND_MAKE_MEM_DEFINED & result(result)
const mpreal exp(const mpreal &x, mp_rnd_t r=mpreal::get_default_rnd())
Definition mpreal.h:2298

References MatrixConstructor::append(), elem(), ERROR, Ring::from_long(), get_ring(), Ring::make_FreeModule(), Ring::make_vec(), Matrix(), MatrixConstructor, n_cols(), Ring::power(), result(), rows(), MatrixConstructor::to_matrix(), top_coefficients(), PolynomialRing::var(), and PolynomialRing::vec_top_coefficient().

Referenced by rawTopCoefficients(), and top_coefficients().