1 #include <cstdlib>
2 #include <vector>
3 #include <fstream>
4 #ifdef _OPENMP
5 #include <omp.h>
6 #endif
7 using namespace std;
8 
9 #include "libnormaliz/libnormaliz.h"
10 
11 using namespace libnormaliz;
12 
13 typedef long long Integer;
14 
main(int argc,char * argv[])15 int main(int argc, char* argv[]) {
16     Matrix<Integer> First(24);  // =readMatrix<Integer>("first.mat");
17     Cone<Integer> MyCone(Type::inequalities, First);
18     MyCone.setVerbose(true);
19     MyCone.setFaceCodimBound(2);
20     MyCone.compute(ConeProperty::Dynamic, ConeProperty::FaceLattice);
21     Matrix<Integer> Second = readMatrix<Integer>("second.mat");
22     Second.pretty_print(cout);
23     MyCone.modifyCone(Type::inequalities, Second);
24     MyCone.compute(ConeProperty::FaceLattice);
25     Matrix<Integer> Facets = MyCone.getSupportHyperplanesMatrix();
26     MyCone.write_cone_output("MyConeAfterSecond");
27     map<dynamic_bitset, int> FL = MyCone.getFaceLattice();
28     auto FaceIt = FL.end();
29     FaceIt--;
30     dynamic_bitset Indicator = FaceIt->first;
31     cout << "Codim of last face " << FaceIt->second << endl;
32     cout << "Indicator of last face " << Indicator << endl;
33     size_t dim = MyCone.getEmbeddingDim();
34     Matrix<Integer> FaceEq(0, dim);
35     for (size_t i = 0; i < Indicator.size(); ++i) {
36         if (Indicator[i])
37             FaceEq.append(Facets[i]);
38     }
39     cout << "Equations of last face" << endl;
40     FaceEq.pretty_print(cout);
41     Cone<Integer> FaceCone(Type::inequalities, Facets, Type::equations, FaceEq);
42     FaceCone.compute(ConeProperty::ExtremeRays);
43     cout << " Extreme rays of last face " << endl;
44     FaceCone.getExtremeRaysMatrix().pretty_print(cout);
45     Matrix<Integer> Third = readMatrix<Integer>("third.mat");
46     MyCone.modifyCone(Type::equations, Third);
47     MyCone.setFaceCodimBound(1);
48     MyCone.compute(ConeProperty::FaceLattice);
49 
50     MyCone.write_cone_output("MyConeAfterThird");
51 }  // end main
52