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

◆ reduce_gen()

void res_comp::reduce_gen ( resterm *& f) const
private

Definition at line 844 of file res-a1.cpp.

845{
848
849 res_pair *q;
850 ring_elem rg;
851 Bag *b;
852
853 while (f != nullptr)
854 {
855 M->divide(f->monom, f->comp->base_monom, REDUCE_mon);
856 M->to_expvector(REDUCE_mon, REDUCE_exp);
857 if (find_ring_divisor(REDUCE_exp, rg))
858 {
859 // Subtract off f, leave fsyz alone
860 Nterm *r = rg;
861 M->divide(f->monom, r->monom, REDUCE_mon);
862 R->ring_subtract_multiple_to(f, f->coeff, REDUCE_mon, f->comp, rg);
863 }
864 else if (search_mi[f->comp->me]->search_expvector(REDUCE_exp, b))
865 {
866 q = reinterpret_cast<res_pair *>(b->basis_ptr());
867 M->divide(f->monom, q->syz->monom, REDUCE_mon);
868 R->subtract_multiple_to(f, f->coeff, REDUCE_mon, q->syz);
869 }
870 else
871 break; // MES: possibly auto reduce further...
872 }
873}
exponents::Exponents exponents_t
void * basis_ptr() const
Definition int-bag.hpp:67
size_t exp_size
Definition res-a1.hpp:114
const Monoid * M
Definition res-a1.hpp:80
res_poly * R
Definition res-a1.hpp:79
int find_ring_divisor(const_exponents exp, ring_elem &result) const
Definition res-a1.cpp:710
size_t monom_size
Definition res-a1.hpp:115
resterm * syz
int * base_monom
#define monomial
Definition gb-toric.cpp:11
int_bag Bag
Definition int-bag.hpp:70
#define ALLOCATE_EXPONENTS(byte_len)
Definition monoid.hpp:62
#define ALLOCATE_MONOMIAL(byte_len)
Definition monoid.hpp:65
int monom[1]
Definition ringelem.hpp:160
res_pair * comp
ring_elem coeff
int monom[1]

References ALLOCATE_EXPONENTS, ALLOCATE_MONOMIAL, res_pair::base_monom, int_bag::basis_ptr(), resterm::coeff, resterm::comp, exp_size, find_ring_divisor(), M, res_pair::me, Nterm::monom, resterm::monom, monom_size, monomial, R, and res_pair::syz.

Referenced by handle_gen().