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

◆ operator*=() [1/2]

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

Definition at line 273 of file monomLex.hpp.

274 {
275 if (!ListHead)
276 {
277 *this = anotherMonom;
278 }
279 else
280 {
281 if (anotherMonom.ListHead)
282 {
283 VarsListNode **iterator = &ListHead,
284 *anotherIterator = anotherMonom.ListHead;
285
286 while (*iterator && anotherIterator)
287 {
288 if ((*iterator)->Value == anotherIterator->Value)
289 {
290 iterator = &((*iterator)->Next);
291 anotherIterator = anotherIterator->Next;
292 }
293 else if ((*iterator)->Value < anotherIterator->Value)
294 {
295 iterator = &((*iterator)->Next);
296 }
297 else
298 {
299 VarsListNode* newNode = new VarsListNode();
300 newNode->Value = anotherIterator->Value;
301 newNode->Next = *iterator;
302 *iterator = newNode;
303 ++TotalDegree;
304
305 iterator = &(newNode->Next);
306 anotherIterator = anotherIterator->Next;
307 }
308 }
309
310 while (anotherIterator)
311 {
312 *iterator = new VarsListNode();
313 (*iterator)->Value = anotherIterator->Value;
314 ++TotalDegree;
315
316 iterator = &((*iterator)->Next);
317 anotherIterator = anotherIterator->Next;
318 }
319 }
320 }
321
322 return *this;
323 }
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, MonomLex(), BIBasis::Monom::VarsListNode::Next, operator*=(), BIBasis::Monom::TotalDegree, and BIBasis::Monom::VarsListNode::Value.