Gröbner basis project
Codebase for research into Gröbner basis computation
system_constants.hpp
1 #ifndef __CONSTANTS_HPP_
2 #define __CONSTANTS_HPP_
3 
4 /*****************************************************************************\
5 * This file is part of DynGB. *
6 * *
7 * DynGB is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 2 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * Foobar is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with DynGB. If not, see <http://www.gnu.org/licenses/>. *
19 \*****************************************************************************/
20 
23 #include <cstdint>
24 #include <gmpxx.h>
25 
26 // for coefficients
27 
28 #define COEF_TYPE int64_t
29 #define UCOEF_TYPE uint64_t
30 #define MPQCOEF_TYPE mpq_class
31 #define MPZCOEF_TYPE mpz_class
32 
33 // for monomials
34 #define EXP_TYPE uint32_t
35 #define NVAR_TYPE uint64_t
36 
37 // size of a degree
38 #define DEG_TYPE uint64_t
39 
40 // entries in a ray
41 #define RAYENT_TYPE uint64_t
42 
43 // entries in a constraint
44 #define CONSTR_TYPE int32_t
45 
46 // size of dot product
47 #define DOTPROD_TYPE int64_t
48 
49 // entries in a weighted monomial ordering -- needs to be the same as RAY_TYPE
50 #define WT_TYPE RAYENT_TYPE
51 
52 #endif