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

◆ gbvector_mult_by_term()

gbvector * WeylAlgebra::gbvector_mult_by_term ( gbvectorHeap & result,
const gbvector * f,
const ring_elem c,
const_monomial m,
int comp ) const

Definition at line 541 of file weylalg.cpp.

548{
549 int *top_derivative = newarray_atomic(int, _nderivatives);
550 int *current_derivative = newarray_atomic_clear(int, _nderivatives);
552
553 GBRing *GR = result.get_gb_ring();
554 const FreeModule *F = result.get_freemodule();
555 M_->to_expvector(m, expf);
556 extractDerivativePart(expf, top_derivative);
557 // Loop over each current_derivative <= top_derivative.
558 do
559 {
560 ring_elem d =
561 multinomial(c, top_derivative, current_derivative); // in K_
562 gbvector *h =
563 gbvector_weyl_diff(GR, d, comp, expf, current_derivative, F, f);
564 K_->remove(d);
565 result.add(h);
566 }
567 while (increment(current_derivative, top_derivative));
568
569 freemem(expf);
570 freemem(top_derivative);
571 freemem(current_derivative);
572 return result.value();
573}
exponents::Exponents exponents_t
friend class FreeModule
Definition poly.hpp:66
const Ring * K_
Definition polyring.hpp:123
const Monoid * M_
Definition polyring.hpp:124
gbvector * gbvector_weyl_diff(GBRing *GR, const ring_elem c, int comp, const_exponents expf, const int *derivatives, const FreeModule *Fg, const gbvector *g) const
Definition weylalg.cpp:456
ring_elem multinomial(const ring_elem a, const_exponents exptop, const_exponents expbottom) const
void extractDerivativePart(const_exponents exp, int *result) const
Definition weylalg.cpp:290
int _nderivatives
Definition weylalg.hpp:62
bool increment(int *current_derivative, const int *top_derivative) const
Definition weylalg.cpp:273
void freemem(void *s)
Definition m2-mem.cpp:103
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define newarray_atomic_clear(T, len)
Definition newdelete.hpp:93
#define newarray_atomic(T, len)
Definition newdelete.hpp:91

References _nderivatives, extractDerivativePart(), freemem(), PolyRing::FreeModule, gbvector_weyl_diff(), increment(), PolynomialRing::K_, PolynomialRing::M_, multinomial(), newarray_atomic, newarray_atomic_clear, PolynomialRing::nvars_, and result().