keep track of number of Bernoulli sums
[barvinok.git] / zsolve / valuetrees.h
blobc3c2ff3fe36b2194e59fe8d3f5123e9ae9797984
1 /*
2 4ti2 -- A software package for algebraic, geometric and combinatorial
3 problems on linear spaces.
5 Copyright (C) 2006 4ti2 team.
6 Main author(s): Matthias Walter.
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 as published by the Free Software Foundation; either version 2
11 of the License, or (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23 #ifndef _VALUETREES_H
24 #define _VALUETREES_H
26 #include "libzsolve.h"
28 #include "defs.h"
29 #include "vectorarray.h"
30 #include "indexarray.h"
31 #include "cputime.h"
33 // computation data, non-static for thread-safety
35 typedef struct valuetreenode_t
37 int value;
38 struct valuetree_t *sub;
39 struct valuetreenode_t *next;
40 } valuetreenode_t;
41 typedef valuetreenode_t *ValueTreeNode;
43 typedef struct valuetree_t
45 int level;
46 struct valuetreenode_t *pos;
47 struct valuetreenode_t *neg;
48 struct valuetree_t *zero;
49 IndexArray vectors;
50 } valuetree_t;
51 typedef valuetree_t *ValueTree;
53 void createValueTrees(ZSolveContext);
54 void deleteValueTrees(ZSolveContext);
55 void completeValueTrees(ZSolveContext, int, int);
58 #endif