~ubuntu-branches/ubuntu/saucy/gfan/saucy-proposed

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;