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;
|