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

◆ NormalForm()

template<typename MonomType>
Polynom< MonomType > * BIBasis::BooleanInvolutiveBasis< MonomType >::NormalForm ( const Triple< MonomType > * triple) const
private

Definition at line 236 of file involutive.hpp.

237 {
238 /* As far as currentTriple can't be 0 (checked in QSET and TSET),
239 * no need to check for NULL pointer.
240 */
241
245
246 if (triple->GetVariable() == -1)
247 {
248 originalForm = new Polynom<MonomType>(*triple->GetPolynom());
249 }
250 else
251 {
252 originalForm = new Polynom<MonomType>(*triple->GetWeakAncestor()->GetPolynom());
253 (*originalForm) *= triple->GetVariable();
254 }
255
256 while (!originalForm->IsZero())
257 {
259 while (involutiveDivisor)
260 {
261 originalForm->HeadReduction(*involutiveDivisor->GetPolynom());
262 if (!originalForm->IsZero())
263 {
265 }
266 else
267 {
269 }
270 }
271
272 if (!originalForm->IsZero())
273 {
274 (*normalForm) += originalForm->Lm();
275 originalForm->RidOfLm();
276 }
277 }
278
279 delete originalForm;
280 return normalForm;
281 }
TSet< MonomType > IntermediateBasis

References BIBasis::Triple< MonomType >::GetPolynom(), BIBasis::Triple< MonomType >::GetVariable(), BIBasis::Triple< MonomType >::GetWeakAncestor(), BIBasis::Polynom< MonomType >::HeadReduction(), IntermediateBasis, BIBasis::Polynom< MonomType >::IsZero(), BIBasis::Polynom< MonomType >::Lm(), and BIBasis::Polynom< MonomType >::RidOfLm().

Referenced by ConstructInvolutiveBasis().