1 // -*- c++ -*-
2 //*****************************************************************************
3 /** @file DegOrderHelper.h
4  *
5  * @author Michael Brickenstein
6  * @date 2011-06-30
7  *
8  * This file includes the definition of the class @c DegOrderHelper.
9  *
10  * @par Copyright:
11  *   (c) 2006-2010 by The PolyBoRi Team
12  *
13 **/
14 //*****************************************************************************
15 
16 #ifndef polybori_groebner_DegOrderHelper_h_
17 #define polybori_groebner_DegOrderHelper_h_
18 
19 // include basic definitions
20 #include "groebner_defs.h"
21 #include "ReductionStrategy.h"
22 #include "add_up.h"
23 
24 BEGIN_NAMESPACE_PBORIGB
25 
26 /** @class DegOrderHelper
27  * @brief This class defines DegOrderHelper.
28  *
29  **/
30 class DegOrderHelper{
31     public:
irreducible_lead(const Monomial & m,const ReductionStrategy & strat)32     static bool irreducible_lead(const Monomial& m, const ReductionStrategy& strat){
33       return PBORINAME::groebner::irreducible_lead(m,strat);
34           }
begin(const Polynomial & p)35     static Polynomial::ordered_iterator begin(const Polynomial & p){
36         return p.orderedBegin();
37     }
end(const Polynomial & p)38     static Polynomial::ordered_iterator end(const Polynomial & p){
39         return p.orderedEnd();
40     }
nf(const ReductionStrategy & strat,const Polynomial & p,const Monomial & m)41     static Polynomial nf(const ReductionStrategy& strat, const Polynomial& p, const Monomial& m){
42         return nf3_degree_order(strat,p,m);
43     }
44     typedef Polynomial::ordered_iterator iterator_type;
45     const static bool isDegreeOrder=true;
46     const static bool isLexicographicalOrder=false;
knowRestIsIrreducible(const iterator_type & it,const ReductionStrategy & strat)47     static bool knowRestIsIrreducible(const iterator_type& it, const ReductionStrategy & strat){
48       return false;
49     }
sum_range(std::vector<Monomial> & vec,iterator_type it,iterator_type end,Polynomial init)50     static Polynomial sum_range(std::vector<Monomial>& vec,iterator_type it, iterator_type end, Polynomial init){
51       return add_up_generic(vec, init);
52       }
53 
54 };
55 
56 END_NAMESPACE_PBORIGB
57 
58 #endif /* polybori_DegOrderHelper_h_ */
59