Macaulay2 Engine
Loading...
Searching...
No Matches
polynom.hpp File Reference

BIBasis::Polynom<MonomType> — linked-list F_2[x] polynomial with symmetric-difference arithmetic. More...

#include <iostream>
#include "allocator.hpp"

Go to the source code of this file.

Classes

class  BIBasis::Polynom< MonomType >

Namespaces

namespace  BIBasis

Variables

template<typename MonomType>
FastAllocator BIBasis::Polynom< MonomType >::Allocator (sizeof(Polynom< MonomType >))
template<typename MonomType>
MonomType BIBasis::Polynom< MonomType >::UniteMonom

Detailed Description

BIBasis::Polynom<MonomType> — linked-list F_2[x] polynomial with symmetric-difference arithmetic.

Note
AI-generated documentation. Verify against the source before relying on it.

Declares and defines the polynomial value type used throughout the involutive-basis engine. Terms are kept as a singly-linked MonomType* list sorted highest-first under the chosen ordering, with no coefficients stored — the ground field is F_2, so addition is symmetric difference and multiplication is monomial-pair merging with the squarefree relation x_i^2 = x_i collapsing repeats. Each Polynom instance allocates from a per-MonomType static FastAllocator, since the prolongation loop creates and destroys millions of short-lived polynomials.

The arithmetic surface is built around operator+= / *= / MergeWith (the in-place XOR merge used by Reduction and HeadReduction) plus Lm, RidOfLm, and a binary-search Find for locating a specific monomial. Templated on MonomType so MonomLex, MonomDL, and MonomDRL each get their own monomorphised arithmetic kernel; the engine's general Poly type is intentionally bypassed here to keep the Boolean-ring inner loop free of coefficient and packed-monomial overhead.

See also
monom.hpp
allocator.hpp
involutive.hpp

Definition in file polynom.hpp.