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

◆ Insert()

template<typename MonomType>
void BIBasis::JanetTree< MonomType >::Insert ( Triple< MonomType > * triple)

Definition at line 374 of file janettree.hpp.

375 {
376 if (!triple)
377 {
378 return;
379 }
380
381 typename MonomType::Integer degree = triple->GetPolynomLm().Degree();
383
384 if (!Root)
385 {
386 nodeIterator.Build(degree, 0, triple);
387 }
388 else
389 {
390 typename MonomType::Integer var = 0;
391 do
392 {
393 while(nodeIterator.GetDegree() < triple->GetPolynomLm()[var] && nodeIterator.HasNextDegree())
394 {
395 nodeIterator.StepNextDegree();
396 }
397
398 if (nodeIterator.GetDegree() > triple->GetPolynomLm()[var])
399 {
400 nodeIterator.Build(degree, var, triple);
401 break;
402 }
403 else if (nodeIterator.GetDegree() == triple->GetPolynomLm()[var])
404 {
405 degree -= triple->GetPolynomLm()[var];
406 ++var;
407 nodeIterator.StepNextVariable();
408 }
409 else
410 {
411 nodeIterator.StepNextDegree();
412 nodeIterator.Build(degree, var, triple);
413 break;
414 }
415 } while(true);
416 }
417 }

References BIBasis::JanetTree< MonomType >::Iterator::Build(), BIBasis::JanetTree< MonomType >::Iterator::GetDegree(), BIBasis::Triple< MonomType >::GetPolynomLm(), BIBasis::JanetTree< MonomType >::Iterator::HasNextDegree(), Root, BIBasis::JanetTree< MonomType >::Iterator::StepNextDegree(), and BIBasis::JanetTree< MonomType >::Iterator::StepNextVariable().