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

« back to all changes in this revision

Viewing changes to app_edwinsconjecture.cpp

  • Committer: Package Import Robot
  • Author(s): Cédric Boutillier
  • Date: 2013-07-09 10:44:01 UTC
  • mfrom: (2.1.2 experimental)
  • Revision ID: package-import@ubuntu.com-20130709104401-5q66ozz5j5af0dak
Tags: 0.5+dfsg-3
* Upload to unstable.
* modify remove_failing_tests_on_32bits.patch to replace command of
  0009RenderStairCase test with an empty one instead of deleting it.
* remove lintian override about spelling error

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#include "parser.h"
2
 
#include "printer.h"
3
 
#include "polynomial.h"
4
 
#include "division.h"
5
 
#include "buchberger.h"
6
 
#include "wallideal.h"
7
 
#include "lp.h"
8
 
#include "reversesearch.h"
9
 
#include "termorder.h"
10
 
#include "ep_standard.h"
11
 
#include "ep_xfig.h"
12
 
#include "gfanapplication.h"
13
 
#include "wallideal.h"
14
 
 
15
 
class EdwinsConjectureApplication : public GFanApplication
16
 
{
17
 
  SimpleOption optionReadWeightVector;
18
 
public:
19
 
  bool includeInDefaultInstallation()
20
 
  {
21
 
    return false;
22
 
  }
23
 
  const char *helpText()
24
 
  {
25
 
    return "Program to help us test Edwin's conjecture\n";
26
 
  }
27
 
  EdwinsConjectureApplication():
28
 
    optionReadWeightVector("-w","undocumented")
29
 
  {
30
 
    registerOptions();
31
 
  }    
32
 
 
33
 
  char *name()
34
 
  {
35
 
    return "_edwinsconjecture";
36
 
  }
37
 
 
38
 
  bool inList(IntegerVector const &v,IntegerVectorList const &l)
39
 
  {
40
 
    for(IntegerVectorList::const_iterator i=l.begin();i!=l.end();i++)
41
 
      if(*i==v)return true;
42
 
    return false;
43
 
  }
44
 
  IntegerVector MatrixMultiplication(IntegerVectorList const &a, IntegerVector const &b)
45
 
  {
46
 
    IntegerVector sum(a.begin()->size());
47
 
    int j=0;
48
 
    for(IntegerVectorList::const_iterator i=a.begin();i!=a.end();i++)
49
 
      {
50
 
        sum+=(b[j])*(*i);
51
 
        j++;
52
 
      }
53
 
    return sum;
54
 
  }
55
 
 
56
 
  int main()
57
 
  {
58
 
    TermOrder *myOrder;
59
 
 
60
 
    IntegerVectorList A=FileParser(Stdin).parseIntegerVectorList();
61
 
 
62
 
    PolynomialSet g=FileParser(Stdin).parsePolynomialSetWithRing();
63
 
    
64
 
    IntegerVectorList gL=wallInequalities(g);
65
 
 
66
 
    IntegerVectorList circuits=FileParser(Stdin).parseIntegerVectorList();
67
 
    
68
 
    
69
 
    fprintf(Stderr,"Input matrix:\n");
70
 
    AsciiPrinter(Stderr).printVectorList(A);
71
 
    fprintf(Stderr,"A Groebner basis:\n");
72
 
    AsciiPrinter(Stderr).printPolynomialSet(g);
73
 
    fprintf(Stderr,"As vectors:\n");
74
 
    AsciiPrinter(Stderr).printVectorList(gL);
75
 
    fprintf(Stderr,"The circuits:\n");
76
 
    AsciiPrinter(Stderr).printVectorList(circuits);
77
 
 
78
 
    IntegerVectorList additional;
79
 
    for(IntegerVectorList::const_iterator i=gL.begin();i!=gL.end();i++)
80
 
      {
81
 
        if((!inList(*i,circuits))&&(!inList(-(*i),circuits)))
82
 
          {
83
 
            //      AsciiPrinter(Stdout).printVector(*i);
84
 
            IntegerVector degree=MatrixMultiplication(A,max(*i,*i-*i));
85
 
            // AsciiPrinter(Stdout).printVector(degree);
86
 
            additional.push_back(degree);
87
 
          }
88
 
      }
89
 
 
90
 
    for(IntegerVectorList::const_iterator i=additional.begin();i!=additional.end();i++)
91
 
      A.push_back(*i);
92
 
 
93
 
    fprintf(Stderr,"New matrix:\n");
94
 
    AsciiPrinter(Stderr).printVectorList(A);
95
 
    AsciiPrinter(Stdout).printVectorList(A);
96
 
    
97
 
 
98
 
    return 0;
99
 
  }
100
 
};
101
 
 
102
 
static EdwinsConjectureApplication theApplication;
103