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

◆ eval()

ring_elem PolyRing::eval ( const RingMap * map,
const ring_elem f,
int first_var ) const
virtual

Implements Ring.

Definition at line 1346 of file poly.cpp.

1349{
1350 // The way we collect the result depends on whether the target ring
1351 // is a polynomial ring: if so, use a heap structure. If not, just add to the
1352 // result.
1353 gc_vector<int> vp;
1354 const Ring *target = map->get_ring();
1355 SumCollector *H = target->make_SumCollector();
1356
1357 for (Nterm& t : f)
1358 {
1359 M_->to_varpower(t.monom, vp);
1360 H->add(map->eval_term(K_, t.coeff, vp.data(), first_var, n_vars()));
1361 }
1362 ring_elem result = H->getValue();
1363 delete H;
1364 return result;
1365}
const Ring * K_
Definition polyring.hpp:123
const Monoid * M_
Definition polyring.hpp:124
int n_vars() const
Definition polyring.hpp:196
Ring()
Definition ring.hpp:136
virtual SumCollector * make_SumCollector() const
Definition ring.cpp:486
const Ring * get_ring() const
Definition ringmap.hpp:111
ring_elem eval_term(const Ring *coeff_ring, const ring_elem coeff, const int *vp, int first_var, int nvars_in_source) const
Definition ringmap.cpp:140
virtual ring_elem getValue()=0
virtual void add(ring_elem f)=0
VALGRIND_MAKE_MEM_DEFINED & result(result)

References SumCollector::add(), RingMap::eval_term(), RingMap::get_ring(), SumCollector::getValue(), PolynomialRing::K_, PolynomialRing::M_, Ring::make_SumCollector(), PolynomialRing::n_vars(), result(), and Ring::Ring().

Referenced by sagbi::subduct(), and sagbi::subduct1().