4
#include "gfanapplication.h"
6
#include "latticeideal.h"
10
#define NAME "test4ti2"
12
class FrobeniusApplication : public GFanApplication
14
IntegerVectorList readFile(char *filename)
16
FILE *f=fopen(filename,"r");
19
IntegerVectorList v=F.parseIntegerVectorList4ti2();
23
IntegerVector remainder(IntegerVector v, const IntegerVectorList &l)
25
// AsciiPrinter(Stderr).printVectorList(l);
26
// AsciiPrinter(Stderr).printVector(v);
30
for(IntegerVectorList::const_iterator i=l.begin();i!=l.end();i++)
46
// AsciiPrinter(Stderr).printVector(v);
48
// AsciiPrinter(Stderr).printVector(v);
51
bool isRepresentable(IntegerVector c, IntegerVector const &a, IntegerVectorList const &G)
57
while(c[i]<0){c[i]+=a[k];c[k]-=a[i];}
59
IntegerVector m=remainder(c,G);
60
AsciiPrinter(Stderr).printVector(m);
62
AsciiPrinter(Stderr).printVector(m);
65
void checkRepresentable(IntegerVector c, IntegerVector const &a, IntegerVectorList const &G)
67
fprintf(Stderr,"Is representable: %i",dot(c,a));
68
AsciiPrinter(Stderr).printVector(c);
69
AsciiPrinter(Stderr).printInteger(isRepresentable(c,a,G));
73
void isLatticeFree(IntegerVector v, IntegerVector const &a, IntegerMatrix const &AM, IntegerVector const &G);
78
bool includeInDefaultInstallation()
82
FrobeniusApplication()
94
IntegerVectorList A=readFile(NAME);
95
IntegerVector a=*(A.begin());
96
IntegerVectorList L=readFile(NAME".lat");
97
IntegerVectorList G=readFile(NAME".gro");
98
IntegerMatrix AM=rowsToIntegerMatrix(G);
100
/* IntegerVectorList ivl=P.parseIntegerVectorList();
101
IntegerMatrix A=rowsToIntegerMatrix(ivl);
103
IntegerVectorList b=latticeIdealRevLex(A);
106
for(IntegerVectorList::const_iterator i=b.begin();i!=b.end();i++)
107
g.push_back(integerVectorToBinomial(*i));
109
// AsciiPrinter(Stdout).printPolynomialSet(g);
112
checkRepresentable(StringParser("(1,1,-1)").parseIntegerVector(),a,G);
113
checkRepresentable(StringParser("(1,-1,1)").parseIntegerVector(),a,G);
114
checkRepresentable(StringParser("(1,1,1)").parseIntegerVector(),a,G);
115
checkRepresentable(StringParser("(-1,1,-1)").parseIntegerVector(),a,G);
116
checkRepresentable(StringParser("(3,2,-1)").parseIntegerVector(),a,G);
118
checkRepresentable(StringParser("(1,4,-1)").parseIntegerVector(),a,G);
119
checkRepresentable(StringParser("(2,-1,1)").parseIntegerVector(),a,G);
120
checkRepresentable(StringParser("(1,-1,1)").parseIntegerVector(),a,G);
121
checkRepresentable(StringParser("(-3,2,1)").parseIntegerVector(),a,G);
123
AsciiPrinter(Stdout).printVectorList(A);
124
AsciiPrinter(Stdout).printVectorList(L);
125
AsciiPrinter(Stdout).printVectorList(G);
128
const char *helpText()
130
return "Computes the Frobenius number ....\n";
134
static FrobeniusApplication theApplication;