Macaulay2 Engine
Loading...
Searching...
No Matches
F4GB Class Reference

Commutative F4 Groebner-basis driver: degree-by-degree Macaulay matrix construction plus row-reduction over a coefficient ring. More...

#include <f4.hpp>

Inheritance diagram for F4GB:
our_new_delete

Classes

struct  MacaulayMatrixStats
 Per-degree counters describing the shape and density of the Macaulay matrix that F4GB just built. More...

Public Member Functions

 F4GB (const VectorArithmetic *VA, const MonomialInfo *MI, const FreeModule *F, M2_bool collect_syz, int n_rows_to_keep, M2_arrayint gb_weights, int strategy, M2_bool use_max_degree, int max_degree, int numThreads)
 ~F4GB ()
void set_generators (gb_array &new_gens)
void new_generators (int lo, int hi)
const gb_arrayget_generators () const
gb_arrayget_generators ()
const gb_arrayget_gb () const
gb_arrayget_gb ()
void set_hilbert_function (const RingElement *hf)
enum ComputationStatusCode start_computation (StopConditions &stop_)
void show_gb_array (const gb_array &g) const
void show_row_info () const
void show_column_info () const
void show_matrix ()
void show_new_rows_matrix ()

Private Member Functions

MacaulayMatrixStats macaulayMatrixStats () const
void delete_gb_array (gb_array &g)
void test_spair_code ()
enum ComputationStatusCode computation_is_complete (StopConditions &stop_)
void do_spairs ()
void make_matrix ()
void reset_matrix ()
void clear_matrix ()
int new_column (packed_monomial m)
int find_or_append_column (packed_monomial m)
int mult_monomials (packed_monomial m, packed_monomial n)
void load_gen (int which)
void load_row (packed_monomial monom, int which)
void process_column (int c)
void loadSPairRow (spair *p)
void loadReducerRow (spair *p)
void process_s_pair (spair *p)
void reorder_columns ()
void reorder_rows ()
const ElementArrayget_coeffs_array (row_elem &r)
bool is_new_GB_row (int row) const
bool is_pivot_row (int index) const
void gauss_reduce (bool diagonalize)
bool gauss_reduce_row (int index, ElementArray &gauss_row)
void tail_reduce ()
void row_to_dense_row (int r, int &first, int &last)
void subtract1 (int r, int &first, int &last)
void reduce1 (int r, int &first, int &last)
void dense_row_to_row (int r, int &first, int &last)
void new_GB_elements ()
void insert_gb_element (row_elem &r)
void poly_set_degrees (const GBF4Polynomial &f, int &deg_result, int &alpha) const

Private Attributes

const VectorArithmeticmVectorArithmetic
const MonomialInfomMonomialInfo
const FreeModulemFreeModule
M2_arrayint mWeights
M2_arrayint component_degrees
long n_lcmdups
long n_pairs_computed
long n_reduction_steps
int n_gens_left
int n_subring
int complete_thru_this_degree
int this_degree
bool is_ideal
HilbertControllerhilbert
gb_array mGenerators
gb_array mGroebnerBasis
MonomialLookupTable mLookupTable
int next_col_to_process
coefficient_matrixmat
MonomialHashTable< MonomialInfomMonomialHashTable
F4MemoryBlock< monomial_wordmMonomialMemoryBlock
monomial_wordnext_monom
MemoryBlock mComponentSpace
double clock_sort_columns
clock_t clock_gauss
double mGaussTime
double mParallelGaussTime
double mSerialGaussTime
double mTailReduceTime
double mNewSPairTime
double mInsertGBTime
clock_t clock_make_matrix
F4SPairSet mSPairSet

Additional Inherited Members

Static Public Member Functions inherited from our_new_delete
static void * operator new (size_t size)
static void * operator new[] (size_t size)
static void operator delete (void *obj)
static void operator delete[] (void *obj)
static void * operator new (size_t size, void *existing_memory)
static void * operator new[] (size_t size, void *existing_memory)
static void operator delete (void *obj, void *existing_memory)
static void operator delete[] (void *obj, void *existing_memory)

Detailed Description

Commutative F4 Groebner-basis driver: degree-by-degree Macaulay matrix construction plus row-reduction over a coefficient ring.

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

Holds the running GB (mGroebnerBasis), the original generators (mGenerators), and the monomial lookup table for divisor search. Each degree, the driver picks up the pending S-pairs, builds a coefficient_matrix (mat) whose rows are S-pair reductions plus their tail-reducers and whose columns are the distinct monomials appearing, sorts the columns under the MonomialInfo order, and row-reduces via mVectorArithmetic. Optional HilbertController *hilbert skips reductions whose result the Hilbert function predicts to be zero. Tracks a wide set of timing / counter statistics (clock_sort_columns, mGaussTime, n_pairs_computed, ...) for the benchmark hooks.

Definition at line 153 of file f4.hpp.


The documentation for this class was generated from the following files: