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

◆ F4Computation()

F4Computation::F4Computation ( const VectorArithmetic * VA,
const Matrix * m,
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 )

Definition at line 76 of file f4-computation.cpp.

85 : mFreeModule(m->rows()),
87{
89
90 std::vector<int> heftDegrees = M2_arrayint_to_stdvector<int> (gb_weights);
91 std::vector<int> moduleHeftDegrees;
92 for (int j = 0; j < mFreeModule->rank(); ++j)
93 {
94 moduleHeftDegrees.push_back(mFreeModule->primary_degree(j));
95
96 }
97 mMonoid = new MonomialInfo(mOriginalRing->n_vars(),
98 mOriginalRing->getMonoid()->getMonomialOrdering(),
99 heftDegrees,
100 moduleHeftDegrees);
101
102 if (m->n_rows() >= 2)
103 {
104 if (mMonoid->componentLocation() != -1 or
105 mMonoid->positionUp() != 1)
106 {
107 delete mMonoid;
108 throw exc::engine_error("must use Position=>Up at end of monomial order for Algorithm=>LinearAlgebra groebner basis");
109 }
110 }
111
112 mF4GB = new F4GB(mVectorArithmetic,
113 mMonoid,
114 m->rows(),
115 collect_syz,
116 n_rows_to_keep,
117 gb_weights,
118 strategy,
119 use_max_degree,
120 max_degree,
121 numThreads);
122
124 mF4GB->new_generators(0, m->n_cols() - 1);
125}
const PolynomialRing * mOriginalRing
const VectorArithmetic * mVectorArithmetic
const FreeModule * mFreeModule
MonomialInfo * mMonoid
static void from_M2_matrix(const VectorArithmetic *VA, const MonomialInfo *MI, const Matrix *m, gb_array &result_polys)
const Ring * get_ring() const
Definition matrix.hpp:134
int n_cols() const
Definition matrix.hpp:147
int n_rows() const
Definition matrix.hpp:146
const FreeModule * rows() const
Definition matrix.hpp:144
virtual const PolynomialRing * cast_to_PolynomialRing() const
Definition ring.hpp:243
std::vector< T > M2_arrayint_to_stdvector(M2_arrayint arr)
Definition util.hpp:96

References F4toM2Interface::from_M2_matrix(), Matrix::get_ring(), M2_arrayint_to_stdvector(), Matrix, mF4GB, mFreeModule, mMonoid, mOriginalRing, mVectorArithmetic, Matrix::n_cols(), Matrix::n_rows(), and Matrix::rows().