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