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

◆ operator*=() [1/2]

const MonomDL & BIBasis::MonomDL::operator*= ( const MonomDL & anotherMonom)
inline

Definition at line 271 of file monomDL.hpp.

272 {
273 if (!ListHead)
274 {
275 *this = anotherMonom;
276 }
277 else
278 {
279 if (anotherMonom.ListHead)
280 {
281 VarsListNode **iterator = &ListHead,
282 *anotherIterator = anotherMonom.ListHead;
283
284 while (*iterator && anotherIterator)
285 {
286 if ((*iterator)->Value == anotherIterator->Value)
287 {
288 iterator = &((*iterator)->Next);
289 anotherIterator = anotherIterator->Next;
290 }
291 else if ((*iterator)->Value < anotherIterator->Value)
292 {
293 iterator = &((*iterator)->Next);
294 }
295 else
296 {
297 VarsListNode* newNode = new VarsListNode();
298 newNode->Value = anotherIterator->Value;
299 newNode->Next = *iterator;
300 *iterator = newNode;
301 ++TotalDegree;
302
303 iterator = &(newNode->Next);
304 anotherIterator = anotherIterator->Next;
305 }
306 }
307
308 while (anotherIterator)
309 {
310 *iterator = new VarsListNode();
311 (*iterator)->Value = anotherIterator->Value;
312 ++TotalDegree;
313
314 iterator = &((*iterator)->Next);
315 anotherIterator = anotherIterator->Next;
316 }
317 }
318 }
319
320 return *this;
321 }
Integer TotalDegree
Definition monom.hpp:106
VarsListNode * ListHead
Definition monom.hpp:105
Singly linked-list node of a Monom's variable list, with a per-class slab allocator.
Definition monom.hpp:94

References BIBasis::Monom::ListHead, MonomDL(), BIBasis::Monom::VarsListNode::Next, operator*=(), BIBasis::Monom::TotalDegree, and BIBasis::Monom::VarsListNode::Value.