File: latticeideal.cpp

package info (click to toggle)
gfan 0.3dfsg-1
  • links: PTS
  • area: main
  • in suites: lenny, squeeze
  • size: 2,012 kB
  • ctags: 1,935
  • sloc: cpp: 17,728; makefile: 251
file content (31 lines) | stat: -rw-r--r-- 798 bytes parent folder | download | duplicates (4)
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
#include "latticeideal.h"
#include "binomial.h"
#include "buchberger.h"
#include "printer.h"
#include "field_rationals.h"

IntegerVectorList latticeIdealRevLex(IntegerMatrix const &lattice)
{
  PolynomialRing theRing(Q,lattice.getHeight());
  IntegerMatrix L=lattice.transposed();
  PolynomialSet g(theRing);

  for(int i=0;i<L.getHeight();i++)
    g.push_back(integerVectorToBinomial(L[i],theRing));

  //  AsciiPrinter(Stderr).printPolynomialSet(g);


  for(int i=0;i<L.getWidth();i++)
    {
      ReverseLexicographicTermOrder t(i);
      buchberger(&g,t);
      for(PolynomialSet::iterator j=g.begin();j!=g.end();j++)
	j->saturate();
    }
  IntegerVectorList ret;
  for(PolynomialSet::const_iterator j=g.begin();j!=g.end();j++)
    ret.push_back(binomialToIntegerVector(*j));

  return ret;
}