1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#include "parser.h"
#include "printer.h"
#include "polynomial.h"
#include "division.h"
#include "buchberger.h"
#include "wallideal.h"
#include "lp.h"
#include "reversesearch.h"
#include "termorder.h"
#include "gfanapplication.h"
#include "wallideal.h"
class LeadingTermsApplication : public GFanApplication
{
SimpleOption optionMultipleSets;
public:
const char *helpText()
{
return "This program converts a list of polynomials to a list of their leading terms.\n";
}
LeadingTermsApplication():
optionMultipleSets("-m","Do the same thing for a list of polynomial sets. That is, output the set of sets of leading terms.\n")
{
registerOptions();
}
const char *name()
{
return "_leadingterms";
}
void p(PolynomialSet const &g)
{
PolynomialSet LT(g.getRing());
for(PolynomialSet::const_iterator i=g.begin();i!=g.end();i++)
{
LT.push_back(Polynomial(i->getMarked()));
}
AsciiPrinter(Stdout).printPolynomialSet(LT);
}
int main()
{
FileParser P(Stdin);
if(!optionMultipleSets.getValue())
{
PolynomialSet s=P.parsePolynomialSetWithRing();
AsciiPrinter(Stdout).printPolynomialRing(s.getRing());
AsciiPrinter(Stdout).printNewLine();
p(s);
}
else
{
PolynomialSetList l=P.parsePolynomialSetListWithRing();
assert(l.size()!=0);
AsciiPrinter(Stdout).printPolynomialRing(l.begin()->getRing());
AsciiPrinter(Stdout).printNewLine();
fprintf(Stdout,"{\n");
for(PolynomialSetList::const_iterator i=l.begin();i!=l.end();i++)
{
if(i!=l.begin())fprintf(Stdout,",\n");
p(*i);
}
fprintf(Stdout,"}\n");
}
return 0;
}
};
static LeadingTermsApplication theApplication;
|